Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Blesk_ov
0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 12
#1

Как дописать код для полного функционирования? Структура "Студент" - C++

06.07.2015, 10:22. Просмотров 446. Ответов 13
Метки нет (Все метки)

все в принципе работает с одним студентом,но есть загвоздка,если ставишь больше то он ответы выдает на первого правильно а на других как захочет!нужно то ли цикл сделать,пройдя условие для одного студента,чтоб он так же прошелся и для других по очереди!

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <iostream>
#include <string>
#include<math.h>
#include<stdlib.h>
#include<windows.h>
using namespace std;
 
struct STUDENT
{
    string name;
    string inici;
    string group;
    float kol[5];
};
 
int main()
{
    const int uchenik = 2;
    STUDENT stud[uchenik];
    int i, j;
    int n = 0;
 
 
    for ( i = 0; i < uchenik; i++)
    {
        cout << "Vvedite famili " << endl;
        cin >> stud[n].name;
        cout << "Vvedite inicial " << endl;
        cin >> stud[n].inici;
        cout << "Vvedite nomer grup " << endl;
        cin >> stud[n].group;
        cout << "Uspevaemost " << endl;
        for (int i = 0; i < 5; i++)
        cin >> stud[n].kol[i];
        n++;
 
    }
    int punkt;
 
        cout << "Vibrat punkt: " << endl;
        cout << "1. Imeetsya hot odna 2 ?" << endl;
        cout << "2. Srednyaya ocenka >4.0 ?" << endl;
        cout << "3. u kotorih est i 4 i 5 ?" << endl;
        cout << "\n\n";
        cin >> punkt;
 
        float sum = 0;
        bool hach=false;
        bool kuch = false;
        bool five = false;
        bool usloviya = false;
 
        switch (punkt)
        {
          case 1:
 
            for ( i = 0; i < uchenik; i++)
            {
              for (j = 0; j < 5; j++)
              {
                  if(stud[i].kol[j]==2)
                  {
                       usloviya=true;
                       break;
                  }
              }
 
              if(usloviya)
              {
                 cout << "\nFamili: " << stud[i].name;
                 cout << "\tGrup: " << stud[i].group << endl;
              }
            }
 
            if (!usloviya)
              cout << "\n\nTakih net\n\n" << endl;
            break;
 
          case 2:
            for ( i = 0; i < uchenik; i++)
            {
              for (j = 0; j < 5; j++)
                sum += stud[i].kol[j];
 
              if(sum/5 > 4.0)
                hach=true;
 
              if(hach)
              {
                 cout << "\nFamili: " << stud[i].name;
                 cout << "\tGrup: " << stud[i].group << endl;
              }
            }
 
            if(!hach)
              cout << "\n\nTakih net\n\n" << endl;
            break;
 
          case 3:
 
             for ( i = 0; i < uchenik; i++)
             {
                for (j = 0; j < 5; j++)
                {
                  if(stud[i].kol[j]==4)
                     kuch=true;
                  if (stud[i].kol[j] == 5)
                     five = true;
                }
 
                if(kuch && five)
                {
                   cout << "\nFamili: " << stud[i].name;
                   cout << "\tGrup: " << stud[i].group << endl;
                }
             }
 
 
             if(!kuch || !five)
                cout << "\n\nTakih net\n\n" << endl;
             break;
          };
 
       return 0;
   }
Добавлено через 15 минут
а ты не знаешь как сделать,чтоб норм работало?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2015, 10:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как дописать код для полного функционирования? Структура "Студент" (C++):

Структура "Студент" - прокомментировать код - C++
ребят помогите пожалуйста написать комментарий к данной программе...не могу разобраться((:-|:wall: #include &lt;stdio.h&gt; #include...

Создать класс "Студент" и классы "Бюджетный студент" и "Коммерческий студент" - C++
Доброго времени суток. Помогите с задачкой. Наследование. Создать класс студент и классы бюджетный студент и коммерческий студент.

Структура "Студент". Найти студента с минимальным доходом - C++
Для получения места в общежитии формируется список студентов, который включает ФИО студента, группу, средний балл, доход на члена семьи....

Структура "Студент": переделать задачу с использованием указателей - C++
Описать Структуру с именем STUDENT с полями: 1. NAME-фамилия и инициалы; 2.GROUP-номер группы; 3.SES-успеваемость(массив из 5...

Структура "Студент". Перевести всех на следующий курс - C++
составить электронную библиотеку студентов вводящую информацию с клавиатуры для N студентов и переводящую их на следующий курс... при том...

Структура "Студент", найти студента с максимальными оценками - C++
Вводим список студентов и их оценки.Как вывести студента с максимальным баллом оценок? #include &lt;cmath&gt; #include &lt;iostream&gt; using...

13
rep plz
Заблокирован
06.07.2015, 10:32 #2
Вот и отступы появились У вас ошибку не нашел, но у меня аналогичная задача, себе возьму часть вашего кода, если вы не против
Цитата Сообщение от Blesk_ov Посмотреть сообщение
float sum = 0;
* * * * bool hach=false;
* * * * bool kuch = false;
* * * * bool five = false;
* * * * bool usloviya = false;
это что значит?

Добавлено через 5 минут
Наверное я понял. У вас начинает выдавать не понятные результаты, начиная с третьего студента?
1
Blesk_ov
0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 12
06.07.2015, 10:34  [ТС] #3
bool используется для объявления переменных для хранения логических значений, true и false.
float обозначает простой тип, используемый для хранения 32-разрядных значений с плавающей запятой.(использовал чтоб найти средний балл)

Добавлено через 35 секунд
начиная со второго
0
rep plz
Заблокирован
06.07.2015, 10:36 #4
Цитата Сообщение от Blesk_ov Посмотреть сообщение
for ( i = 0; i < uchenik; i++)
попробуйте так
C++
1
for ( i = 0; i <= uchenik; i++)
в этом случае у вас могут начаться аналогичные проблемы но уже начиная с третьего студента
0
ThePlague
101 / 101 / 61
Регистрация: 30.06.2015
Сообщений: 272
06.07.2015, 10:45 #5
Blesk_ov, опишите по конкретней при каких параметрах выдает мусор.

Сколько студентов? Какие входные параметры вы задаете? При каких ситуациях вывод = мусор?

З.Ы: Пробежал мельком по коду вроде все должно работать....
0
Blesk_ov
0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 12
06.07.2015, 11:02  [ТС] #6
rep plz, при этом вообще ерезь выходит
ThePlague, ну на пример ставлю 2 студентов,пишу инфу о них ,первому ставлю все двойки второму тройки,задаю пункт 1 где хоть одну двойку,он у первого видать находит и следом автоматом другого выкидывает, будто найдя для одного студента вариант ответа,остальных выкидывает на экран как за действительность

Добавлено через 11 минут
по другому не могу объяснить!
0
rep plz
Заблокирован
06.07.2015, 11:11 #7
Цитата Сообщение от Blesk_ov Посмотреть сообщение
int n = 0;
а это что за переменная? количество студентов?

Добавлено через 9 минут
Цитата Сообщение от Blesk_ov Посмотреть сообщение
ну на пример ставлю 2 студентов,пишу инфу о них ,первому ставлю все двойки второму тройки,задаю пункт 1 где хоть одну двойку,он у первого видать находит и следом автоматом другого выкидывает, будто найдя для одного студента вариант ответа,остальных выкидывает на экран как за действительность
Цитата Сообщение от Blesk_ov Посмотреть сообщение
if(usloviya)
* * * * * * * {
* * * * * * * * *cout << "\nFamili: " << stud[i].name;
* * * * * * * * *cout << "\tGrup: " << stud[i].group << endl;
* * * * * * * }
значит здесь прописаны параметры, под которые попадает тот. я не понимаю вот этих команд и их значений:
stud[i].name
stud[i].group
но предполагаю что он выводит всех студентов с этой группы (если имена разные). вы пробовали вводить сначала разные группы? потом разные ФИО по отдельности?
0
ThePlague
101 / 101 / 61
Регистрация: 30.06.2015
Сообщений: 272
06.07.2015, 11:12 #8
Blesk_ov, короче все просто у вас "bool usloviya" всегда "true"!!!

вот тут допишите usloviya = false;

C++
1
2
3
4
5
6
if(usloviya)
{
     cout << "\nFamili: " << stud[i].name;
     cout << "\tGrup: " << stud[i].group << endl;
     usloviya = false; //  флажок надо возвращать в исходный вид :) а то он у вас постоянно поднят :)
}
1
matxon
4 / 4 / 1
Регистрация: 14.09.2014
Сообщений: 14
06.07.2015, 11:19 #9
Зачем новую ветку создал?

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <iostream>
#include <string>
 
using namespace std;
 
struct STUDENT // структура STUDENT
{
    string name;  // фамилия
    string inici; // Инициалы
    string group; // Группа
    float kol[5]; // Количество оценок
};
 
int main()
{
    setlocale(LC_ALL, "Russian");
    const int uchenik = 3; // количество студентов
    STUDENT stud[uchenik]; // массив
 
    int i, j;
    // int n = 2; // счётчик студентов
 
    
    for ( i = 0; i < uchenik; i++)  // ввод информации
    {
        cout << "Введите фамилию студента: " << endl;
        cin >> stud[i].name;
        cout << "Введите его инициалы: " << endl;
        cin >> stud[i].inici;
        cout << "Номер группы: " << endl;
        cin >> stud[i].group;
        cout << "Его оценки (по 5 предметам)" << endl;
 
        for (int j = 0; j < 5; j++)
          cin >> stud[i].kol[j];
     }
 
     int punkt;
loop:
     cout << "\n\nВыберите пункт: " << endl;
     cout << "1. Имеется ли хоть одна 2-ка в его оценках ?" << endl;
     cout << "2. Студенты, средняя оценка которых выше 4 ?" << endl;
     cout << "3. Студенты, в оценках которых присутствует и 4 и 5 ?" << endl;
     cout << "\n------------------------------------------------------------\n";
     cin >> punkt;
 
     float sum = 0;
     bool hach=false;
     bool kuch = false;
     bool five = false;
     bool usloviya = false;
     bool result = false;
 
     switch (punkt)
     {
       case 1:
 
         for ( i = 0; i < uchenik; i++)
         {
           for (j = 0; j < 5; j++)
           {
               if(stud[i].kol[j]==2)
               {
                    usloviya=true; 
               }
           }
           if (usloviya)
           {
              cout << "\nФамилия: " << stud[i].name;
              cout << "\tГруппа: " << stud[i].group;
              usloviya = false;
              result = true;
           }
         }
 
         if (!result) 
           cout << "\n\nПо вашему запросу студентов не найдено\n\n" << endl;
 
         cout << "\n------------------------------------------------------------\n";
         break;
 
       case 2:
         for ( i = 0; i < uchenik; i++)
         {
           sum = 0;
           for (j = 0; j < 5; j++)
             sum += stud[i].kol[j];
           
           if(sum / 5 > 4.0)
           {
              cout << "\nФамилия: " << stud[i].name;
              cout << "\tГруппа: " << stud[i].group;
              result = true;
           }
         }
 
         if(!result)
           cout << "\n\nПо вашему запросу студентов не найдено\n\n" << endl;
         cout << "\n------------------------------------------------------------\n";
         break;
 
       case 3: 
 
          for ( i = 0; i < uchenik; i++)
          {
             for (j = 0; j < 5; j++)
             {
               if(stud[i].kol[j]==4) //надо чтоб выдавал при условии если у студента и 4 и 5 имеется
                  kuch=true;
               if (stud[i].kol[j] == 5)
                  five = true;
             }
 
             if(kuch && five)
             {
                cout << "\nФамилия: " << stud[i].name;
                cout << "\tГруппа: " << stud[i].group;
                kuch = false;
                five = false;
                result = true;
             }
          }
 
          
          if(!result)
             cout << "\n\nПо вашему запросу студентов не найдено\n\n" << endl;
          cout << "\n------------------------------------------------------------\n";
          break;
       default:
          goto exit;
       };
     goto loop;
exit:
    return 0;
}
1
Paraponera
9 / 9 / 3
Регистрация: 22.04.2015
Сообщений: 37
Завершенные тесты: 1
06.07.2015, 11:21 #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
for (int i = 0; i < uchenik; i++)
    {
        cout << "Vvedite famili " << endl;
        cin >> stud[i].name;
        cout << "Vvedite inicial " << endl;
        cin >> stud[i].inici;
        cout << "Vvedite nomer grup " << endl;
        cin >> stud[i].group;
        cout << "Uspevaemost " << endl;
        for (int j = 0; j < 5; j++)
             cin >> stud[i].kol[j];
    }
1
Blesk_ov
0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 12
06.07.2015, 12:13  [ТС] #11
там не отвечали просто

Добавлено через 44 минуты
matxon, что такое loop?
0
Рыжий Лис
Просто Лис
344 / 268 / 80
Регистрация: 17.05.2012
Сообщений: 1,116
Записей в блоге: 4
06.07.2015, 12:45 #12
Цитата Сообщение от Blesk_ov Посмотреть сообщение
ответы выдает на первого правильно а на других как захочет
Переменные в начале циклов не обнуляются. Уже поправили: Как дописать код для полного функционирования? Структура "Студент"

Цитата Сообщение от Blesk_ov Посмотреть сообщение
что такое loop?
Имя метки. goto лучше не использовать.

Вместо:
C++
1
2
3
4
5
6
7
8
9
10
loop:
//...
       switch(/* */){
          //...
       default:
          goto exit;
       };
     goto loop;
exit:
    return 0;
написать это:
C++
1
2
3
4
5
6
7
8
    do {
    //...
       switch(/* */){
          //...
       default:
          return 0;
       };
    } while(true);
0
rep plz
Заблокирован
06.07.2015, 20:16 #13
goto это из низкоуровневых языков, не первый раз слышу что его лучше не использовать, но не знаю почему
0
ThePlague
101 / 101 / 61
Регистрация: 30.06.2015
Сообщений: 272
08.07.2015, 01:41 #14
rep plz, Причин много, скажем так одна из самых распространенных это: плохая читаемость кода, так как все привыкли читать код сверху вниз, а с goto получается винегрет. Есть еще масса более везких причин таких как например вот:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int main()
{
goto here;
 
for (;;)
{
    int i = 0;
    here:
        i += 10;
}
 
}
чему равно i ?
Вы "влетаете" в цикл и прибавляете к значению i + 10 не зная его предыдущего значения...

Вывод: В таких языках как С/С++ Ява и т.д. если и использовать goto то только с умом и пониманием!
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2015, 01:41
Привет! Вот еще темы с ответами:

Структура "Студент", вывести список студентов упорядоченный по порядковому номеру - C++
Cоздать структуру Student.Она должна включать в себя 3 поля: Порядковый номер , 5 оценок студента, ФИО. Нужно чтобы выводила список...

Структура "Студент", найти студентов с оценкой 4 и 5 - C++
Надо выявить студентов с оцекной 4 и 5 #include&lt;stdio.h&gt; #include&lt;string.h&gt; #include&lt;conio.h&gt; struct...

Сортировка текстового файла. Структура "Студент" - C++
В файле input.txt содержатся сведения о группе студентов в формате ФИО год рождения оценки по 5 предметам Например Иванов Иван...

Структура "Студент". Сортировка по среднему баллу - C++
Составить список учебной группы, включающий десять человек. Для каждого студента указать: фамилию и имя, дату рождения (год, месяц и...


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

Или воспользуйтесь поиском по форуму:
14
Yandex
Объявления
08.07.2015, 01:41
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru