Файл: Отчет по лабораторной работе 1 по дисциплине Объектноориентированное программирование Тема Базовые конструкции языка С. Управляющие конструкции.docx

ВУЗ: Не указан

Категория: Отчет по практике

Дисциплина: Не указана

Добавлен: 09.01.2024

Просмотров: 29

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ

РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

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


(факультет)

Кафедра Систем автоматизированного проектирования и информационных систем



ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ № 1




по дисциплине Объектно-ориентированное программирование



Тема «Базовые конструкции языка С++. Управляющие конструкции»

Выполнили студенты группы ИСТ-2023 Д.С. Самойленко

Подпись, дата Инициалы, фамилия

Е.С. Гладченко

Подпись, дата Инициалы, фамилия

Принял Б.Н. Тишуков


Подпись, дата Инициалы, фамилия


Защищена ___________________ Оценка_____________________________

дата
2023

Лабораторная работа № 1

«Базовые конструкции языка С++. Управляющие конструкции»

1. Цель работы

Изучение базовых конструкций языка С++ и управляющих конструкций и применение их на практике.

2. Задание на лабораторную работу

Вариант 1

Задание 1

Найти значение алгебраического выражения, соответствующего варианту

задания. Вывести результаты на печать. Все результаты выводить в развернутом

виде (например: «Сумма чисел А и B равна 3.7854»).

Значения вводимых величин должны иметь не менее четырех значащих цифр

и задаются студентом самостоятельно.


Задание 2

Составить программу вычисления функции F(x), разложенной в ряд,

сходящийся в заданной области.

Вычисления проводить до тех пор, пока модуль разности между

последующим и предыдущим членами ряда не будет меньше или равен ε.

Значение ε задается константой и для всех вариантов составляет 0,001.

Решить задачу для различных значений х. При решении задач массивы не

использовать. Специальные функции для возведения в степень не использовать.


Задание 3

В задании всего 2 варианта: вариант 1 выполняют те, у кого основной


вариант нечетный, вариант 2 выполняют те, у кого основной вариант четный.

Каждый вариант содержит 15 задач, содержащих те или иные ошибки

(логические, ошибки синтаксиса и т.п.). Задача состоит в следующем: используя

средства отладчика среды, обнаружить все ошибки и сделать программу

работоспособной (т.е. выполняющей то, что от нее требуется).

Для отчета по данному заданию необходимо:

- показать работающие программы;

- код программ должен быть структурированным;

- к каждой программе необходимо составить список обнаруженных ошибок

(согласно сообщениям отладчика), а также пояснения того, как вы исправляли эти ошибки.

Задание 4


3. Ход выполнения

1. Задание 1

Для выполнения этого задания создаем функцию task_1 в которой будут происходить вычисления. В функции main запрашиваем у пользователя переменные “a” и “b” типа float поскольку получаемый результат может быть нецелочисленный. После чего передаем эти две переменные в функцию task_1. Как было сказано ранее в функции производятся все вычисления разбитые на несколько действий, после чего возвращается общий результат вычислений. Далее, мы выводим этот результат в функции main.



Рис.1 – Задание 1, часть кода в функции main



Рис.2 – Задание 1, функция task_1
2. Задание 2

Для выполнения второго задания также создаем отдельную функцию task_2. В функции main запрашиваем “x”. В функции task_2 создаем переменную равную первому члену ряда и вторую переменную ряду. Вычисления происходят в цикле while с проверкой модуля разности между

последующим и предыдущим членами ряда, который не должен быть больше либо равен константе ε. В теле цикла мы возносим переменную х в степень, а в переменную sum заносим сумму из членов ряда.



Рис.3 – Задание 2, код в функции main




Рис.4 – Задание 2, функция task_2

3. Задание 3

Задача 1

Неисправный код

Рабочий код

Main ()

