Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование. Оформление лаб.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.42 Mб
Скачать

2.3 Схеми алгоритмів

Рисунок 2 – Схема алгоритму функції generateStudent

Рисунок 3 – Схема алгоритму функції main

Рисунок 4 – Схема алгоритму функції showStudents

3 Текст программы Текст файла TestLab.Cpp

(без «шапки» з індивідуальним завданням. Ця частина тексту програми подана в додатку В.)

/**

* @file TestLab.cpp

*

* Файл с описанием структруры студента и реализации функций генерирования и вывода на экран

*

* @author Davydov V.

* @date 23-feb-2016

* @version 1.0

*/

#include <iostream>

#include <string>

using namespace std;

const int N = 5; ///< Количество оценок у студента

const int M = 10; ///< Количество студентов

/** массив возможных имен */

const char firstNames[3][10] = { "Ivan", "Petr", "Sidor"};

/** массив возможных отчеств */

const char middleNames[3][15] = { "Ivanovich", "Petrovich", "Sidorovich"};

/** массив возможных фамилий */

const char lastNames[3][10] = { "Ivanov", "Petrov", "Sidorov"};

/**

* Структура «Студент»

*/

struct Student {

char firstName[10]; ///< Имя студента

char middleName[15]; ///< Отчество студента

char lastName[10]; ///< Фамилия студента

int marks[N]; ///< Оценки студента

};

/**

* Создание данных о студенте.

*

* Функция генерирует случайные ФИО на основе массивов символов для имен, отчеств, фамилий;

* оценки генерируются случайным образом от 1 до 5, сгенерированные данные

* заполняют поля структуры Student

* @return структура Student с заполненными полями

*/

Student generateStudent () {

Student result;

strcpy(result.firstName, firstNames[rand()%3]);

strcpy(result.middleName, middleNames[rand()%3]);

strcpy(result.lastName, lastNames[rand()%3]);

for (int i = 0; i < N; i++) {

result.marks[i] = rand()%5 + 1;

}

return result;

}

/**

* Вывод на экран содержимого массива с данными о студентах.

*

* Функция в цикле для всех элементов переданного массива с данными о студентах выводит их на экран

* в следующем формате "Фамилия Имя Отчество: Оценка1 Оценка2 Оценка3 Оценка4 Оценка5"

* @param students массив с данными о студентах, которые необходимо вывести на экран

*/

void showStudents(Student students[]) {

for (int i = 0; i < M; i++) {

cout << "Output Student #" << i << " information:" << endl;

cout << students[i].lastName << students[i].firstName << students[i].middleName;

cout << ":";

for (int j = 0; j < N; j++) {

cout << students[i].marks[j] << " ";

}

cout << endl;

}

}

/**

* Главная функция.

*

* Последовательность действий:

* <ul>

* <li> создание массива с данными о 10 студентах </li>

* <li> в цикле – генерация данных для каждого студента, путем вызова функции </li>

* <li> {@link generateStudent} </li>

* <li> вывод данных обо всех студентах на экран {@link showStudents}</li>

* </ul>

* @return успешный код возврата из программы (0)

*/

int main() {

Student students[M];

for (int i = 0; i < M; i++) {

students[i] = generateStudent();

}

showStudents(students);

return 0;

}