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

Реализовать структуру "Student"

12.01.2016, 21:33. Показов 1712. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Описать структуру с именем STUDENT, содержащую следующие поля: · фамилия и инициалы; · номер группы; · успеваемость (массив из пяти элементов). 2.) Написать программу, выполняющую следующие действия: · ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT, записи должны быть упорядочены по алфавиту; · вывод на дисплей фамилий и номеров групп для всех студентов, имеющих хотя бы одну оценку 2; · если таких студентов нет, вывести соответствующее сообщение.
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
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
 
struct Student
{char *name;
 int group;
 int *ses[5];
};
 
int _tmain(int argc, _TCHAR* argv[])
{   setlocale(LC_ALL, "russian");
    const int n = 3;
    Student stud1[n];
    
    for (int i = 0; i < n; i++) {
        cout << "Vvedite FIO " << endl;
        cin >> stud1[i].name;
        cout << "Vvedite nomer gruppbl "<<endl;
        cin >> stud1[i].group;
        for (int j = 0; j<5; j++) {
            cout << "Vvedite yspevaemost studenta "<<j+1<<"-ого predmeta "<<endl;
            cin >> stud1[i].ses[j];
        }
    }
 
 
    return 0;
 
}
- дошла до объявления, но дальше не могу дойти, примеры искала ничего путного нет и не смогу разобраться
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2016, 21:33
Ответы с готовыми решениями:

Реализовать структуру Student
HELP GUYS :help: Следующие задания требуется решить с использованием классов.При этом...

Реализовать структуру Student (не работает вывод на консоль - найти и исправить ошибки в коде)
Описать структуру с именем STUDENT, содержащую следующие поля:-фамилия и инициалы;-номер...

Реализовать структуру "Student"
Создайте программу для ввода и вывода фамилий и оценок студентов. Введите не менее 10 студентов....

Создать структуру Student
Не могу никак понять тему структуры, а тут сразу ещё и список, помогите написать код ка С++ : ...

Описать структуру Student
Описать структуру Student, которая имеет следующие поля: фамилия,группа,средний бал...

8
103 / 82 / 78
Регистрация: 11.05.2015
Сообщений: 201
12.01.2016, 22:40 2
У тебя ошибка в коде есть в следующей строчке.
Цитата Сообщение от sodaily Посмотреть сообщение
cin >> stud1[i].name;
В структуре name это просто не инициализированный указатель. Что бы этого избежать можно либо использовать массив
C++
1
char name[20]
, либо выделять память динамически
C++
1
stud1[i].name = new char [20]; cin>>stud1[i].name;
, либо вместо char использовать string.
Также похожая ошибка в
Цитата Сообщение от sodaily Посмотреть сообщение
cin >> stud1[i].ses[j];
так как ses - это массив из указателей, а не из целых чисел.
C++
1
int ses[5]
0
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 121
13.01.2016, 23:50  [ТС] 3
ivan37, ничего не выводится, я ввожу данные после чего закрывается окошко и все

Добавлено через 5 минут
ivan37, попробовала добавить условие
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
#include "stdafx.h"
#include <string.h>
#include <iostream>
#include <conio.h>
using namespace std;
 
struct Student
{char name[20];
 int group;
 int ses[5];
};
 
int _tmain(int argc, _TCHAR* argv[])
{   setlocale(LC_ALL, "russian");
    const int n = 1;
    Student stud1[n];
    
    for (int i = 0; i < n; i++) {
        cout << "Vvedite FIO " << endl;
        cin >> stud1[i].name;
        cout << "Vvedite nomer gruppbl "<<endl;
        cin >> stud1[i].group;
        for (int i = 0; i<5; i++) {
            cout << "Vvedite yspevaemost studenta "<<i+1<<"-ого predmeta "<<endl;
            cin >> stud1[i].ses[i];
        }}
        for (int i = 0; i < n; i++)
        {
 for (int j = 0; j<5; j++) {
            if (stud1[i].ses[i] < 3)
                {
                    cout << "Фамилия студента с оценкой 2  " << stud1[i].name << endl;
      
                }
 
                else if (i == (n - 1))
                {
                        cout << "Студетов с 2 нет !" << endl;
                }
        
    }
        }
 
    return 0;
    _getch();
}
- не могу даже результат посмотреть
0
103 / 82 / 78
Регистрация: 11.05.2015
Сообщений: 201
14.01.2016, 00:03 4
Что бы окошко сразу не закрывалось, _getch надо было поставить перед return. Вот пример программы, где ты сначала вводишь студентов и их оценки, а затем выводится все что ты ввела.
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
#include <iostream>
 
using namespace std;
 
struct Student
{
    char name[20];
    int group;
    int ses[5];
};
 
void input(Student& s)
{
    cout << "Vvedite FIO " << endl;
    cin >> s.name;
    cout << "Vvedite nomer gruppbl "<<endl;
    cin >> s.group;
    for (int j = 0; j<5; j++) 
    {
        cout << "Vvedite yspevaemost studenta "<<j+1<<"-ого predmeta "<<endl;
        cin >> s.ses[j];
    }
}
 
