morto
@morto
вечный ученик

Программа пропускает ввод данных или ломается?

при вводе в students[i].fio(там где комментарий) программа ломается, либо вообще пропускает ввод. Пробовал и с char и string и cin и getline. Направьте молодой ум, помогите мученику.

#include <iostream>
#include <windows.h>
#include <string>
using namespace std;

int main()
{
  setlocale(LC_ALL, "ru_RU.UTF-8");
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  struct Student
  {
    string fio;
    int group;
    int yspeh[5];
    double sredn;
  };
  int n;
  cout << " Введите количество студентов: ";
  cin >> n;
  Student *students = new Student[n];
  for (int i = 0; i < n; i++)
  {
    cout << "Введите ФИО: ";
    cin >> students[i].fio; // тут ломается программа!!!!!!!!!!!!!!!!!!11
    cout << "Введите групу: ";
    cin >> students[i].group;
    cout << "Введите оценки: ";
    for (int j = 0; j < 5; j++)
    {
      cout << j + 1 << " : ";
      cin >> students[i].yspeh[j];
    }
  }
  double sredn = 0;
  for (int i = 0; i < n; i++)
  {
    for (int j = 0; j < 5; j++)
    {
      sredn += students[i].yspeh[j];
    }
    students[i].sredn = sredn / 5.0;
    sredn = 0;
  }
  int temp;
  for (int i = 0; i < n; i++)
  {
    for (int j = i; j < n; j++)
    {
      if (students[i].sredn > students[j].sredn)
        swap(students[i], students[j]);
    }
  }
  for (int i = 0; i < n; i++)

  {
    cout << "ФИО\t" << students[i].fio << "\n"; 
    cout << "Номер группы\t" << students[i].group << "\n";
    cout << "Оценки\t";
    for (int j = 0; j < 5; j++)
    {
      cout << students[i].yspeh[j] << "\t";
    }
    cout << "\n";
    cout << "Среднее знач:\t" << students[i].sredn << "\n";
  }
  string vopros;
  cout << "Вывести студентов с оценкой 4 или 5?" << endl;
  cin >> vopros;
  if (vopros != "нет")
  {
    int check;
    if (vopros == "4")
    {
      for (int i = 0; i < n; i++)
      {
        check = 0;
        for (int j = 0; j < 5; j++)
        {
          if (students[i].yspeh[j] != 4)
            check = 1;
          break;
        }

        if (check == 0)
        {
          cout << "ФИО\t" << students[i].fio << "\n";
          cout << "Номер группы\t" << students[i].group << "\n";
          cout << "Оценки\t";
          for (int j = 0; j < 5; j++)
          {
            cout << students[i].yspeh[j] << "\t";
          }
          cout << "\n";
          cout << "Среднее знач:\t" << students[i].sredn << "\n";
        }
      }
    }
    else if (vopros == "5")
    {
      for (int i = 0; i < n; i++)
      {
        check = 0;
        for (int j = 0; j < 5; j++)
        {
          if (students[i].yspeh[j] != 5)
            check = 1;
          break;
        }

        if (check == 0)
        {
          cout << "ФИО\t" << students[i].fio << "\n";
          cout << "Номер группы\t" << students[i].group << "\n";
          cout << "Оценки\t";
          for (int j = 0; j < 5; j++)
          {
            cout << students[i].yspeh[j] << "\t";
          }
          cout << "\n";
          cout << "Среднее знач:\t" << students[i].sredn << "\n";
        }
      }
    }
  }
  else
  {
    cout << "До свидания";
  }
  system("PAUSE");
}
  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы