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

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

Восстановить пароль Регистрация
 
Blesk_ov
0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 12
06.07.2015, 10:22     Как дописать код для полного функционирования? Структура "Студент" #1
все в принципе работает с одним студентом,но есть загвоздка,если ставишь больше то он ответы выдает на первого правильно а на других как захочет!нужно то ли цикл сделать,пройдя условие для одного студента,чтоб он так же прошелся и для других по очереди!

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 минут
а ты не знаешь как сделать,чтоб норм работало?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2015, 10:22     Как дописать код для полного функционирования? Структура "Студент"
Посмотрите здесь:

Структура "Студент": переделать задачу с использованием указателей C++
C++ Структура "Студент", выбор по условию, сортировка
C++ Структура/класс "Студент". Применение конструкторов
C++ Структура "Студент". Перевести всех на следующий курс
C++ Структура "Студент", найти студентов с оценкой 4 и 5
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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 минут
Наверное я понял. У вас начинает выдавать не понятные результаты, начиная с третьего студента?
Blesk_ov
0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 12
06.07.2015, 10:34  [ТС]     Как дописать код для полного функционирования? Структура "Студент" #3
bool используется для объявления переменных для хранения логических значений, true и false.
float обозначает простой тип, используемый для хранения 32-разрядных значений с плавающей запятой.(использовал чтоб найти средний балл)

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

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

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

Добавлено через 11 минут
по другому не могу объяснить!
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
но предполагаю что он выводит всех студентов с этой группы (если имена разные). вы пробовали вводить сначала разные группы? потом разные ФИО по отдельности?
ThePlague
 Аватар для ThePlague
95 / 95 / 59
Регистрация: 30.06.2015
Сообщений: 262
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; //  флажок надо возвращать в исходный вид :) а то он у вас постоянно поднят :)
}
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;
}
Paraponera
 Аватар для Paraponera
6 / 6 / 2
Регистрация: 22.04.2015
Сообщений: 21
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];
    }
Blesk_ov
0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 12
06.07.2015, 12:13  [ТС]     Как дописать код для полного функционирования? Структура "Студент" #11
там не отвечали просто

Добавлено через 44 минуты
matxon, что такое loop?
Рыжий Лис
Просто Лис
 Аватар для Рыжий Лис
209 / 164 / 44
Регистрация: 17.05.2012
Сообщений: 611
Записей в блоге: 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);
rep plz
Заблокирован
06.07.2015, 20:16     Как дописать код для полного функционирования? Структура "Студент" #13
goto это из низкоуровневых языков, не первый раз слышу что его лучше не использовать, но не знаю почему
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2015, 01:41     Как дописать код для полного функционирования? Структура "Студент"
Еще ссылки по теме:

Структура "Студент". Сортировка по среднему баллу C++
Структура "Студент". Найти студента с минимальным доходом C++
C++ Сортировка текстового файла. Структура "Студент"

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

Или воспользуйтесь поиском по форуму:
ThePlague
 Аватар для ThePlague
95 / 95 / 59
Регистрация: 30.06.2015
Сообщений: 262
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 то только с умом и пониманием!
Yandex
Объявления
08.07.2015, 01:41     Как дописать код для полного функционирования? Структура "Студент"
Ответ Создать тему
Опции темы

Текущее время: 10:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru