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

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

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

Вывести на экран отсортированный массив структур. - C++

14.05.2012, 06:27. Просмотров 518. Ответов 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
#pragma hdrstop
#pragma argsused
#include <vcl.h>
#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <dos.h>
#include <conio.h>
 
using namespace std;
//---------------------------------------------------------------------------
 
 struct STUDENT {
  char* NAME;
  int GROUP;
  float SES[5];
  };
 
 void printstud (STUDENT STUD)
 {
  static int count = 0;
  cout<<"\n"<<++ count<<"."<<STUD.NAME;
  cout.width(5);
  cout<<STUD.GROUP;
  cout.width(3);
  for (int z = 0; z < 5; z++)
   cout<<" "<<STUD.SES[z];
 }
 struct record
 {
  STUDENT STUD;
  record *prior;
  record *next;
 };
 
STUDENT STD[] = {
                {"Petrov ",123,{3,3,4,5,4}},
                {"Sidorov",234,{4,3,2,2,3}},
                {"Ivanov ",345,{4,5,4,3,4}},
                {"Popov  ",456,{2,3,4,2,4}},
                };
 
void main ()
{
 clrscr();
 
 int i,j;
 float sb[]={0,0,0,0};
 float psb;
 STUDENT ST;
 cout << endl;
 
 for (i = 0; i < 4; i++)
  { for (j = 0; j < 5; j++)
     sb[i]+=STD[i].SES[j];
    sb[i]=sb[i]/5;
  }
 
 for (i = 0; i < N-1; i++)
  for (j = i+1; j < N; j++)
   if (sb[i] > sb[j])
    {
     ST = STD[i];
     STD[i] = STD[j];
     STD[j] = ST;
 
     psb = sb[i];
     sb[i] = sb[j];
     sb[j] = psb;
    }
 
record *begin = NULL;
record *last = NULL;
record *list = NULL;
 
int n=sizeof(STD)/sizeof(STD[0]);
 
for (int i=0; i < n; i++)
 {
 last = new(record);
 (*last).STUD.NAME = STD[i].NAME;
 (*last).STUD.GROUP = STD[i].GROUP;
 for (int j=0; j < 5; j++)
   last->STUD.SES[j] = STD[i].SES[j];
 if(begin == NULL)
  {
  last->prior = NULL;
  begin = last;
  last->next = NULL;
  }
 }
 
list=begin;
cout<<endl;
while (list != NULL)
 {
  printstud(list->STUD);
  list=list->next;
 }
 
 getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2012, 06:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести на экран отсортированный массив структур. (C++):

Отсортировать и вывести на экран массив структур - C++
Помогите доделать программу, сам сделал что то,но то что это правильно сомневаюсь) В программе нужно отсортировать структуру по убыванию...

На экран не выводится отсортированный массив - C++
Пишу программу быстрой сортировки массива и не могу понять в чем проблема, а проблема заключается в том что на экран не выходит...

Вывести массив отсортированный по пузырьку - C++
Добрый день! помогите с задачей пожалуйста! Пользователь водит И количество элементов! вывести массив отсортированный по пузырьку(((...

Как объявить массив на 5 элементов, вывести на экран, проинициализировать его и снова вывести на экран? - C++
как объявить массив на 5 элементов, вывести на экран, проинициализировать его и снова вывести на экран?

Дан массив натуральных чисел А[m,n] и число а. Вывести этот массив на экран, вычислит количество элементов равных а и вывести их индексы - C++
Дан массив натуральных чисел А и часло а. Вывести этот массив на экран, обчислить количество элементов равных а и вывести их индексы. ...

Запись с файла в массив структур + вывод массива на экран - C++
void OUTPUT_clients() { ifstream ifile; ifile.open(&quot;choisestudents.dat&quot;, ios::binary);//&quot;choisestudents.dat&quot; &quot;choise60eur.dat&quot;...

1
zss
Модератор
Эксперт С++
6401 / 5967 / 1944
Регистрация: 18.12.2011
Сообщений: 15,364
Завершенные тесты: 1
14.05.2012, 09:16 #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
record *begin = NULL;
record *last = NULL;
record *prior = NULL;
record *list = NULL;
 
int n=sizeof(STD)/sizeof(STD[0]);
 
for (int i=0; i < n; i++)
{
 last = new(record);
 (*last).STUD.NAME = STD[i].NAME;
 (*last).STUD.GROUP = STD[i].GROUP;
 for (int j=0; j < 5; j++)
   last->STUD.SES[j] = STD[i].SES[j];
 last->next = NULL;
 if(begin == NULL)
  {
      last->prior = NULL;
      begin = last;
  }else
  {
       last->prior = prior;
       prior->next=last;
  }
  prior=last;
 
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2012, 09:16
Привет! Вот еще темы с ответами:

Заменяемые значения вывести в массив В. Вывести на экран полученную матрицу и массив B. - C++
Помогите пжл. Задана матрица Z(5,5). Если в строке есть хотя бы один нулевой элемент, то найти произведение всех ненулевых элементов,...

Вывести на экран все рейсы, отправляющиеся в пункт А (поиск в массиве структур по заданному полю) - C++
В задаче необходимо вывести на экран все рейсы, отправляющиеся в пункт А, введенный с клавиатуры. Собственно, неработающий код: ...

Массив структур: вывести информацию о самой молодой команде - C++
Задание по структуре. Есть информация об участниках соревнований, наименование страны, название команды, ФИО, номер, возраст, рост и вес....

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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