Файл: Отчет по лабораторной работе 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; } } |
Список исправленных ошибок:
-
Int - надо писать с маленькой, присвоить j значение 1, чтобы найти все делители с 1; -
стрелки в “cout” в другую сторону, двойные кавычки и надо писать с маленькой буквы; -
стрелки в “cin” в другую сторону и надо писать с маленькой буквы; -
“while” надо писать с маленькой буквы и условие в скобках; -
добавить скобки для условия “if”, заменить: / на %, i на j , <> на !=, and на &&, = на ==; -
стрелки в “cout” в другую сторону; -
добавить “++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, ‘= ’< 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"; } |
Список исправленных ошибок:
-
переменную “i” нужно объявить отдельно; -
выводить сообщения и считывать нужно отдельно; -
для цикла “if” добавить фигурную скобку, Else правильно писать с маленькой буквы else и также добавить фигурную скобку; -
условие в while в круглых скобках, а тело цикла в фигурных скобках, и добавить условие “=<”; -
оформить вывод “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"; } |
Список исправленных ошибок:
-
добавить объявление переменных “n” и “y” равный 1; -
с помощью “cout” и “cin” запросить у пользователя переменную “n”; -
условие оператора “if” в круглых скобках, <> заменить на !=; -
в условии цикла “for” добавить обьявление переменной i, изменить на i <= n; -
во втором цикле “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; } |
Список исправленных ошибок:
-
объявить переменную “rezs” с новой строки; -
отдельно запросить переменные “n” и “x”; -
добавить условие “for”, иначе цикл будет бесконечным; -
также изменить условие второго оператора “for”, а в теле цикла заменить := на = ; -
изменить конечный вывод убрав :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; } |
Список исправленных ошибок:
-
объявить переменные i, j, n ,s типа float, а не int поскольку результат может быть не целое число и добавить переменные “rez” и “rezs” -
добавить вывод запрашиваемой переменной с помощью cout << "n: "; -
в операторе for добавить условие i <= n и i++,иначе цикл будет не рабочим, также добавить условие и во втором операторе “for”: j <= i; j++; -
заменить s:=1/(i+2*j) на s = 1 / (i + 2 * j), потому что в си++ не существует “:=” ; -
добавить в тело цикла for суммирование результатов; -
поменять вывод переменной “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; } |
Список исправленных ошибок:
-
правильно объявить переменные “fac” и “s” добавив тип данных и объявить переменные “zn”, “rez = 0” типа float, переменные “k” и “n” типа int; -
для первого и второго цикла “for” добавить условие и шаг цикла; -
после второго цикла “for” заменить строку s=s+zn на rez += zn для корректного счета результата; -
в конце работы программы вывести переменную 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; } |
Список исправленных ошибок:
-
переменную I нужно обьявить с маленькой буквы, переменную s нужно объявить отдельно с типом float по правилам c++; -
Требуется правильно написать cout, также cin с маленькой буквы; -
Добавить условие и шаг табуляции для цикла for, заменить несуществующую функцию sqr на pow для возведения в степень, а так же сделать правильным сам пример; -
изменить условие для оператора if для проверки на утроенность и нечетность; -
в теле цикла заменить выражение K=s %3 на k += s для корректного счета результата: -
в конце программы вывести переменную k;
4. Задание 4
Для выполнения 4 задания нам понадобится лишь один условный оператор “if” с помощью которого мы будем проверять меньше ли число 0 (если да, умножаем на минус 1) или нет (не изменяем число).