Предмет: Информатика, автор: melfoy

Информацию о каждом студенте оформить в программе в виде структуры данных. Совокупность структуры данных объединить в массив. Составить программу, которая обеспечивает ввод полученной информации, вывод ее в виде таблицы. Напечатать таблицу, содержащую номера, фамилии и оценки тех студентов, которые получили хорошие и отличные оценки по программированию, а также подсчитать количество таких студентов. В С++

Приложения:

Ответы

Автор ответа: aurri
1

#include <iostream>

#include <string>

#include <iomanip>

#include <windows.h>

#include <cstdlib>

using namespace std;

struct grades {

   int math, physics, programming;

};

struct student {

   string FIO;

   grades grades {0, 0, 0};

};

void writeStrip(int count) {

   for (int i = 0; i < count; i++)

       cout << "-";

   cout << endl;

}

void printAllStudents(student *students, int size) {

   int fioWidth = 20;

   int gradesWidth = 10;

   int numberWidth = 5;

   writeStrip(numberWidth + fioWidth + gradesWidth * 3);

   cout

       << setw(numberWidth) << "#|"

       << setw(fioWidth) << "ФИО|"

       << setw(gradesWidth) << "Математ.|"

       << setw(gradesWidth) << "Физика|"

       << setw(gradesWidth) << "Програм.|"

       << endl;

   writeStrip(numberWidth + fioWidth + gradesWidth * 3);

   fioWidth--; gradesWidth--; numberWidth--;

   for (size_t i = 0; i < size; i++)

   {

       cout

           << setw(numberWidth) << i + 1 << "|"

           << setw(fioWidth) << students[i].FIO << "|"

           << setw(gradesWidth) << students[i].grades.math << "|"

           << setw(gradesWidth) << students[i].grades.physics << "|"

           << setw(gradesWidth) << students[i].grades.programming << "|"

           << endl;

   }

   fioWidth++; gradesWidth++; numberWidth++;

   writeStrip(numberWidth + fioWidth + gradesWidth * 3);

}

void printStudentsWithGoodProgramming(student* students, int size) {

   int cutSize = 0;

   for (size_t i = 0; i < size; i++)

       if (students[i].grades.programming > 3)

           cutSize++;

   student* cutStudents = new student[cutSize];

   for (size_t i = 0; i < cutSize; i++)

       cutStudents[i] = student();

   for (size_t i = 0, j = 0; i < size; i++)

   {

       if (students[i].grades.programming < 4)

           continue;

       cutStudents[j] = students[i];

       j++;

   }

   printAllStudents(cutStudents, cutSize);

   cout << "Количество: " << cutSize;

   delete[] cutStudents;

}

int main() {

   SetConsoleCP(1251);

   SetConsoleOutputCP(1251);

   cout << "Введите количество учеников, которых хотите добавить в массив: ";

   int size = 1;

   do {

       if (size < 1 || size > 100)

           cout << "Неккоректное количество учеников, попробуйте еще раз(от 1 до 100): ";

       cin >> size;

   } while (size < 1 || size > 100);

   student* students = new student[size];

   system("cls");

   for (size_t i = 0; i < size; i++) {

       cout << "Введите ФИО " << (i + 1) << "-го ученика: ";

       cin.ignore();

       getline(cin, students[i].FIO);

       cout << "введите оценку с математики: ";

       cin >> students[i].grades.math;

       cout << "введите оценку с физики: ";

       cin >> students[i].grades.physics;

       cout << "введите оценку с программирования: ";

       cin >> students[i].grades.programming;

       cout << "Данные " << i + 1 << "-го ученика записаны в массив!" << endl;

       system("pause");

       system("cls");

   }

   cout << "Все данные обо всех учениках записаны в массив!" << endl;

   cout << "Таблица всех учеников:" << endl;

   printAllStudents(students, size);

   cout << "Таблица учеников и их количество, оценки которых по програмированию больше 3:" << endl;

   printStudentsWithGoodProgramming(students, size);

   delete[] students;

   return 0;

}

Приложения:
Похожие вопросы
Предмет: Українська мова, автор: kovalkosta22
Предмет: Геометрия, автор: loyanice
Предмет: Химия, автор: dmytryshenoleksander