Лаба 2 отчёт
.docxМинистерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Пермский национальный исследовательский политехнический университет Кафедра ИТАС
Лабораторная работа №2
«Программирование на языках высокого уровня»
Выполнил студент группы АСУ-12
Ожгибесов Вадим Денисович
Проверил доцент кафедры ИТАС, к. т. н.
Викентьева Ольга Леонидовна
Пермь, 2012
Постановка задачи
Вариант №16
-
Дана последовательность из n целых чисел. Найти количество элементов этой последовательности, кратных числу K1 и не кратных числу K2.
-
Дана последовательность целых чисел, за которой следует 0. Найти сумму четных элементов этой последовательности.
-
Сформировать все числа Фибоначчи не превышающие заданное число Q.
Блок-схемы алгоритма решения
Задача 1
Задача 2
Задача 3
Программы для решения задач
Задача 1:
#include <iostream>
using namespace std;
void printNum(int num) {
switch (abs(num)%10) {
case 1: cout << " число "; break;
case 2: case 3: case 4: cout << " числа "; break;
default: cout << " чисел "; break;
}
}
inline void printMultiplicity(int num) {
abs(num)%10 == 1?cout << " кратно ":cout << " кратны ";
}
void main() {
setlocale(0,"");
cout << "Введите n: ";
int n;
cin >> n;
if (n<=0) {
cout << "Ошибка! n <= 0!\n";
return;
}
int K1, K2;
cout << "Введите K1: ";
cin >> K1;
cout <<"Введите K2: ";
cin >> K2;
if (K1==0||K2==0) {
cout << "Деление на 0!\n";
return;
}
cout << "Вводите данные:\n";
int K1_count = 0, K2_count = 0;
for (int i = 0, cur; i < n; i++) {
cout << "a[" << i << "]: ";
cin >> cur;
if (cur%K1 == 0) K1_count++;
if (cur%K2 != 0) K2_count++;
}
//cout << "Из данной последовательности " << K1_count << " чисел кратны K1, а " << K2_count << " чисел не кратны K2\n";
cout << "Из данной последовательности " << K1_count;
printNum(K1_count);
printMultiplicity(K1_count);
cout << "K1, а " << K2_count;
printNum(K2_count);
cout << "не";
printMultiplicity(K2_count);
cout << "K2\n";
}
Задача 2:
#include <iostream>
using namespace std;
void main() {
setlocale(0,"");
cout << "Вводите последовательность чисел. 0 означает конец последовательности\n";
int cur, sum = 0;
bool any = false;
do {
cin >> cur;
if ((cur%2 == 0)&&(cur!=0)) {
sum+=cur;
any = true;
}
} while (cur);
if (any)
cout << "Сумма чётных элементов последовательности равна " << sum << endl;
else
cout << "Пустая последовательность!\n";
}
Задача 3:
#include <iostream>
using namespace std;
void main() {
setlocale(0,"");
cout << "Введите Q: ";
int Q;
cin >> Q;
if (Q<0) {
cout << "Ошибка! Q < 0!\n";
return;
}
cout << "Числа Фибоначчи, не превышающие Q:\n";
if (Q == 0) {
cout << "0\n";
return;
}
cout << "1";
int cur = 1, prev = 0,temp;
while (cur+prev <= Q) {
temp = cur;
cur += prev;
prev = temp;
cout << "," << cur;
}
cout << endl;
}
Система тестов для проверки правильности работы программы
Задача 1:
|
Т1 |
Т2 |
Т3 |
Т4 |
Т5 |
1) Ошибка N <= 0 |
+ |
|
|
|
|
2) Ошибка K1 = 0 |
|
+ |
|
|
|
3) Ошибка K2 = 0 |
|
|
+ |
|
|
4) Последовательность из 1 элемента |
|
|
|
+ |
|
5) Последовательность из 10 элементов |
|
|
|
|
+ |
Тест |
Вход. данные |
Вывод |
Тест пройден? |
T1 |
n = 0, k1 = 5, k2 = 3 |
Сообщение об ошибке |
+ |
T2 |
n = 10, k1 = 0, k2 = 3 |
Сообщение об ошибке |
+ |
T3 |
n = 10, k1 = 5, k2 = 0 |
Сообщение об ошибке |
+ |
T4 |
n = 1, k1 = 5, k2 = 3 5 |
K1_count = 1 K2_count = 1 |
+ |
T5 |
n = 10, k1 = 5, k2 = 3 5 15 4 9 3 7 8 222 4 9 |
K1_count = 5 K2_count = 4 |
+ |
|
Т1 |
Т2 |
Т3 |
Т4 |
Т5 |
Условие (n<=0) выполняется |
+ |
|
|
|
|
Условие (n<=0) не выполняется |
|
+ |
+ |
+ |
+ |
Условие (K1==0||K2==0) выполняется |
|
+ |
+ |
|
|
Условие (K1==0||K2==0) не выполняется |
|
+ |
+ |
|
|
Цикл не выполняется |
+ |
+ |
+ |
|
|
Цикл выполняется 1 раз |
|
|
|
+ |
|
Цикл выполняется несколько раз |
|
|
|
|
+ |
Задача 2:
|
Т1 |
Т2 |
Т3 |
Т4 |
Т5 |
1) Последовательность из 0 элементов |
+ |
|
|
|
|
2) Последовательность из 1 элемента |
|
+ |
|
|
|
3) Последовательность из 10 элементов |
|
|
+ |
|
|
4) Последовательность только из чётных |
|
|
|
+ |
|
5) --//-- из нечётных |
|
|
|
|
+ |
Тест |
Вход. данные |
Вывод |
Тест пройден? |
Т1 |
0 |
0 |
+ |
Т2 |
5 0 |
0 |
+ |
Т3 |
1 2 3 4 5 6 7 8 9 10 0 |
30 |
+ |
Т4 |
2 4 8 16 32 64 0 |
126 |
+ |
Т5 |
1 3 5 7 9 11 13 0 |
0 |
+ |
|
Т1 |
Т2 |
Т3 |
Цикл выполняется 1 раз |
+ |
+ |
|
Цикл выполняется несколько раз |
|
|
+ |
Задача 3:
|
T1 |
T2 |
T3 |
T4 |
Q < 0 |
+ |
|
|
|
Q = 0 |
|
+ |
|
|
Q = 1 |
|
|
+ |
|
Q > 1 |
|
|
|
+ |
Тест |
Вход. данные |
Вывод |
Тест пройден? |
Т1 |
q = -1 |
Сообщение об ошибке |
+ |
Т2 |
q = 0 |
0 |
+ |
T3 |
q = 1 |
0, 1, 1 |
+ |
Т4 |
q = 666 |
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610 |
+ |
|
T1 |
T2 |
T3 |
T4 |
Условие (Q<0) выполняется |
+ |
|
|
|
Условие (Q<0) не выполняется |
|
+ |
+ |
+ |
Условие (Q == 0) выполняется |
|
+ |
|
|
Условие (Q == 0) не выполняется |
+ |
|
+ |
+ |
Цикл не выполняется |
+ |
+ |
|
|
Цикл выполняется 1 раз |
|
|
+ |
|
Цикл выполняется много раз |
|
|
|
+ |