Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Цикл while в циклах с параметром





Вычисление суммы чисел натурального ряда от 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);
//диапазон значений типа unsigned char

 

//проверка ввода значения из диапазона значений типа 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;

 

//латинские буквы
char s;

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 << "\ninput N:"; cin >> N;

for (unsigned i = 2; i <= N / 2; i++) // перебор значений делителей

if (!(N % i))cout << i << " "; //если i есть делитель числа N

cout << endl;

_getch();

return 0;

}

 









Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2018 zdamsam.ru Размещенные материалы защищены законодательством РФ.