С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

челночная сортировка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ написать программу которая вычисляет среднее арифметическое последовательности отрицательных дробных чисел, вводимых с клавиатуры http://www.cyberforum.ru/cpp-beginners/thread591648.html
Друзья, помогите разобраться. Компилятор выдает ошибку в 16 строке, а я не понимаю в чем дело. За ранее спасибо и благодарю) написать программу которая вычисляет среднее арифметическое...
C++ Вставить рекурсию Есть программа, она записывает число задом на перед, её нужно записать при помощи рекурсии #include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; int Reverse(int n)... http://www.cyberforum.ru/cpp-beginners/thread591625.html
C++ Усовершенствование программы с массивом
Задача: Определить порядковые номера, считая от начала текста, определенных символов, которые задаются в исходных данных, заменить пробелами все такие символы, имеющие нечетные номера. Проблема:...
Работа с динамическими структурами данных C++
Клиенты железнодорожной кассы, для каждого из них известны фамилия, номер поезда, дата отправление
C++ Моделирование случайных величин http://www.cyberforum.ru/cpp-beginners/thread591604.html
С помощью датчика случайных чисел получить 50 целых чисел, равных 0 или 1, и подсчитать количество единиц и количество нулей.
C++ Найти максимальную сумму элементов строки матрицы Данный двумерный массив. найти: а) максимальную сумму элементов строки; б) минимальную сумму элементов столбца подробнее

Показать сообщение отдельно
ПаЗитиФкА
3 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 51

челночная сортировка - C++

30.05.2012, 20:49. Просмотров 829. Ответов 1
Метки (Все метки)

доброго времени суток!
кому не сложно объяснить по поводу алгоритма челночной сортировки?
задание: сортировка списка студентов челночным методом по двум ключам одновременно: по возрастанию номеров групп и для группы фамилии в алфавитном порядке.
как отсортировать по номеру группы - понятно, а вот как одновременно с этим фамилии упорядочить?
и даже если по отдельности, то как просто отсортировать по фамилиям?

Добавлено через 1 час 46 минут
вот код программы. Тут список студентов (фамилия, номер группы, оценки по трем предметам). Собственно, отсортировать нужно его. Может кому не сложно посмотреть челночную сортировку для этой программы.

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
136
137
138
139
140
141
142
143
144
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<math.h>
#include <dos.h>
struct student
{
    char FIO[25];
    int group;
    int s[3];
};
int  k, l, s[3], group;
char FIO[25];
 
FILE *f;
void input ()
{
    student st;
  k=0;
   char s='\0';
    //clrscr();
    f=fopen ("students.txt" , "wb");
    printf ("\n vvedite kolichestvo studentov:");
   scanf ("%d", &l);
    fflush(stdin);
       while (k<l)
        {     fflush(stdin);
            printf ("\n Vvedite familiyu: "); 
        gets(st.FIO);
        printf ("\n Vvedite gruppy:");
        fflush(stdin);
        scanf ("%d", &st.group);
        printf ("\n Vvedite ocenky: ");
        fflush(stdin);
        for (int i=0; i<3; i++)
        scanf ("%d", &st.s[i]);
        fwrite(&st, sizeof(st),1, f);
        k++;};
         fclose (f);
};
 
 
void dob ()
  { student st;
// clrscr();
 f=fopen("students.txt", "ab+"); 
  if(!f)
  {printf("fail ne naiden! nazhmite lubuy klavishu.");
  getch(); }
  else
    {do 
        { printf ("\n Vvedite familiyu: ");  fflush(stdin);
        gets(st.FIO);
        printf ("\n Vvedite gruppy:");  fflush(stdin);
        scanf ("%d", &st.group);
        printf ("\n Vvedite ocenky: ");
        for (int i=0; i<3; i++)
        scanf ("%d", &st.s[i]);
        fwrite(&st, sizeof(st),1, f);
       printf("\n prodolzhit' vvod:\n 1.Da \n 2. Net");
     scanf("%d", &l);
     }
       while (l==1);     
    fclose (f);}
}
 
 
 
void sort ()
  { student st;
// clrscr();
 f=fopen("students.txt", "rb");
 int min,  max; char luchst[25], hudst[25];
   int m;
 
  if(!f)
  {printf("fail ne naiden! nazhmite lubuy klavishu.");
  getch(); }
  else
   { fread(&st, sizeof(student), 1,f);
        printf("\n vvedite nomer predmeta, dannye po kotoromu huzhno vyvesti: \n") ;
scanf("%d", &m);
 fflush(stdin);
 max=st.s[m]; min=st.s[m]; strcpy(luchst,st.FIO); strcpy(hudst, st.FIO);
 while (fread(&st, sizeof(st), 1,f)) 
{
if (max<st.s[m])
{max=st.s[m]; strcpy(luchst,st.FIO);};
if (min>st.s[m])
{min=st.s[m]; strcpy(hudst, st.FIO);};
};
printf  ("%s luchiy student\n", luchst);
printf ("%s hudshiy student", hudst);
};
 
fclose (f);
}
 
void prosm ()
    { student st;
    int i;
 //clrscr();
  f=fopen("students.txt", "rb"); 
  if(!f)
  {printf("fail ne naiden! nazhmite lubuy klavishu.");
  getch(); }
  else  
  {printf("\nЪДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДВДДДДДДДДДДДДДї");
   printf("\nіFamilie I.O.             іgruppaіocenki       і");
   printf("\nГДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДБДДДДДДДДДДДДДґ");
   while(fread(&st, sizeof(st), 1,f))
   {printf("\nі%-25sі%-6dі",st.FIO,st.group);
   for (i=0; i<3; i++)
   printf ("%2d", st.s[i]);
   printf ("       і");};
   printf("\nАДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДБДДДДДДДДДДДДДЩ");
   fflush(stdin);
   fclose(f);
   getch(); } }
 
 
 int main ()
    {int s=0, z;
      f=fopen("students.txt", "rb+"); 
  if(f)
  {do
    { //clrscr();
    printf ("\n fail nayden! \n viberite deistvie: \n 1. dobavit' informaciy. \n 2. pokazat' reyting. \n 3. posmotret' vse \n 4. sozdat' fail zanovo \n 5. Exit. \n");
    scanf ("%d", &s);
    switch(s)
    { case 1: dob (); break;
      case 2: sort (); break;
      case 3: prosm (); break;
      case 4: input (); break;
      }
      }
      while (s!=5);}
      else { printf("fail ne naiden! sozdat' fail? 1. Da 2. Net ");
     scanf("%d", &z);
     if (z==1) input ();}
     fclose(f);
      getch();
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.