Урок 3. C++ циклы

Дата изменения: 4 февраля 2020
На занятии объясняется тема «язык С++: циклы»

C++ циклы

Цикл FOR в С++

Синтаксис:

for (переменная=начальное значение; условие; приращение значения)
  {
    оператор1; 
    оператор2;
  }

Пример:

for (int  i=1;  i<=10;  i++)
{
  cout << i << endl;
}
Чтобы избежать некорректного использования переменной цикла i за его пределами рекомендуется объявлять ее в заголовке цикла. Данная переменная будет локальной, то есть «видимой» только внутри данного цикла.
Лабораторная работа:
Найти максимум из последовательности n вводимых целых чисел.

Выполнение:

  1. Создайте файл исходного кода main.cpp, заголовочный файл FindMax.h и файл для реализации функций FindMax.cpp.
  2. В коде main.cpp и FindMax.cpp подключите необходимые библиотеки и заголовочный файл:
  3. #include <iostream>
    #include <sstream> //тестирование операций с потоками
    #include "FindMax.h"
    #include <cstdlib>
     
    using namespace std;
  4. В файле main.cpp добавьте функцию для работы с кириллицей:
  5. ...
    int main()
    {
    	setlocale(LC_ALL, "Russian");
    ...
  6. Перейдите в файл main.cpp и в функции main() объявите переменные. Затем запросите там количество элементов массива:
  7. ...
    int n;
    cout<<"Введите n"<<endl;
    cin>>n;
    ...
  8. Перейдите в заголовочный файл и объявите функцию для поиска максимального числа с параметром — количество элементов массива:
  9. void FindMax (int n);
  10. Реализацию функции будем осуществлять в файле FindMax.cpp. Добавьте код поиска максимального элемента из вводимых чисел:
  11. ...
    void FindMax (int n){
    int max, x;
    cout<<"Введите "<<n<<" элементов"<<endl;
    cin>>max;
    for (int i=1;i<n; ++i) {
      cin>>x;
      if (x>max)
        max=x;
     }
    cout<<"Maximum = "<<max<<endl;
    }
    ...
  12. В файле main.cpp добавьте код вызова функции:
  13. ...
     FindMax(n);
    ...
Лабораторная работа:

Создать проект. Реализацию всех требуемых функций размещать в дополнительном файле (.cpp), а в заголовочном файле — их описание. Реализовать задание в виде функции:

Даны два целых числа A и B (A < B). Вывести в порядке убывания все чётные числа, расположенные между A и B (не включая числа A и B), а также количество N этих чисел.

Указания:

  • тип возвращаемого значения функции — void;
  • использовать операцию -= для счётчика цикла;
  • для инициализации счётчика цикла использовать тернарную условную операцию.
  • Выполнение:

    1. Создайте файл исходного кода main.cpp, заголовочный файл cycle.h и файл для реализации функций cycle.cpp.
    2. В коде main.cpp и cycle.h подключите необходимые библиотеки и заголовочный файл:
    3. #include <iostream>
      #include <sstream> //тестирование операций с потоками
      #include "cycle.h"
      #include <cstdlib>
       
      using namespace std;
    4. В файле main.cpp добавьте функцию для работы с кириллицей:
    5. ...
      int main()
      {
      	setlocale(LC_ALL, "Russian");
      ...
    6. Объявите и запросите две целочисленных переменных:
    7. ...
      int a,b;
      cout << "введите а и b, a < b" << endl;
      cin >>  a >> b;
      ...
    8. Описание функции: перейдите в заголовочный файл и объявите функцию с двумя целочисленными параметрами, возвращающую пустое значение. Назовите ее notOdd:
    9. void notOdd(int a, int b);
    10. Установите курсор на описании и ждите, пока не появится символ лампочки слева. Щелкните по лампочке и выберите пункт «Создать определение в cycle.cpp».
    11. После чего перейдите в код реализации функции и добавьте код, предназначенный для обмена значений переменных a и b в случае, если a > b:
    12. ...
      void notOdd(int a, int b)
      {
      	int k=0;
      	a>b ? swap(a, b)  : a=a ;
       
      ...

      Тернарная операция в C++:

      "условие" ? "выражение 1" : "выражение 2";

      Если условие истинно, то выполняется выражение 1, иначе (условие ложно) выполняется выражение 2.

      Функция swap():
      Функция предназначена для обмена значений своих аргументов.

    13. Далее работаем с циклом. Поскольку в указании к заданию, сказано использовать операцию -= для счётчика цикла, то счетчик должен уменьшаться от большего значения (b) к меньшему (a):
    14. ...
      for (int i = b; i >= a; i -= 1) {
      		if (i % 2 == 0) {
      			cout << i << " ";
      			k++;
      		}
      	}
    15. Поскольку по условию задания функция ничего не возвращает (void), то вывод значения в консоль необходимо реализовать в самой функции:
    16. ...
      cout << "количество четных =" << k << endl;
    17. Переключитесь на вкладку с файлом main.cpp и добавьте в код вызов функции:
    18. ...
      notOdd(a, b);
    19. Запустите программу.
    20. main.cpp cycle.cpp
      #include <iostream>
      #include <sstream> 
      #include "cycle.h"
       
      using namespace std;
       
      int main()
      {
        setlocale(LC_ALL, "Russian");
        int a,b;
        cout << "введите а и b, a<b" << endl;
        cin >>  a >> b;
        notOdd(a, b);
        system("pause");
        return 0;
      }
      #include "cycle.h"
      #include <iostream>
      #include <sstream> 
       
      using namespace std;
       
      void notOdd(int a, int b)
      {
        int k=0;
        a>b ? swap(a, b)  : a=a ;
        for (int i = b; i >= a; i -= 1) {
      	if (i % 2 == 0) {
      		cout << i << " ";
      	 	k++;
      	}
        }
        cout << "количество четных =" << k << endl;
      }
    Задание 1:
    Дано целое число. Найти количество его цифр и их сумму.

    Указание:

    Сигнатура функции должна выглядеть следующим образом:

    void digitsCountAndSum(int n);

    Цикл С++ While

    Цикл с предусловием. Пока условие истинно, выполняются операторы тела цикла.
    Синтаксис:

    while (условие) 
    {
    	оператор1;
    	оператор2;}

    Для выхода из цикла используется оператор break;

    Задание 2:
    Дана последовательность целых чисел (вводятся с клавиатуры), последний элемент которой — число 0. Найти сумму всех положительных элементов этой последовательности и количество её отрицательных элементов. Организовать функцию для выполнения задания.

    Указание:

    В подобных задачах следует использовать идиому «бесконечный цикл с выходом из середины». В коде программы это означает:

    while(1>0)
    	{
    		if (...) 
    			break;
    	}
    Задание 3:
    Дано вещественное число X и целое число N (> 0). Найти значение выражения:

    1 + X + X2/(2!) + … + XN/N!

    Организовать функцию для выполнения задания.

    Указание:

    Не использовать стандартную функцию возведения в степень, организовать «накопление» значений степени и факториала.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    *
    *

    Вставить формулу как
    Блок
    Строка
    Дополнительные настройки
    Цвет формулы
    Цвет текста
    #333333
    Используйте LaTeX для набора формулы
    Предпросмотр
    \({}\)
    Формула не набрана
    Вставить