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

Описать структуру с именем STUDENT. Не работает сортировка

27.08.2014, 17:51. Показов 1091. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот задача:
1 .Описать структуру с именем STUDENT,содержащую следующие поля:
•фамилия и инициалы;
•номер группы;
•успеваемость(массив из пяти элементов).
2 .Написать программу, выполняющую следующие действия:
•ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT;записи должны быть упорядочены по возрастанию номера группы;
•вывод на дисплей фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4,0;
•если таких студентов нет, вывести соответствующее сообщение.

Вот реализация:
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
#include<iostream>
#include<string>
using namespace std;
 
struct Student
{
    string szFamily, szInitial;
    int nNumber;
    int performance[5];
    double GPA;
};
 
void input(Student*, int);
void sort_numb(Student*, int);
void output(Student*, int);
 
int main()
{
    setlocale(0, "");
    const int nSize = 3;
    Student stud[nSize], *pS=stud;
 
    for (int i=0; i<nSize; i++) input(stud, i);
 
    //sort_numb(stud, nSize);
 
    bool fl=false;
    for (int i=0; i<nSize; i++)
    {
        if ( ((pS+i)->GPA) >= 4.0) { fl=true; output(stud, i);}
    }
    if (!fl) cout<<"\nТаких студентов нет.\n";
 
    return 0;
}
 
void input(Student *p, int n)
{
    cout<<"\nВведите фамилию студента ";
    cin>>(p+n)->szFamily;
    cout<<"\nВведите инициалы студента ";
    cin>>(p+n)->szInitial;
    cout<<"\nВведите группу студента ";
    cin>>(p+n)->nNumber;
    cout<<"\nВведите оценки студента ";
    double sum=0;
    for (int i=0; i<5; i++)
    {
        cout<<"\nВведите оценку "<<i+1<<": ";
        cin>>(p+n)->performance[i];
        sum+=(p+n)->performance[i];
    }
    (p+n)->GPA = sum/5;
}
 
void sort_numb(Student *p, int s)
{
    for (int i=1; i<s; i++)
    {
        Student ins = *(p+i); int j=i-1;
        while (j>=0 && ((ins.nNumber)< ((p+j)->nNumber)))
        {
            (p+j+1)->szFamily = (p+j)->szFamily;
            (p+j+1)->szInitial = (p+j)->szInitial;
            (p+j+1)->nNumber = (p+j)->nNumber;
            for (int k=0; k<5; k++) (p+j+1)->performance[k] = (p+j)->performance[k];
            (p+j+1)->GPA = (p+j)->GPA; 
        }
        (p+j+1)->szFamily = ins.szFamily;
        (p+j+1)->szInitial = ins.szInitial;
        (p+j+1)->nNumber = ins.nNumber;
        for (int k=0; k<5; k++) (p+j+1)->performance[k] = ins.performance[k];
        (p+j+1)->GPA = ins.GPA;
    }
}
 
void output(Student *p, int n)
{
    cout<<"\n"<<(p+n)->szFamily<<"\n"<<(p+n)->szInitial
        <<"\n"<<(p+n)->nNumber<<"\n";
    for (int i=0; i<5; i++) cout<<(p+n)->performance[i]<<" ";
    cout<<"\n"<<(p+n)->GPA;
}
Если раскомментировать //sort_numb(stud, nSize); программа виснет. Что не так?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.08.2014, 17:51
Ответы с готовыми решениями:

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

Описать структуру с именем STUDENT
как подогнать это 1. Описать структуру с именем STUDENT, содержащую следующие поля: • NAME -...

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

Описать структуру с именем STUDENT
помогите,пожалуйста! написала прогу,она не работает(((( #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt;...

7
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
27.08.2014, 18:30 2
Лучший ответ Сообщение было отмечено EfimKR как решение

Решение

Цитата Сообщение от EfimKR Посмотреть сообщение
while (j>=0 && ((ins.nNumber)< ((p+j)->nNumber)))
как отсюда выходим? j не меняется

....оформление ппц, не знаю как другим, но
писать вот так в 1 строку - это ппц....
Цитата Сообщение от EfimKR Посмотреть сообщение
for (int k=0; k<5; k++) (p+j+1)->performance[k] = (p+j)->performance[k];
Цитата Сообщение от EfimKR Посмотреть сообщение
Student ins = *(p+i); int j=i-1;
Добавлено через 2 минуты
и вот это (p+j+1) .... почему не p[j+1] нагляднее же, сразу понятно что p - массив, а так поди разбирай где у вас указатель, где что...
1
57 / 30 / 13
Регистрация: 24.06.2014
Сообщений: 255
Записей в блоге: 1
27.08.2014, 18:31  [ТС] 3
dzrkot, точно)
А мне норм оформление. Строки короткие. И операции просты.
0
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
27.08.2014, 18:33 4
Цитата Сообщение от EfimKR Посмотреть сообщение
А мне норм оформление. Строки короткие. И операции просты.
ну это вам - вы же код писали, думаю многие согласятся что такое оформление - вырвиглаз)
0
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
27.08.2014, 18:37 5
Цитата Сообщение от EfimKR Посмотреть сообщение
А мне норм оформление. Строки короткие. И операции просты.
так думать надо не только о себе,
да и код почему-то имеет привычку меняться/дописываться/переписываться и Вы сами потом запутаетесь
0
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
27.08.2014, 18:51 6
я не просто так к оформлению придрался - дали мне тут проект, там пару тысяч строк кода написанных по такому же принципу, где-то в 1 строку - где if(){} в строке до 3 штук, это просто АД.
Если общепринятые нормы, если какой-то оператор выполняется, принято перенести и сдвинуть в сторону.
Вот у вас скажем for() и после него что-то идёт, вы пишите в 1 строку, а если не вмещается в 1 строку, вы сносите, т.е. то так то эдак... Вы зря к этому относитесь халатно, какого такие вещи читать и рефакторить?
Миниатюры
Описать структуру с именем STUDENT. Не работает сортировка  
0
57 / 30 / 13
Регистрация: 24.06.2014
Сообщений: 255
Записей в блоге: 1
27.08.2014, 19:00  [ТС] 7
Капец, задание для себя делал - набросились прям)).
Форматирую обычно код.
0
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
27.08.2014, 19:04 8
Цитата Сообщение от EfimKR Посмотреть сообщение
Капец, задание для себя делал - набросились прям)).
Форматирую обычно код.
да)) даже если для себя - привычку вырабатывайте))

Не по теме:

мне это нафиг не надо, всё для вас стараюсь вообщем-т@)

0
27.08.2014, 19:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.08.2014, 19:04
Помогаю со студенческими работами здесь

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

Описать структуру с именем STUDENT
// sub22.cpp: определяет точку входа для консольного приложения. //Вариант 1 //1. Описать...

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

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

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

Описать структуру с именем STUDENT
Ребята, помогите пожалуйста решить. Я в этом деле новичок, и сам никак не справлюсь. 2. Описать...


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

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