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

Получить отсортированных людей по курсам, далее по группам

22.12.2009, 23:39. Показов 761. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем есть такая прога:
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
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
#include<io.h>
 
struct spec {int code;
         char  text [10];
            };
 
struct student {char fac [10],
                 kaf [10],
                     fio [20];
                     spec sp;
                     int kurs;
                     char group[10];
                     int marks[3];
        };
 
struct list_elem {
             struct student data;
                 struct list_elem *next;
             };
 
struct student st;
struct list_elem *s0,*s1,*s2,*se;
int i,n,k,j;
char c, caf[10];
 
void main ()
{clrscr();
s1=new(struct list_elem);
s0=s1;
do {
 
   printf ("=================== Add student =================== \n");
   printf ("Faculty: ");         scanf("%s", st.fac);
   printf ("Kafedra: ");         scanf("%s", st.kaf);
   printf ("Name: ");            scanf("%s", st.fio);
   printf ("Speciality Code: "); scanf("%i", st.sp.code);
   printf ("           Text: "); scanf("%s", st.sp.text);
   printf ("Kurs: ");            scanf("%i", st.kurs);
   printf ("Group: ");           scanf("%s", st.group);
   for (int j=0; j<3; j++)
     {printf ("Ocеnka za %i ekzamen: ", j+1);
      scanf ("%i", st.marks[j]); };
 
   s1->next=(struct list_elem*)malloc(sizeof(struct list_elem));
   s1->data=st;
   s1=s1->next;
   printf ("Continue? (Y/N) \n" );  c=getch();
}
while (c=='y' || c=='Y');
se=s1;
 
 
s1=s0;
do
 {if (islower(s1->data.fio[0]))
  s1->data.fio[0]=toupper(s1->data.fio[0]);
  for(j=1;j<strlen(s1->data.fio);j++)
   if(isupper(s1->data.fio[j]))
    s1->data.fio[j]=tolower(s1->data.fio[j]);
  s1=s1->next;}
while (s1!=se);
 
s1=s0;
do{
   s2=s1;
    do{
       if(strcmp(s1->data.fio,s2->data.fio)>0)
         {st=s1->data;
          s1->data=s2->data;
          s2->data=st; }
          s2=s2->next;
      }
    while(s2!=se);
  s1=s1->next;
 }
while(s1!=se);
 
s1=s0;
do{
 strcpy(caf,s1->data.kaf);
   s2=s1->next;
   do{
   if(strcmp(caf,s2->data.kaf)==0)
    {s1=s1->next;
     st=s1->data;
     s1->data=s2->data;
     s2->data=st;}
   s2=s2->next;
      }
      while (s2!=se);
 s1=s1->next;}
while (s1!=se);
 
printf("\nFaculty  Kafedra    Name   Spec.code   Spec.text  Kurs   Group     Marks \n"  );
printf("----------------------------------------------------------------------------\n");
 
s1=s0;
do{
printf("%s   |   %s  |   %s  |   %i  |   %s  |   %i  |   %s  |   %i, %i, %i \n",
         (*s1).data.fac,(*s1).data.kaf,(*s1).data.fio,(*s1).data.sp.code,(*s1).data.sp.text,(*s1).data.kurs,
         (*s1).data.group,(*s1).data.marks[0],(*s1).data.marks[1],(*s1).data.marks[2]);
   s1=s1->next;
   }
while (s1!=se);
getch();
}
Она после ввода сортирует людей по кафедрам и в пределах каждой сортирует их по алфавиту.
Мне же из этого нужно получить отсортированных людей по курсам, далее по группам и в пределах группы сортировать имя по алфавиту. Можно ли переделать, если да, то как?
Спасибо огромное заранее. Мне нужно хотя бы объяснить как работает прога, остальное думаю сам сделаю, но иногда бывает проще просто переделать, чем объяснять как оно работает. Прошу что-то одно... Еще раз спасибо всем откликнувшимся...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2009, 23:39
Ответы с готовыми решениями:

Автораспределение людей по группам по 15 человек
Такой вопрос. Как реализовать авто распределение. Нужно сделать что бы программа сама выдавала...

Пилю систему разпознования транспорных стреств, людей и так далее - Надо натаскать ИИ
Всем привет! Меня зовут Богдан Мне дали задачку запилить систему Видеонаблюдения, которая бы...

Студент изучает химию, математику и биологию. Он оценивает, что вероятность получить «5» по этим курсам равна соответственно 1/2, 1/3, 1/4. В предполо
Студент изучает химию, математику и биологию. Он оценивает, что вероятность получить «5» по этим...

[R] Есть Z отсортированных в порядке неубывания массива A и B. Получить отсортированный по небыванию массив C
Доброе время суток, помогите с задачкой. Есть Z отсортированных в порядке неубывания массива A и...

1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
23.12.2009, 05:53 2
C
1
scanf("%i", st.kurs);
адрес должен быть &st.kurs

C
1
scanf("%i", st.sp.code);
тоже

C
1
scanf ("%i", st.marks[j]);
ещё

там ещё для одного студента будет выделено два узла (для двух - три и так далее)

C
1
(*s1).data.fac
это можно записать s1->data.fac и все такие же тоже

Цитата Сообщение от bobby2008
Мне нужно хотя бы объяснить как работает прога, остальное думаю сам сделаю
у него нет вложенных сортировок
после сортировки по курсам (простая, прямо как у него, только вместо фамилий сравнение курсов) нужно определять пределы одного курса и в них проводить такую же сортировку групп (как у него уже, только читать не фамилии, а группы - тоже через strcmp), потом, определяя границы одной группы, сортировать имена в её пределах

тут был пример rsdn'овский
(STL LIST SORT) Сортировка по некольким критериям
0
23.12.2009, 05:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2009, 05:53
Помогаю со студенческими работами здесь

Как построить запрос что бы получить срез последних цен по группам
Имеется 3 таблицы 1 Товары id ключ name наименование 2 Склады id ключ name наименование ...

Из двух отсортированных в убывающем порядке массивов получить новый массив, отсортированный в том же порядке
Народ помогите мне исправить вот этот код чтоб он правильно работал Program lab_6(Input,Output);...

Из двух отсортированных в убывающем порядке массивов получить новый массив, отсортированный в том же порядке
Народ,помогите пожалуйста, нужно из Из двух отсортированных в убывающем порядке...

Из двух отсортированных в убывающем порядке массивов получить новый массив, отсортированный в том же порядке
Из двух отсортированных в убывающем порядке массивов получить новый массив, отсортированный в том...

Получить список папок и вложенных папок, отсортированных по размеру
Как можно получить список папок и вложенных папок, отсортированных по размеру

ВК API. Как получить ID людей при поиске?
Здравствуйте, хочу получить идентификаторы людей при поиске людей в вк, но ответ не приходит, вот...


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

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