шаблоны сайт визитка joomla
Скачать шаблоны Joomla 3.5 бесплатно
Вы находитесь здесь:Главная»Учебные материалы»C ++»Циклы С++

Циклы С++

Бывают случаи, когда программе необходимо выполнять некоторый алгоритм неоднократно - пока не выполнится какое-то условие или число повторений циклов не достигнет значения, указанного пользователем. В C++ также существуют три типа циклов: цикл с параметром (счётчиком), цикл с предусловием и цикл с постусловием. Подробнее о самих видах можно почитать здесь, а теперь - перейдем сразу к синтаксису и программированию циклов непосредственно на языке C++.

 

for - цикл со счётчиком (параметром)

 Этот цикл используется, когда заранее известно количество итераций цикла - т. е. количество его повторений. Для написания цикла for чаще всего используют следующий синтаксис:

for (действие _1;  условие;  действие_2)  { тело цикла; }

Здесь действие_1  - это действие, в котором переменной-счетчику присваивается начальное значение. Условие - указываем то условие, при котором продолжается цикл. Действие_2 - обычно, здесь увеличивают счетчик в каждой итерации. Например, фрагмент программного кода, в котором нужно посчитать сумму чисел от 1 до 100 будет выглядеть так: 

int i, s=0;
for (i=1;   i<=100;   i++)  { s+=i }


 

while - цикл с предусловием 

Если мы не можем сказать, сколько итераций (повторений) должен пройти цикл, то используем либо цикл while, либо - do  ...  while. Синтаксис цикла while на C++ выглядит так:

while (Условие) { Тело цикла; }

То есть, пока условие будет верным - выполнять тело цикла.  Условие ВСЕГДА указывается в скобках! Тот же самый пример с суммой чисел от 1 до 100 будет выглядеть: 
int i, s=0;

while (i<=100;)  { s+=i;   i++}


 

 do ... while - цикл с постусловием

Этот вид цикла очень похож на предыдущий. Их различие состоит в том, что при выполнении цикла do while один проход цикла будет исполнен в независимости от условия.  Синтаксис:  

do  { Тело цикла; } while (Условие)

Рассмотрим все тот же пример:
int i, s=0;

do { s+=i;   i++}  while (i<100;)  

Если по какой-то причине нужнопрервать цикл, используют ключевое слово break .


 

Задачи и примеры программ на циклы в C++

Задача 1.  Составьте программу, выводящую на экран квадраты чисел от 10 до 20 включительно.

#include <iostream>
using namespace std;

int main() 

{
   for (int i=10; i<=20; i++)
        cout<<i*i<<" ";
   cout<<endl;
   return 0;
}

 

Задача 2.  Написать программу, вычисляющую среднее арифметическое 5 чисел, введенных с клавиатуры.

#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;

int main()

   {setlocale(LC_ALL,"Rus");
   double n, summ=0, col, chislo, sra;
   for (n=1; n<=5; n++)
   {
       cin>>chislo;
       summ+=chislo;
    }
   sra=summ/5;
   cout<<endl<<sra<<endl;
   system("pause");
   return 0;
}


Задача 3. Составить программу, которая в зависимости от возраста пользователя определяла сколько лет ему осталось до выхода на пенсию - при условии, что пенсионный возраст наступает в 56 лет

#include "stdafx.h"
#include <iostream>
using namespace std;
int main ()
{
  int x, y, i, pen; //описаваем нужные переменные
  x=0; //стартовое значение переменной
  y=56; //определяем пенсионный возраст
  do
  {
      cout<<"How old are you? \n";
     cin>>i;
     pen=y-i;
     cout<<"Remained until retirement (years) = "<<pen<<endl;
     x++; //изменение параметра цикла (аналогично x=x+1)
  }
  while (x<=-1); //условие ложно, но цикл выполняется 1 раз
  system ("pause");
  return 0;
}


Задача 4.  Написать программу вычисления факториала, используя цикл

#include <iostream>
using namespace std;

long double fact(int N)
{
   if (N < 0) // если пользователь ввел отрицательное число
   return 0; // возвращаем ноль
   if (N == 0) // если пользователь ввел ноль,
   return 1; // возвращаем факториал от нуля - единицу
   long double result = 1;
   for (int i = 1; i <= N; i++)
        {
          result *= i;
          }

   return result;
}

