Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2014, 12:36   #1
lusia7
Пользователь
 
Регистрация: 25.11.2014
Сообщений: 12
По умолчанию Сортировка массива структур в Си

Имеется следующая информация о каждом из n учеников: ФИО,пол,возраст,класс. Написать программу, которая вводит эту информацию и вывести информацию,отсортированную по полям: класс,ФИО.


Код:
#include <stdio.h>
struct school
{char surname[20];
char name[10];
char fathername[10];
char pol[1];
int vozrast;
int class;};
int main()
{struct school A[5];//массив учеников
int i;
printf("Введите информацию о учениках\n");
printf("Фамилия имя отчество пол возраст класс\n");
for (i=0;i<5;i++)
{scanf("%s%s%s%s%d%d",&A[i].surname,&A[i].name,&A[i].fathername,&A[i].pol,&A[i].vozrast,&A[i].class);
Что нужно добавить, чтобы выводилась информация, отсортированная по полям?
lusia7 вне форума Ответить с цитированием
Старый 27.11.2014, 13:13   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

сортировку
p51x вне форума Ответить с цитированием
Старый 27.11.2014, 14:44   #3
lusia7
Пользователь
 
Регистрация: 25.11.2014
Сообщений: 12
По умолчанию

Как ее реализовать?
lusia7 вне форума Ответить с цитированием
Старый 27.11.2014, 15:23   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

какую из них вы хотите реализовывать?
p51x вне форума Ответить с цитированием
Старый 27.11.2014, 15:49   #5
lusia7
Пользователь
 
Регистрация: 25.11.2014
Сообщений: 12
По умолчанию

Например, сортировку методом пузырька. Но мне нужно, чтобы сортировка производилась одновременно и по фамилии, и по имени, и по отчеству, и по классу. Как это сделать, я не знаю.
lusia7 вне форума Ответить с цитированием
Старый 27.11.2014, 16:00   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Одновременно это как? Покажите пример.
p51x вне форума Ответить с цитированием
Старый 27.11.2014, 16:54   #7
lusia7
Пользователь
 
Регистрация: 25.11.2014
Сообщений: 12
По умолчанию

Сортировка должна происходить примерно таким образом:
1 Андреев Артем Иванович
1 Петров Петр Петрович
2 Горохов Иван Иванович
2 Сидорова Татьяна Николаевна
2 Яценко Яна Яковлевна
где 1,2-класс.
lusia7 вне форума Ответить с цитированием
Старый 27.11.2014, 17:38   #8
Zenon
Пользователь
 
Регистрация: 03.07.2014
Сообщений: 32
По умолчанию

Используйте функцию сравнения, которая сначала сравнивает классы, если они равны, сравнивает фамилии, если они равны, сравнивает имена...

Например, сравнение i-го и j-го элементов массива A, если функция должна возвращать -1 / 0 / +1:
Код:
int compare(school *A, int i, int j)
{
  if (A[i].classNumber < A[j].classNumber)
    return -1;
  if (A[i].classNumber > A[j].classNumber)
    return +1;
  int r= strcmp(A[i].surname, A[j].surname);
  if (r != 0)
    return r;
  r= strcmp(A[i].name, A[j].name);  
  if (r != 0)
    return r;
  return strcmp(A[i].fathername, A[j].fathername);  
}
Только переименуйте название поля структуры "class" в "classNumber". class - это ключевое слово, компилятор будет ругаться.
Zenon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива структур fonRocki Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 24.04.2012 23:00
Сортировка массива структур MrBobyara Помощь студентам 4 16.06.2010 11:48
сортировка массива структур silence_master Помощь студентам 4 05.05.2010 21:26
Сортировка массива структур. nec117 Общие вопросы C/C++ 5 22.02.2009 18:01
Сортировка массива структур arturka Помощь студентам 1 21.06.2008 14:15