void display(const Student& s)
{
    cout<<"fio: "<<s.name<<" group: "<<s.group<<" yspevaemost (";
    for (int i=0; i<5; i++)
        cout<<s.ses[i]<<" ";
    cout<<")\n";
}
 
int main()
{
    setlocale(LC_ALL, "russian");
    const int n = 3;
    Student stud1[n];
    for (int i = 0; i < n; i++) 
        input(stud1[i]);
    for (int i=0; i<n; i++)
        display(stud1[i]);
    system("pause");
    return 0;
 
}
0
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 121
14.01.2016, 00:27  [ТС] 5
ivan37, спасибо, только что поняла ошибку

Добавлено через 22 минуты
ivan37,
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
#include "stdafx.h"
#include <string.h>
#include <iostream>
#include <conio.h>
using namespace std;
 
struct Student
{char name[20];
 int group;
 int ses[5];
};
 
int _tmain(int argc, _TCHAR* argv[])
{   
    setlocale(LC_ALL, "russian");
    const int n = 3;
    Student stud1[n];
    
    for (int i = 0; i < n; i++) {
        cout << "Vvedite FIO " << endl;
        cin >> stud1[i].name;
        cout << "Vvedite nomer gruppbl "<<endl;
        cin >> stud1[i].group;
        for (int i = 0; i<5; i++) {
            cout << "Vvedite yspevaemost studenta "<<i+1<<"-ого predmeta "<<endl;
            cin >> stud1[i].ses[i];
        }}
     
    int k=0;
    for (int i = 0; i < n; i++)
        {
 for (int j = 0; j<5; j++) 
 k+=stud1[i].ses[i];
 {
            if (stud1[i].ses[i] = 2)
               { 
                   k=k+1;}
                if (k>=1)   
                    {cout << "Фамилия студента с оценкой 2  " << stud1[i].name << endl;
      
                }
 
                else if (i == (n - 1))
                {
                        cout << "Студетов с 2 нет !" << endl;
                }
        
    }
        }
_getch();
    return 0;
    
}
- посмотрите пожалуйста условие, где ошибка
0
103 / 82 / 78
Регистрация: 11.05.2015
Сообщений: 201
14.01.2016, 00:48 6
Во-первых, у тебя ошибка при вводе оценок, так как переменная i используется как счетчик в двух циклах.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    for (int i = 0; i < n; i++) 
    {
        cout << "Vvedite FIO " << endl;
        cin >> stud1[i].name;
        cout << "Vvedite nomer gruppbl "<<endl;
        cin >> stud1[i].group;
        for (int j = 0; j<5; j++) 
        {
            cout << "Vvedite yspevaemost studenta "<<j+1<<"-ого predmeta "<<endl;
            cin >> stud1[i].ses[j];
        }
    }
И еще дальше в коде у тебя несколько ошибок связанных с индексами i и j.
Цитата Сообщение от sodaily Посмотреть сообщение
if (stud1[i].ses[i] = 2)
В этой строчке у тебя происходит присваивание, а не сравнение.
За что у тебя отвечает переменная k? И еще, не могла бы ты использовать выравнивание кода, потому что так его очень тяжело читать и находить ошибки.
0
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 121
14.01.2016, 00:51  [ТС] 7
ivan37,k-счетчик подсчитывания количества двоек у студента,извините насчет кода,впредь постараюсь выравнивать
0
103 / 82 / 78
Регистрация: 11.05.2015
Сообщений: 201
14.01.2016, 01:22 8
Лучший ответ Сообщение было отмечено sodaily как решение

Решение

Вот, как вариант, для вывода студентов с двойками
C++
1
2
3
4
5
6
7
8
9
10
11
    int countStidentsWith2 = 0; // число студентов с двойкой
    for (int i = 0; i < n; i++)
        for (int j = 0; j<5; j++) 
            if (stud1[i].ses[j] == 2)
            {
                cout << "Фамилия студента с оценкой 2  " << stud1[i].name << endl;
                countStidentsWith2++;
                break;
            }
    if (countStidentsWith2 == 0)
        cout << "Студетов с 2 нет !" << endl;
1
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 121
14.01.2016, 01:25  [ТС] 9
ivan37, огромное вам спасибо, не представляете как я вам благодарна)))
0
14.01.2016, 01:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2016, 01:25
Помогаю со студенческими работами здесь

Определить структуру student
Помогите пожалуйста с задачей. Определить структуру student со следующими компонентами: фамилия,...

Создать структуру Student
программа с использованием структуры полей структур. Успеваемость студентов. Фамилия студента,...

Описать структуру STUDENT
Описать структуру с именем STUDENT, содержащую следующие поля: фамилия и инициалы; номер группы;...

Описать структуру Student
Условие задачи: Описать структуру с именем STUDENT, содержащую следующие поля: NAME - фамилия...

Описать структуру STUDENT
Помогите с программой плз Не работает почему-то //Описать структуру с именем SUDENT,...

Создать структуру Student
Создать структуру Student, содержащую следующие данные: ФИО, год рождения, оценки за сессию. В...


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

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