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

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

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

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

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

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

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

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

Работа с файлами. Структура "Студент" - C++
Я с файлами вообще ноль. Если кто может хотя бы куски кода отпишите. Вобщем задание: Сохранить информацию о результатах сессии. Структура...

Структура данных "Студент" - C++
Здравствуйте, задача довольно стандартна, но всё же. В общем создала я структуру для данных студентов. Но ввод получается какой-то...

Файл, структура "Студент" - C++
Работает только ввод количество студентов, не могу ввести остальные данные, что не так? #include &lt;stdio.h&gt; #include &lt;iostream.h&gt; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
101 / 101 / 61
Регистрация: 30.06.2015
Сообщений: 272
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
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; //  флажок надо возвращать в исходный вид :) а то он у вас постоянно поднят :)
}
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
7 / 7 / 3
Регистрация: 22.04.2015
Сообщений: 29
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?
Рыжий Лис
Просто Лис
262 / 209 / 55
Регистрация: 17.05.2012
Сообщений: 849
Записей в блоге: 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++
Помогите пожалуйста разобраться в программе Тест. // test.cpp : Defines the entry point for the console application. // #include...

Структура "Студент" - C++
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main() { struct...

Структура "Студент" - C++
Ребят, проверьте, пожалуйста, этот код, а то у меня не хочет она работать: #include&lt;iostream&gt; #include&lt;string.h&gt; #include&lt;cstdlib&gt; ...

Структура "Студент" - C++
Описать структуру с именем STUDENT, содержащую следующие поля: NAME – фамилия и инициалы; GROUP – номер группы; SES – успеваемость...


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

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

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