{ Int n, j;

Cout>> ‘n’>>endl;

Cin<
While j
{ if (n/I = 0) and (n <> j)

cout>>j>>endl; }

#include

#include

using namespace std;
int main()

{

int n, j = 1;

cout « "n" « endl;

cin » n;

while (j < n) {

if ((n % j == 0) && (n != j))

cout « j « endl;

++j;

}

}

Список исправленных ошибок:

  1. Int - надо писать с маленькой, присвоить j значение 1, чтобы найти все делители с 1;

  2. стрелки в “cout” в другую сторону, двойные кавычки и надо писать с маленькой буквы;

  3. стрелки в “cin” в другую сторону и надо писать с маленькой буквы;

  4. “while” надо писать с маленькой буквы и условие в скобках;

  5. добавить скобки для условия “if”, заменить: / на %, i на j , <> на !=, and на &&, = на ==;

  6. стрелки в “cout” в другую сторону;

  7. добавить “++j”, чтобы менялось значение нат. делителей, иначе цикл будет бесконечным;

Задача 2

Неисправный код

Рабочий код

Main ()

{float a, min, max,res; i:int;

cout<<‘n=, a1= ,a2= ’<
cin>>n, a1, a2;

if (a1>a2)

(a1=max; a2=min };

Else a2=max; a1=min; }

i = 3;

while i<100

(cout<<‘a’, I, ‘= ’<>a;

if (a
if (a>max) max=a; i++;

res =max-min;

cout<

#include

#include

using namespace std;
int main()

{

float a, min, max, res, a1, a2;

int i;

cout « "a1 = ";

cin » a1;

cout « "a2 = ";

cin » a2;

if (a1 > a2) {

max = a1;

min = a2;

}

else {

max = a2;

min = a1;

}

i = 3;

while (i <= 100) {

cout « "a" « i « "= ";

cin » a;

if (a < min)min = a;

if (a > max)max = a;

i++;

}

res = max - min;

cout « res « "\n";

}



Список исправленных ошибок:

  1. переменную “i” нужно объявить отдельно;

  2. выводить сообщения и считывать нужно отдельно;

  3. для цикла “if” добавить фигурную скобку, Else правильно писать с маленькой буквы else и также добавить фигурную скобку;

  4. условие в while в круглых скобках, а тело цикла в фигурных скобках, и добавить условие “=<”;

  5. оформить вывод “cout” по правилам c++;


Задача 3

Неисправный код

Рабочий код

if n%1 <> 0

for (i=1; n; i++;)

y*=y*I;

else for (i=1; n; i +=2;) y:=y*I;

cout<

#include

#include

using namespace std;
int main()

{

int n, y = 1;

cout « "n = ";

cin » n;

if (n % 2 != 0) {

for (int i = 1; i <= n; i += 2) {

y *= i;

}

}

else {

for (int i = 2; i <= n; i += 2) {

y *= i;

}

}

cout « "Результат = " « y « "\n";

}


Список исправленных ошибок:

  1. добавить объявление переменных “n” и “y” равный 1;

  2. с помощью “cout” и “cin” запросить у пользователя переменную “n”;

  3. условие оператора “if” в круглых скобках, <> заменить на !=;

  4. в условии цикла “for” добавить обьявление переменной i, изменить на i <= n;

  5. во втором цикле “for” сделать такие же изменения и в теле цикла переменную “i” записать с маленькой буквы;


Задача 4

Неисправный код

Рабочий код

Main ()

{ int k, x, m, n;

float s, rez=rezs=0;

cout << (`n:, x:`); cin >> (n,x);

for (k=1; n;) for (m=k; n;)

{ s:= (x+k) / m;

rez+=s; } rezs:=rezs+rez;

} cout << rezs:8:3<<\n; }

#include

using namespace std;
int main()

{

int k, x, m, n;

float s, rez = 0;

float rezs = rez;
cout << ("n:");

cin >> n;
cout << ("x:");

cin >> x;
for (k = 1; k <= n; k++ )

{

for (m = k; m <= n; m++)

{

s = (x + k) / m;

rez += s;

}

rezs = rezs + rez;

}
cout << rezs << endl;

}


Список исправленных ошибок:

  1. объявить переменную “rezs” с новой строки;

  2. отдельно запросить переменные “n” и “x”;

  3. добавить условие “for”, иначе цикл будет бесконечным;

  4. также изменить условие второго оператора “for”, а в теле цикла заменить := на = ;

  5. изменить конечный вывод убрав :8:3;

Задача 5

Неисправный код

Рабочий код

Main()

{

int I, j, n, s=0;

cin>>n;

for (i=1; n)

for (j=1; I)

s:=1/(i+2*j);

cout<

#include

using namespace std;
int main()

{

float i, j, n, rez = 0, s = 0, rezs = rez;

cout << "n: ";

cin >> n;

for (i = 1;i <= n; i++)

{

for (j = 1; j <= i; j++)

{

s = 1 / (i + 2 * j);

rez += s;

}

rezs += rez;

}

cout << rezs;

}

Список исправленных ошибок:

  1. объявить переменные i, j, n ,s типа float, а не int поскольку результат может быть не целое число и добавить переменные “rez” и “rezs”

  2. добавить вывод запрашиваемой переменной с помощью cout << "n: ";

  3. в операторе for добавить условие i <= n и i++,иначе цикл будет не рабочим, также добавить условие и во втором операторе “for”: j <= i; j++;

  4. заменить s:=1/(i+2*j) на s = 1 / (i + 2 * j), потому что в си++ не существует “:=” ;

  5. добавить в тело цикла for суммирование результатов;

  6. поменять вывод переменной “s” на вывод результатов;


Задача 6

Неисправный код

Рабочий код

fac=1; s=0;

for (k=1; 10)

{ s=0;

for (n=1, k)

s=s+sin(1+k);

fac*=k;

zn=s/fac;

s=s+zn;}

#include

#include

using namespace std;
int main()

{

float fac = 1, s = 0, zn;

int k, n;

float rez = 0;
for ( k = 1; k <= 10; k++)

{

s = 0;

for (n = 1; n <= k; n++)

{

s += sin(k * n);

}

fac *= k;

zn = s / fac;

rez += zn;

}


cout << rez << endl;

}


Список исправленных ошибок:

  1. правильно объявить переменные “fac” и “s” добавив тип данных и объявить переменные “zn”, “rez = 0” типа float, переменные “k” и “n” типа int;

  2. для первого и второго цикла “for” добавить условие и шаг цикла;

  3. после второго цикла “for” заменить строку s=s+zn на rez += zn для корректного счета результата;

  4. в конце работы программы вывести переменную rez;

Задача 7

Неисправный код

Рабочий код

Main()

{ int n, I, k, l; S: float;

Cuot<<‘Enter n’

Cin>>n

For (i=1, n)

S=sqr(i)*i-3*i+sqr(n)+n

{ If s % 3 = 0

K=s %3;

If k % <>0 L=1+s; }

cout<< ‘Result=’;

coutl;}

#include

#include

using namespace std;
int main()

{

int n, i, k = 0, l;

float s;

cout << "Enter n: ";

cin >> n;

for (i = 1; i <= n; i++)

{

s = pow(i, 3) - 3 * i * pow(n, 2) + n;
if ((int(s / 3) == (s / 3)) && (int(s / 3) % 2 == 0))

{

k += s;

}
}

cout << "Result = ";

cout << k;
}

Список исправленных ошибок:

  1. переменную I нужно обьявить с маленькой буквы, переменную s нужно объявить отдельно с типом float по правилам c++;

  2. Требуется правильно написать cout, также cin с маленькой буквы;

  3. Добавить условие и шаг табуляции для цикла for, заменить несуществующую функцию sqr на pow для возведения в степень, а так же сделать правильным сам пример;

  4. изменить условие для оператора if для проверки на утроенность и нечетность;

  5. в теле цикла заменить выражение K=s %3 на k += s для корректного счета результата:

  6. в конце программы вывести переменную k;


4. Задание 4

Для выполнения 4 задания нам понадобится лишь один условный оператор “if” с помощью которого мы будем проверять меньше ли число 0 (если да, умножаем на минус 1) или нет (не изменяем число).