Lab4
.docxУчреждение образования «Гомельский государственный технический университет им. П.О. Сухого»
Кафедра «Промышленная электроника»
Лабораторная работа 2
«Программирование циклических алгоритмов»
Вариант 14
Выполнил: студент 1 курса
Группы ПЭ-11
Левшиц П.С.
Проверил преподаватель
Литвинов Д.А.
Гомель 2018
Цель работы: Изучить способы задания циклических алгоритмов с пред и пост условием. Научиться составлять, тестировать и отлаживать, циклические алгоритмы.
Контрольное задание 1
С помощью циклических алгоритмов реализовать следующие задания:
-
Вывести на экран квадраты чисел от 1 до 10. Реализовать с помощью операторов цикла – while с предусловием;do ..while с пост условием и цикла с параметром for.
-
Вывести на экран квадраты чисел от 10 до 1 (по убыванию). Реализовать с помощью операторов цикла – while с предусловием; do ..while с пост условием и цикла с параметром for.
-
Для четных вариантов. Вывести на экран все четные числа в диапазоне от -20 до 20.
-
Для нечетных вариантов. Вывести на экран все нечетные числа в диапазоне от -20 до 20.
Количество баллов за выполнение – 1. В отчет привести листинг программы и результаты тестирования.
Listing of program:
#include <stdio.h>
#include <windows.h>
#include <math.h>
int main(void)
{
int i;
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
//1
i = 1; // подготовка к выполнению цикла
while (i<= 10) // условие повторения цикла
{
printf("%3.0f " ,pow(i,2)); // телоцикла
i++; // модификация параметра цикла
}
printf("\n");
i = 1;
do {
printf("%3.0f " ,pow(i,2)); // телоцикла
i++;
} while (i<= 10); // условие повторения цикла
printf("\n");
for (i = 1; i <= 10; i++) // задаем начальное значение 1, конечное 1000 и задаем шаг цикла - 1.
{
printf("%3.0f " ,pow(i,2));
}
printf("\n");
//2
i = 10;
while (i>= 1) // условие повторения цикла
{
printf("%3.0f " ,pow(i,2)); // телоцикла
i=i-1; // модификация параметра цикла
}
printf("\n");
i = 10;
do {
printf("%3.0f " ,pow(i,2)); // телоцикла
i=i-1;
} while (i>= 1); // условие повторения цикла
printf("\n");
for (i = 10; i >= 1; i=i-1) // задаем начальное значение 1, конечное 1000 и задаем шаг цикла - 1.
{
printf("%3.0f " ,pow(i,2));
}
printf("\n");
//3
i = -20; // подготовка к выполнению цикла
while (i<= 20) // условие повторения цикла
{
printf("%3.0f " ,pow(i,2)); // телоцикла
i=i+2; // модификация параметра цикла
}
printf("\n");
i = -20;
do {
printf("%3.0f " ,pow(i,2)); // телоцикла
i=i+2;
} while (i<= 20); // условие повторения цикла
printf("\n");
for (i = -20; i <= 20; i=i+2 ) // задаем начальное значение 1, конечное 1000 и задаем шаг цикла - 1.
{
printf("%3.0f " ,pow(i,2));
}
printf("\n");
system("pause");
return(0);
}
Выполнение:
Контрольное задание 2
В соответствии с вариантом (номер по журналу), разработать программу для вычисления значений переменных в соответствии с условием, приведенном в таблице 4.1. Выполнить проверку исходных данных на корректность. Ввод проводить пока не будут введены допустимые значения.
Тип исходных данных выбрать самостоятельно. Количество баллов за выполнение – 1. В отчет привести листинг программы и результаты тестирования.
Listing
#include <stdio.h>
#include <windows.h>
#include <math.h>
int main(void) {
float r,h;
const float p=3.14159265358979323846;
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
do {
puts("Введите r:");
scanf("%f",&r);
}
while (r<=0);
do {
puts("Введите h:");
scanf("%f",&h);
}
while (h<=0);
printf("S основания конуса: %f \n",p*pow(r,2));
printf("V конуса: %f \n",(1.0/3)*p*pow(r,2)*h);
system("pause");
}
Run:
Контрольное задание 3
В соответствии с вариантом (номер по журналу), разработать программу для вычисления значенийкусочно – непрерывной функции y(x) на интервале от xнач доxкон с шагом ∆x. Функцияпредставленав таблице 4.2. Результаты расчетов представить в виде таблицы со следующими колонками:
-
Порядковый номер строки;
-
значения аргумента функции x;
-
вычисленного значения функции y;
-
номер формулы, по которой производилось вычисление функции (1, 2 или 3).
Выполнить решение задачи двумя способами, с помощью циклов while и for.
Исходные данные для отладки программы выбрать самостоятельно, так чтобы перекрывались все интервалы функции y(x).Количество баллов за выполнение – 2. В отчете привести таблицу описания переменных, блок – схему алгоритма, листинг программы и результаты тестирования.
Listing
#include <stdio.h>
#include <windows.h>
#include <math.h>
int main(void) {
float x1,x2,x,z,y;
int n;
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
printf("Введите промежуток [x1 x2 z] где z шаг: ");
scanf("%f %f %f",&x1, &x2, &z);
for (x=x1; x<=x2; x=x+z) {
if (x<=-1 || x==0) {
y=fabs(pow(x,3)+4);
n=1;
}
else
if (x >= 8) {
y=pow(x/2,0.5);
n=2;
}
else {
y=pow(x,3);
n=3;
}
printf("x:y %4.2f:%4.2f \n",x,y);
}
system("pause");
}
Run:
Блок схема:
Контрольное задание 4
В соответствии с вариантом (номер по журналу), разработать программу для реализации заданного алгоритма.Количество баллов за выполнение – 3. В отчет привести листинг программы и результаты тестирования.
-
Во всех задачах последовательность вводится поэлементно, пока не будет введен 0.
Вводится последовательность целых чисел, 0 – конец последовательности. Определить сумму, среднее значение и количество чисел в последовательности.
Listing of program:
#include <stdio.h>
#include <windows.h>
#include <math.h>
int main(void) {
int sum, a, n, i;
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
n=0;
printf("Введите числа \n");
do {
scanf("%d",&a);
sum=sum+a;
n++;
}
while (a!=0);
printf("Сумма= %d Среднее= %1f Кол-во= %d \n",sum, 1.0*sum/n, n);
system("pause");
}
Run:
Контрольное задание 5
Найти все числа от 2 и не превосходящие n последние цифры квадратов которых равны числу возведённому в квадрат
Listing:
#include "pch.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
setlocale(0,"");
int n, b, d;
bool e = false;
int c, i;
cout << "Введите число > 2 : " << endl; cin >> n;
for (i = 2; i < n; i++)
{
c = i;
d = c * c;
while (c != 0)
{
if (d % 10 != c % 10)
{
e = true;
break;
}
c /= 10;
d /= 10;
}
if (e == false)cout << "yes - " << i * i << "=" << i << "^2" << endl;
e = false;
}
}
Run:
Вывод: Изучил способы задания циклических алгоритмов с пред и пост условием. Научился составлять, тестировать и отлаживать, циклические алгоритмы.