Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 21.04.2015
Сообщений: 21
1

Неверный ввод в структуру

15.06.2016, 11:05. Показов 836. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Требуется написать программу с описанием структуры STUDENT с полями Фамилия и инициалы, номер группы и массив из 5 оценок.
При вводе во все поля последней оценки, кроме последнего студента, данные вводятся некорректно. Помогите исправить.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <iomanip>
 
using namespace std;
 
struct student
{char fio[50];
int num;
int u[4];
};
 
int main()
{student b;
student a[10];
const int n=3;
int i=0,j=0;
//ввод
for(i=0;i<n;i++)
  {
    cout<<"FAM: ";
    cin>>a[i].fio; 
    if (i!=0) cin.ignore();
    cout<<"GROUP: ";
    cin>>a[i].num; 
    cout<<"USPEVAEMOST"<<endl;
    for(j=0;j<5;j++)
      {cout<<"U"<<j+1<<": ";  
      cin>>a[i].u[j]; 
      cin.ignore(); } 
  cout<<endl; 
  } 
cout<<endl;
cout<<"-----------------OUTPUT-----------------"<<endl;
cout<<endl;  
for(i=0;i<n;i++)
  cout<<left<<setw(15)<<a[i].fio<<setw(15)<<a[i].num<<setw(8)<<a[i].u[0]<<setw(8)<<a[i].u[1]<<setw(8)<<a[i].u[2]<<setw(8)<<a[i].u[3]<<setw(8)<<a[i].u[4]<<endl;
 cout<<endl;
cout<<"----------------------------------------"<<endl;
cout<<endl;  
  
b=a[0];
int p=0;
cout<<endl;
cout<<"------------------SORT------------------"<<endl;
cout<<endl;
//сортировка
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
      if (a[i].num>a[j].num) 
       {b=a[i];
        a[i]=a[j];
        a[j]=b;
            }
            
//вывод
cout<<left<<setw(15)<<"FAM"<<setw(15)<<"GROUP"<<endl;
for(i=0;i<n;i++)
cout<<left<<setw(15)<<a[i].fio<<setw(15)<<a[i].num<<endl;
cout<<endl;
cout<<"----------------------------------------"<<endl;
cout<<endl;
 
cout<<endl;
cout<<"--------------SREDNII BALL--------------"<<endl;     
cout<<endl;  
//средний балл
float s=0; int t=0;
cout<<left<<setw(15)<<"FAM"<<setw(15)<<"GROUP"<<setw(15)<<"SR BALL"<<endl;
for(i=0;i<n;i++)
  {s=(a[i].u[0]+a[i].u[1]+a[i].u[2]+a[i].u[3]+a[i].u[4])/5;
  cout.precision(2); 
  if (s>4) {cout<<left<<setw(15)<<a[i].fio<<setw(15)<<a[i].num<<setw(15)<<s<<endl; t++;}
  if (t==0) cout<<"Takih studentov net."<<endl;
  }
cout<<endl;
cout<<"----------------------------------------"<<endl;
cout<<endl;
getch(); return 0;}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2016, 11:05
Ответы с готовыми решениями:

Ввод данных в структуру через указатель на структуру
#include &quot;stdafx.h&quot; #include &quot;ctime&quot; #include &quot;iostream&quot; #pragma warning(disable : 4996) ...

неверный ввод
cout&lt;&lt;&quot;\tViberite variant vvoda:\n\n&quot;; cout&lt;&lt;&quot;\t1.Vvod vruchnuy\n&quot;; ...

Неверный ввод в файл
Доброго времени суток! Написал программу, которая должна: 1. Считывать имя файла, определённое...

Почему-то всегда выдаёт неверный ввод
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;string.h&gt; using namespace std; int main() { ...

6
0 / 0 / 0
Регистрация: 21.04.2015
Сообщений: 21
15.06.2016, 11:08  [ТС] 2
На картинке - вместо последней оценки что-то другое выводится. У последнего студента все нормально.
Миниатюры
Неверный ввод в структуру  
0
7787 / 6555 / 2983
Регистрация: 14.04.2014
Сообщений: 28,633
15.06.2016, 11:17 3
Откуда там "меньше 5", если оценок всего 4?
0
0 / 0 / 0
Регистрация: 21.04.2015
Сообщений: 21
15.06.2016, 11:18  [ТС] 4
5 оценок - u[0], u[1], u[2], u[3], u[4]. Строго меньше 5 - от 0 до 4.
0
7787 / 6555 / 2983
Регистрация: 14.04.2014
Сообщений: 28,633
15.06.2016, 11:23 5
Где здесь 5 оценок?
C++
1
2
3
4
5
6
struct student
{
char fio[50];
int num;
int u[4];
};
0
0 / 0 / 0
Регистрация: 21.04.2015
Сообщений: 21
15.06.2016, 11:28  [ТС] 6
В С++ массив a[n] задается индексами от 0 до n - (n+1) элемент.

Добавлено через 3 минуты
Исправила на u[5] - ошибка ушла. Спасибо!!! Видимо, последний элемент зарезервирован под адрес ячейки.
0
7787 / 6555 / 2983
Регистрация: 14.04.2014
Сообщений: 28,633
15.06.2016, 11:40 7
Цитата Сообщение от panditmee Посмотреть сообщение
Видимо, последний элемент зарезервирован под адрес ячейки.
Что?
При описании массива ты указываешь размер - 4, значит индексы при обращении к элементам будут 0...3.
0
15.06.2016, 11:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2016, 11:40
Помогаю со студенческими работами здесь

Ввод в структуру
Здравствуйте, необходимо реализовать некоторую задумку, суть: Идет запись структуры и на некотором...

Автоматический ввод в структуру
Здравствуйте, интересует вопрос, как можно сделать автоматический ввод в структуру, объясню на...

Ввод/вывод данных в структуру
Доброго времени суток уважаемые форумчане. Подскажите есть у меня такое вот задание: Обеспечить...

Ввод данных в структуру из файла
Народ, помогите разобраться. В общем есть структура следующего вида: struct Employees { char...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru