|
Цикл while в циклах с параметром ⇐ ПредыдущаяСтр 2 из 2 Вычисление суммы чисел натурального ряда от 1 до 10
//вариант_1 const int N=10; int main () { int i=1, summa=0; //определение и инициализация переменных // i является одновременно и счетчиком цикла while (i<=N) { summa += i; //вычисление суммы i++; //получение нового числа } cout << summa<< endl; _getch(); return 0; }
//вариант_2 const int N=10; int main () { int i=1, summa=0; //определение и инициализация переменных //i является одновременно и счетчиком цикла while (i<=N) summa += i++; //вычисление суммы и получение нового числа cout << summa<< endl; _getch(); return 0; } Определение наибольшей степени целого числа 100, которую можно вычислить, пользуясь типом long #include <LIMITS.H> //LONG_MAX int main () {int p=0; //искомая степень float x=1.; //тип float позволяет иметь значение x до 3.4*10^38 while (x < LONG_MAX) // x< 2 147 483 648 { x*=100.; p++; } cout << setiosflags(ios::fixed)<< x/100. << setw(8) <<p-1 <<endl; getch(); return 0; } Подсчет количества цифр в числе N //найти количество и сумму цифр числа int main() { int N=123456; int sum=0, k=0; while (N>0) { sum += N%10; N /=10; k++; } cout << k << " " << sum << endl; //6 21 _getch(); return 0; } Вычисление значений функции на отрезке Составим программу для вычисления и вывода на печать таблицы значений функции у = а*х2 при а =17.7, х изменяется от x0 = 5.5 до xn = 35.0 с шагом h = 0.5 с помощью цикла while. int main () {double a=17.7, x0=5.5, xn=35.0, x, y, h=0.5; const double X_end = xn+h/2; //35.0+h/2, чтобы попала точка 35.0 x= x0; while (x < X_end) { y = a*x*x; printf ("x=%7.2lf y=%10.2lf\n", x, y); x+=h; _getch(); //для задержки результатов вывода на экране
}
return 0; } Вычисление на отрезке значений функции с условием и оформление результатов Составим программу для вычисления и вывода на печать таблицы значений функции с условием у(х), если х изменяется от x0 = 2.0 до xn = 5.0 с шагом h=0.5 с помощью цикла while. int main() { double x0=2.0, xn=5.0, x, y, h=0.5; const double X_end = xn+h/2; //5.0 +h/2, чтобы попала точка 5.0
////////////////////////////////////////////////////////////////////// printf("\nwhile:\n"); printf ("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n", 218,196,196,196,196,194,196,196,196,196,196,196,196,196,196,191); printf ("%c x %c y %c\n",179, 179, 179); x=x0; while ( x < X_end) { if (x<=3.5) y=cos(x); else y=sin(x); printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n", 195,196,196,196,196,197,196,196,196,196,196,196,196,196,196,180); printf("%c%4.2lf%c%9.5lf%c\n", 179, x, 179, y, 179); x+=h; } printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n", 192,196,196,196,196,193,196,196,196,196,196,196,196,196,196, 217); _getch(); return 0; }
Результаты работы программы:
while: ┌────┬─────────┐ │ x │ y │ ├────┼─────────┤ │2.00│ -0.41615│ ├────┼─────────┤ │2.50│ -0.80114│ ├────┼─────────┤ │3.00│ -0.98999│ ├────┼─────────┤ │3.50│ -0.93646│ ├────┼─────────┤ │4.00│ -0.75680│ ├────┼─────────┤ │4.50│ -0.97753│ ├────┼─────────┤ │5.00│ -0.95892│ └────┴─────────┘
Вычисление на отрезке значений функции с условием и оформление результатов в виде таблицы (в стиле С++) Составим программу для вычисления и вывода на печать таблицы значений функции с условием у(х), если х изменяется от x0=2.0 до xn=5.0 с шагом h=0.5 с помощью цикла while.
#include <iomanip> #include <math.h> int main() { double x0=2.0, xn=5.0, x, y, h=0.5; const double X_end = xn+h/2; //5.0+h/2, чтобы попала точка 5.0 char c,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10; c=char(196); c1=char(218); c2=char(194); c3=char(191); c4=char(179); c5=char(195); c6=char(197); c7=char(180); c8=char(192); c9=char(217); c10=char(193); cout<< c1 << c << c << c << c << c << c2 << c << c << c << c << c << c << c << c << c << c << c << c3 << '\n'; cout<<c4<<" x " << c4 << " y " << c4 << '\n'; int i=0; x=x0+i*0.5; while (x < X_end) { if (x<=3.5) { double r=cos(x); y=r*r; } //end_if else { y=sin(x)*log(x); } //end_else cout << setiosflags(ios::fixed) << setprecision(2); cout<< c5 << c << c << c << c << c << c6 << c << c << c << c << c << c << c << c << c << c << c << c7 << '\n'; cout<<c4<<setw(5) << x; cout <<setiosflags(ios::fixed)<<setprecision(6); cout<<c4<<setw(11) << y<<c4<<"\n"; i++; //эти два оператора можно заменить на x+=0.5; x=x0+i*0.5; } //end_while cout<< c8 << c << c << c << c << c << c10 << c << c << c << c << c << c << c << c << c << c << c << c9 << '\n'; _getch(); return 0; }
Результаты работы программы: ┌─────┬───────────┐ │ x │ y │ ├─────┼───────────┤ │ 2.00│ -0.416147│ ├─────┼───────────┤ │ 2.50│ -0.801144│ ├─────┼───────────┤ │ 3.00│ -0.989992│ ├─────┼───────────┤ │ 3.50│ -0.936457│ ├─────┼───────────┤ │ 4.00│ -0.756802│ ├─────┼───────────┤ │ 4.50│ -0.977530│ ├─────┼───────────┤ │ 5.00│ -0.958924│ └─────┴───────────┘ Цикл do-while в циклах с параметром Вычисление суммы чисел натурального ряда от 1 до 10
#define N 10 int main () {int i=1, summa=0; do summa += i++; while (i<=N); cout << summa << endl; _getch(); return 0; }
Калькулятор
int main() { double n1, n2, ans; char oper, ch; do { cout << "\nEnter first number, operator, second number: " <<endl; cin >> n1 >> oper >> n2; switch (oper) { case '+': ans = n1 + n2; break; case '-': ans = n1 - n2; break; case '*': ans = n1 * n2; break; case '/': ans = n1 / n2; break; default: ans = 0; } cout << "Answer = " << ans; cout << "\nDo another (enter 'y' or 'n')? "; cin >> ch; } while(ch!= 'n'); _getch(); return 0; }
Проверка входных данных В данном примере оператор цикла требует повторного ввода данных до тех пор, пока не будут введены значения из диапазона от 1 до 20: int r; do { cout << "input 1 <= r <=20" << endl; cin >> r; } while (r <1 || r>20);
В следующем примере цикл проверяет, чтобы вводимые данные были положительными и отличны от 13: int r; do {cout << "input r >0, r!=13: " <<endl; cin >> r;} while (r <0 || r==13);
В этом примере с помощью цикла while реализована проверка до 10 попыток ввода значения 25: int i=1, rez=0; while (i++ <=10 && rez!=25) {cout << "input rez=25"<<endl; cin >> rez;}
Напомним ( см. метод. указания лаб.раб.1 ), что контроль правильности ввода значения некоторого типа можно реализовать, например, таким образом: //проверка ввода значения из диапазона значений типа unsigned char unsigned int uchar; //более широкий тип unsigned int do { cout << "input unsigned char:" << endl; cin >> uchar; } while(uchar < 0 || uchar > UCHAR_MAX);
//проверка ввода значения из диапазона значений типа int float f; //более широкий тип float int i; do { cout << "input int:" << endl; cin >> f; } while(f < INT_MIN || f > INT_MAX); //диапазон значений типа int i= f; cout <<"ok " << i << endl; Вычисление значений функции на отрезке Составим программу для вычисления и вывода на печать таблицы значений функции у = а*х2 при а = 17.7, х изменяется от x0 = 25.5 до xn = 35.0 с шагом h = 0.5 с помощью цикла do while: int main () { double a=17.7, x0=25.0, xn=35.0, x, y, h=0.5; const double X_end = xn+h/2; //35.0 +h/2, чтобы попала точка 35.0 x=x0; do { y = a*x*x; printf ("x=%7.2lf y=%10.2lf\n", x, y); _getch(); //вывод результатов «с приостановкой» x+=h; } while (x < X_end); return 0; } Вычисление на отрезке значений функции с условием и оформление результатов Составим программу для вычисления и вывода на печать таблицы значений функции с условием у(х), если х изменяется от x0 = 2.0 до xn = 5.0 с шагом h=0.5 с помощью цикла do while:
int main() { double x0=2.0, xn=5.0, x, y, h=0.5; const double X_end = xn+h/2; //5.0 +h/2, чтобы попала точка 5.0
////////////////////////////////////////////////////////////////////// printf("\ndo-while:\n"); printf ("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n", 218,196,196,196,196,194,196,196,196,196,196,196,196,196,196,191); printf ("%c x %c y %c\n",179,179,179); x=x0; do { if (x<=3.5) y=cos(x); else y=sin(x); printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n", 195,196,196,196,196,197,196,196,196,196,196,196,196,196,196,180); printf("%c%4.2lf%c%9.5lf%c\n", 179, x, 179, y, 179); x+=h; } while (x< X_end); printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n", 192,196,196,196,196,193,196,196,196,196,196,196,196,196,196,217); _getch(); return 0; } Цикл for в циклах с параметром Вычисление суммы чисел натурального ряда от 1 до 10 //вариант_1 const int N =10; int main () { int summa=0; for(int i=1; i <=N; i++) summa += i; cout << summa << endl;
_getch(); return 0; } //вариант_2 const int N=10; int main () { int summa=0; for(int i=1; i <=N;) summa += i++; cout << summa << endl; _getch(); return 0; }
//вариант_3 const int N=10; int main () { for(int i=1, summa = 0; i <=N; cout << summa << endl) summa += i++; // cout << summa << endl; error!! Undeclared “summa” _getch(); return 0; } Вывод на экран кодов символов //цифры char s; for (s ='0'; s <= '9'; s++) cout << s << " " << static_cast <int> (s) << endl;
//латинские буквы for (s ='A'; s <= 'Z'; s++) cout << s << " " << static_cast <int> (s) << endl; for (s ='a'; s <= 'z'; s++) cout << s << " " << static_cast <int> (s) << endl;
Приостановка выполнения программы на n секунд const int DELAY =500000000; int main (){ long i; int n; cout << "sec=?\n"; cin >> n; For (; n; n--) for (i=0; i<DELAY; i++); cout << n << endl; _getch(); return 0; }
Получение натуральных делителей числа N int main () { unsigned N; cout << " \n input N:"; cin >> N; for (unsigned i = 2; i <= N / 2; i++) // перебор значений делителей if (!(N % i)) cout << i << " "; //если i есть делитель числа N cout << endl; _getch(); return 0; }
![]() ![]() Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем... ![]() Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все... ![]() Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор... ![]() Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|