Для виконання даних завдань вам варто ознайомитися з циклом «for», масивами та структурою. Також не забувайте пройти попередній матеріал!
Завдання 1: Є структура яка складається з двох змінних: та учня складається з одного слова, оцінка це ціле число в межах включно. Є п’ять елементів даної структури. Програма може попросити виконати такі дії:
1. Вивести оцінки всіх учнів.
2. Вивести з найбільшою оцінкою.
3. Вивести з найменшою оцінкою.
4. Вивести учнів у яких оцінка є більшою або рівною за
Приклад роботи програми:
Ввід:
student #1
input name: A
input score: 7
student #2
input name: B
input score: 9
student #3
input name: C
input score: 11
student #4
input name: D
input score: 5
student #5
input name: E
input score: 11
1 = all score
2 = maximum score
3 = minimum score
4 = score >= 8
2
Вивід:
maximum score
#1 | C 11
#2 | E 11
Приклад роботи програми №2:
Ввід:
student #1
input name: A
input score: 7
student #2
input name: B
input score: 9
student #3
input name: C
input score: 11
student #4
input name: D
input score: 5
student #5
input name: E
input score: 11
1 = all score
2 = maximum score
3 = minimum score
4 = score >= 8
4
Вивід:
score >= 8
#1 | B 9
#2 | C 11
#3 | E 11
Приклад програми:
#include <iostream>
//створюємо структуру згідно завдання
struct student
{
std::string name;
int score;
};
int main()
{
//оскільки ми маємо декілька однакових екземплярів структури, то
//їх зручно записати у вигляді масиву, а не окремих змінних
const int size = 5;
student students[size];
//заповнюємо наші елементи, оскільки вони знаходяться в масиві, то
//ми можемо використати цикл
for (int i = 0; i < size; i++)
{
std::cout << "student #" << i + 1 << std::endl
<< "input name: ";
//звертаємося до змінної яка знаходиться в структурі.
std::cin >> students[i].name;
std::cout << "input score: ";
std::cin >> students[i].score;
}
//меню вибору
int menu;
std::cout << "1 = all score\n"
<< "2 = maximum score\n"
<< "3 = minimum score\n"
<< "4 = score >= 8\n";
std::cin >> menu;
if (menu == 1)
{
//виводимо весь масив
std::cout << "all score\n";
for (int i = 0; i < size; i++)
{
std::cout << "#" << i + 1 << " | " << students[i].name << " " << students[i].score << std::endl;
}
}
else if (menu == 2)
{
//нам необхідно вивести учнів з найвищим балом але ми
//не знаємо який бал є найвищим, тому його необхідно знайти
//як найбільше значення масиву
int max = students[0].score;
for (int i = 1; i < size; i++)
if (max < students[i].score)
max = students[i].score;
//для того щоб пронумерувати наших студентів доведеться створити нову змінну
int number = 1;
std::cout << "maximum score\n";
//проходимося по всьому масиву та виводимо лише тих студентів у яких
//оцінка є рівною максимальному балу
for (int i = 0; i < size; i++)
if (max == students[i].score)
{
std::cout << "#" << number << " | " << students[i].name << " " << students[i].score << std::endl;
//відповідно, потрібно збільшити порядковий номер
number++;
}
}
else if (menu == 3)
{
//аналогічні дії як і з максимальним балом
//але тут шукаємо мінімальний
int min = students[0].score;
for (int i = 1; i < size; i++)
if (min > students[i].score)
min = students[i].score;
int number = 1;
std::cout << "minimum score\n";
for (int i = 0; i < size; i++)
if (min == students[i].score)
{
std::cout << "#" << number << " | " << students[i].name << " " << students[i].score << std::endl;
number++;
}
}
else if (menu == 4)
{
int number = 1;
std::cout << "score >= 8\n";
//виводимо лише тих учнів у яких оцінка є більша-рівна за "8"
for (int i = 0; i < size; i++)
if (students[i].score >= 8)
{
std::cout << "#" << number << " | " << students[i].name << " " << students[i].score << std::endl;
number++;
}
}
return 0;
}
Завдання 2: До попередньої програми додайте сортування по оцінках. В порядку зростання (від найменшого до найбільшого) та в порядку спадання (від найбільшого до найменшого).
Приклад роботи програми:
Ввід:
student #1
input name: A
input score: 7
student #2
input name: B
input score: 9
student #3
input name: C
input score: 11
student #4
input name: D
input score: 5
student #5
input name: E
input score: 11
1 = all score
2 = maximum score
3 = minimum score
4 = score >= 8
5 = sort min -> max
6 = sort max -> min
6
Вивід:
sort max -> min
#1 | C 11
#2 | E 11
#3 | B 9
#4 | A 7
#5 | D 5
Приклад програми:
#include <iostream>
//створюємо структуру згідно завдання
struct student
{
std::string name;
int score;
};
int main()
{
//оскільки ми маємо декілька однакових екземплярів структури, то
//їх зручно записати у вигляді масиву, а не окремих змінних
const int size = 5;
student students[size];
//заповнюємо наші елементи, оскільки вони знаходяться в масиві, то
//ми можемо використати цикл
for (int i = 0; i < size; i++)
{
std::cout << "student #" << i + 1 << std::endl
<< "input name: ";
//звертаємося до змінної яка знаходиться в структурі.
std::cin >> students[i].name;
std::cout << "input score: ";
std::cin >> students[i].score;
}
//меню вибору
int menu;
std::cout << "1 = all score\n"
<< "2 = maximum score\n"
<< "3 = minimum score\n"
<< "4 = score >= 8\n"
<< "5 = sort min -> max\n"
<< "6 = sort max -> min\n";
std::cin >> menu;
if (menu == 1)
{
//виводимо весь масив
std::cout << "all score\n";
for (int i = 0; i < size; i++)
{
std::cout << "#" << i + 1 << " | " << students[i].name << " " << students[i].score << std::endl;
}
}
else if (menu == 2)
{
//нам необхідно вивести учнів з найвищим балом але ми
//не знаємо який бал є найвищим, тому його необхідно знайти
//як найбільше значення масиву
int max = students[0].score;
for (int i = 1; i < size; i++)
if (max < students[i].score)
max = students[i].score;
//для того щоб пронумерувати наших студентів доведеться створити нову змінну
int number = 1;
std::cout << "maximum score\n";
//проходимося по всьому масиву та виводимо лише тих студентів у яких
//оцінка є рівною максимальному балу
for (int i = 0; i < size; i++)
if (max == students[i].score)
{
std::cout << "#" << number << " | " << students[i].name << " " << students[i].score << std::endl;
//відповідно, потрібно збільшити порядковий номер
number++;
}
}
else if (menu == 3)
{
//аналогічні дії як і з максимальним балом
//але тут шукаємо мінімальний
int min = students[0].score;
for (int i = 1; i < size; i++)
if (min > students[i].score)
min = students[i].score;
int number = 1;
std::cout << "minimum score\n";
for (int i = 0; i < size; i++)
if (min == students[i].score)
{
std::cout << "#" << number << " | " << students[i].name << " " << students[i].score << std::endl;
number++;
}
}
else if (menu == 4)
{
int number = 1;
std::cout << "score >= 8\n";
//виводимо лише тих учнів у яких оцінка є більша-рівна за "8"
for (int i = 0; i < size; i++)
if (students[i].score >= 8)
{
std::cout << "#" << number << " | " << students[i].name << " " << students[i].score << std::endl;
number++;
}
}
else if (menu == 5)
{
//проміжна структура
student student;
//виконуємо сортування як звичайного масиву
for(int i = 1; i < size; i++)
for (int j = 0; j < size - i; j++)
if (students[j].score > students[j + 1].score)
{
student = students[j];
students[j] = students[j + 1];
students[j + 1] = student;
}
//виводимо весь масив
std::cout << "sort min -> max\n";
for (int i = 0; i < size; i++)
{
std::cout << "#" << i + 1 << " | " << students[i].name << " " << students[i].score << std::endl;
}
}
else if (menu == 6)
{
student student;
for(int i = 1; i < size; i++)
for (int j = 0; j < size - i; j++)
if (students[j].score < students[j + 1].score)
{
student = students[j];
students[j] = students[j+1];
students[j+1] = student;
}
//виводимо весь масив
std::cout << "sort max -> min\n";
for (int i = 0; i < size; i++)
{
std::cout << "#" << i + 1 << " | " << students[i].name << " " << students[i].score << std::endl;
}
}
return 0;
}