Факультет информационных технологий и робототехники
Кафедра программного обеспечения вычислительной техники
и автоматизированных систем
Отчет по лабораторной работе № 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.