Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб_2_метод_указания.doc
Скачиваний:
2
Добавлен:
09.11.2018
Размер:
412.67 Кб
Скачать

Цикл 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;

}