int main()

{
   int N;
   setlocale(0, ""); // Включаем кириллицу
   cout << "Введите число для вычисления факториала: ";
   cin >> N;
   cout << "Факториал для числа " << N << " = " << fact(N) << endl << endl; // fact(N) - функция для вычисления факториала.
   system("pause");
   return 0;
}


Задача 5.  Написать программу для перевода данного натурального числа в р-ную систему счисления (к примеру - в двоичную, восьмиричную, шестнадцатиричную)

#include<stdio.h>

void main()
{
   int ss,k1=10,k2=11,t,num1,i;
   double num;
   char ms[20]={' ',' ', ' ',' ',' ', ' ',' ',' ', ' ',' ',' ', ' ',};
   char znak='+';
   cout<<"vvedite isxodnoe chislo\n";
   cin>>num;
   if (num<0) {znak='-';num*=-1;}
   cout<<"vvedite novoe osnovanie\n";
   cin>>ss;
   cout<<"vvedite tochnost\n";
   cin>>t;
   num1=num;         num=num-num1;
 
 while(num1>=ss)

    {
           i=num1%ss;
           num1/=ss;
           ms[k1--]=i>9?i-10+'a':i+'0';
    }

    ms[k1--]=num1>9?i-10+'a':num1+'0';

    ms[k1]=znak;          ms[k2++]='.';

    while(num!=0 && k2-11<=t)

   {
           num*=ss;     i=num;      num-=i;
           ms[k2++]=i>9?i-10+'a':i+'0';
    }
   cout<<"\n";
   for (i=k1;i<k2;i++)           {cout<<ms[i];}
}


Задача 6. Реализуйте программу, вычисляющую наибольший общий делитель (НОД) двух целых чисел (алгоритм Евклида).

  #include "stdafx.h"
  #include <iostream>
  using namespace std;
  int main()
  {setlocale(LC_ALL,"Rus");
  int y, x;
  cin>>x>>y;
  while (x!=y)
      {
       if (x>y)  {  x=x-y;  }
      else   { y=y-x; }
       }
  cout<<x;
  system("pause");
  return 0;
}


Задача 7. Написать программу, которая находит среди неограниченной последовательности положительных чисел, введенных с клавиатуры, максимальное число.

  #include "stdafx.h"
  #include <iostream>
  using namespace std;

  int main()

  {setlocale(LC_ALL,"Rus");
  int n, t=0, max=0;
  cout<<" Вводите числа (введите 0 для окончания ввода) ";
  do
       {
        cin>>n;
        if (n>max)   {  max=n;  }
         t++; // Не обязательная часть, служит для проверки  первого введенного числа
        }
  while (n!=0);
       if (t>1)
           cout<<" максимальное число равно "<<max<<endl;
       else cout<<" Вы не ввели ни одного числа "<<endl;
  system("pause");
  return 0;
}


Задача 8. Написать программу, которая выводит значения функции   у = -2,4x^2+5x-3   в диапазоне от -2 до 2.

  #include "stdafx.h"
  #include <iostream>
  using namespace std;
  int main()
{  setlocale(LC_ALL,"Rus");
   double i, x, y;
   for (x=-2; x<=2; x=x+0.5, cout<<" y = "<<y<<endl<<endl)
        {
          y=-2.4*(x*x)+(5*x)-3;
         cout<<" x = "<<x<<endl;
         }
   system("pause");
   return 0;
}

Другие материалы в этой категории: « Указатели в С++

Новости о нас

Расписание занятий для каждой сформированной группы по робототехнике на 2017-2018 учебный год. Подробнее
Учебный год начался, и у нас очередная радостная новость для вас, педагоги! В этом году... Подробнее
Наши учащиеся выступили на августовской конференции педагогов! Подробнее
Хочешь учиться в Толтеке по выгодной цене? Приводи друзей и получай большие скидки!... Подробнее
19 августа в ТРЦ Сити Молл с блеском прошел РобоКвест! Героями квеста стали более сотни... Подробнее

Наши партнеры

 TZOyoOCZ8y0 logotip novy SF BashGU  utv logo  CityMoll  VolnoeDelo