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

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

Восстановить пароль Регистрация
 
Ryzhiy_Ezhik
 Аватар для Ryzhiy_Ezhik
0 / 0 / 0
Регистрация: 21.02.2012
Сообщений: 22
14.05.2012, 06:27     Вывести на экран отсортированный массив структур. #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();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2012, 06:27     Вывести на экран отсортированный массив структур.
Посмотрите здесь:

[C++] Отсортировать и вывести на экран массив структур C++
Пользовательская функция, выводящая массив на экран. Вывести на экран все четыре массива, используя функцию C++
C++ Дан массив натуральных чисел А[m,n] и число а. Вывести этот массив на экран, вычислит количество элементов равных а и вывести их индексы
Заменяемые значения вывести в массив В. Вывести на экран полученную матрицу и массив B. C++
C++ Вывести массив на экран в виде таблицы, в конце каждой строки надо вывести минимальный элемент
C++ Вывести массив отсортированный по пузырьку
C++ Массив структур: вывести список товаров, стоимость которых превышает 100 000 рублей
На экран не выводится отсортированный массив C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 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;
 
}
Yandex
Объявления
14.05.2012, 09:16     Вывести на экран отсортированный массив структур.
Ответ Создать тему
Опции темы

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