- •1 Структурна побудова звіту
- •2 Вимоги до оформлення текстової частини звіту
- •1 Завдання до роботи Загальне завдання
- •2 Розробка алгоритму розв’язання задачі
- •2.1 Опис функцій
- •2.2 Опис змінних
- •Структура Student
- •Компонентні дані
- •2.3 Схеми алгоритмів
- •3 Текст программы Текст файла TestLab.Cpp
- •4 Результат роботи програми
- •Висновки
- •Сохранение настроек
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;
}
