Вывод: Научился программировать циклические алгоритмы с использованием for, while, do while.

Факультет информационных технологий и робототехники

 

Кафедра программного обеспечения вычислительной техники

и автоматизированных систем

 

Отчет по лабораторной работе № 4

 

по дисциплине: ”Основы алгоритмизации и программирования”

 

на тему: ”Циклические алгоритмы”

Вариант 2

 

Выполнил: студент группы 10702214 Туан Ань

 

Приняла: ст.пр. Пармон С.И

 

Минск 2014

 


Лабораторная работа № 4. Циклические алгоритмы.

 

Цель работы: Научиться программировать циклические алгоритмы. Освоить операторы перехода goto, break, continue, return.

Задание 1. Цикл for

 

Вычислить сумму целых чисел:
от 1000 до 1500 с шагом 7 (1000 + 1007 + 1014 + …)

Код программы:

 

#include <locale>

#include <iostream>

using namespace std;

void main()

{

setlocale(LC_CTYPE, "Russian");

cout << "Задание 1. \nВычислить сумму целых чисел: \nот 1000 до 1500 с шагом 7 (1000 + 1007 + 1014 + ...)\n";

int sum(0), a;

for (a=1000; a<=1500; a+=7) {

sum+=a;

}

cout << "Сумма чисел равна " << sum << endl;

system("pause");

}

Скриншоты результатов:

 

 

Задание 2.

Вычислить сумму ряда

Сравнить полученный результат с соответствующим значением функции из математической библиотеки.
Протестировать для значений
1.7
2.9

Код программы:

#include <locale>

#include <iostream>

#include <math.h>

using namespace std;

void main()

{

setlocale(LC_CTYPE, "Russian");

double x, a, s(1), b(1);

cout << "Введите x: ";

cin >> x;

int N;

cout << "Введите количество итераций N: ";

cin >> N;

a=exp(-x);

for(int n(0); n<=N; n++) {

b*=(-x)/(n+1);

s+=b;

}

cout << "a = " << a << ", s = " << s << endl;

system("pause");

}

Скриншоты результатов:

 

Задание 3. Циклы for и while (выполнить в двух вариантах)

Вычислить и вывести на экран в виде таблицы значения функции F от x1 до x2 с шагом dx.

где a, b и c - действительные числа.

Протестировать работу программы для следующих значений:

x1 x2 dx a b c
-8.7 -1.5 0.9 1.4 3.2
3.7 5.5 0.2 2.2 4.8 6.9

Результат получить в виде:

Для ввода/вывода используйте библиотеку stdio.

Код программы:

 

С использованием for:

 

 

#include <locale>

#include <stdio.h>

using namespace std;

void main()

{

setlocale(LC_CTYPE, "Russian");

float f,x1,x2,dx,a,b,c;

printf("Введите число a: "); scanf_s("%f",&a);

printf("Введите число b: "); scanf_s("%f",&b);

printf("Введите число c: "); scanf_s("%f",&c);

printf("Введите начальное число x1: "); scanf_s("%f",&x1);

printf("Введите конечное число x2: "); scanf_s("%f",&x2);

printf("Введите шаг dx: "); scanf_s("%f",&dx);

printf("-------------------");

printf("\n| x | F |");

printf("\n-------------------");

for(float x=x1; x<=x2; x+=dx) {

if ((x+5)<0 && c==0) f=1/(a*x)-b;

else if ((x+5)>0 && c!=0) f=(x-a)/x;

else f=10*x/(c-4);

printf("\n| %5.2f | %5.2f |",x,f); }

printf("\n-------------------\n");

system("pause");

}

 

Скриншоты результатов

 

Задание 4. do - while

Организовать цикл, который принимает целые числа с клавиатуры и подсчитывает к-во отрицательных чисел. Окончание цикла - ввод числа > 100.

Код программы:

 

#include <locale>

#include <iostream>

using namespace std;

void main()

{

setlocale(LC_CTYPE, "Russian");

int x, k(0);

cout << "Введите целые числа:\n";

do {

cin >> x;

if (x<0) k++;

}

while (x<=100);

cout << "Количество отрицательных чисел - " << k << endl;

system("pause");

}

 

Скриншоты результатов

 

Контрольные вопросы

 

1. Сколько раз будет выведена *:

for (int i = 0; i <= 10; i++) cout << "*";

Ответ: 11 раз.

2. Чему равно значение i:

int i = 7; while (i++ <= 10);

Ответ: 12.

3. Запишите цикл, который суммирует первые 50 натуральных чисел, которые не делятся на 8 :

а) используя for:

for с тремя секциями:

int i,sum(0);

for(i=1; i<=50; i++) {

if (i%8) {

sum +=i;

}

}

for без секций:

int i(0),sum(0);

for(;;) {

i++;

if(i%8) sum+=i;

if(i==50) break;

}

 

 

for без тела:

int sum(0);

for(int i = 0; i % 8 != 0 ? sum+=i : NULL, i <= 50 ; i++);

 

b) используя while:

int i(0),sum(0);

while (i!=50) {

i++;

if(i%8) sum+=i;

}

c) используя do while:

int i(0),sum(0);

do {

i++;

if(i%8) sum+=i;

} while (i!=50);

Вывод: Научился программировать циклические алгоритмы с использованием for, while, do while.