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

Упорядочить список группы в алфавитном порядке - C++

Восстановить пароль Регистрация
 
ds102061
 Аватар для ds102061
2 / 2 / 2
Регистрация: 13.10.2010
Сообщений: 144
12.04.2011, 20:20     Упорядочить список группы в алфавитном порядке #1
Составить программу, которая упорядочивает список группы в алфавитном порядке. Максимальное число вводимых фамилий 30, максимальное число букв в фамилии 20.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2011, 20:20     Упорядочить список группы в алфавитном порядке
Посмотрите здесь:

Упорядочить в каждой строке текста слова в алфавитном порядке C++
C++ Упорядочить символы в исходной строке в алфавитном порядке
Упорядочить слова в алфавитном порядке на С C++
C++ Вывести список неуспевающих студентов(в алфавитном порядке)
Упорядочить массив из n символов методом пузырька в алфавитном порядке. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
13.04.2011, 03:18     Упорядочить список группы в алфавитном порядке #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
28
29
30
31
32
33
34
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int CompareStrings(const void *a, const void *b) {
  return strcmp(*(char**)a, *(char**)b);
}
 
int main(int argc, char *argv[]) {
  size_t max_list_size = 30;
  size_t list_size = 0;
  size_t buffer_size = 1024;
  size_t i;
  char **list;
  list = (char**)malloc(sizeof(char*) * max_list_size);
 
  char *buffer = (char*)malloc(buffer_size);
  while (fgets(buffer, buffer_size, stdin) && list_size < max_list_size) {
    size_t buffer_length = strlen(buffer);
    list[list_size++] = strncpy((char*)malloc(buffer_length), buffer,
                                buffer_length - 1);
  }
  free(buffer);
 
  qsort(list, list_size, sizeof(char*), CompareStrings);
 
  for (i = 0; i < list_size; ++i)
    printf("%s\n", list[i]);
 
  for (i = 0; i < list_size; ++i)
    free(list[i]);
  free(list);
  return 0;
}
ds102061
 Аватар для ds102061
2 / 2 / 2
Регистрация: 13.10.2010
Сообщений: 144
25.04.2011, 18:56  [ТС]     Упорядочить список группы в алфавитном порядке #3
как остановить программу?
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
25.04.2011, 19:00     Упорядочить список группы в алфавитном порядке #4
Прервать выполнение консольной программы можно сочетанием клавиш Ctrl+C.
ds102061
 Аватар для ds102061
2 / 2 / 2
Регистрация: 13.10.2010
Сообщений: 144
25.04.2011, 19:12  [ТС]     Упорядочить список группы в алфавитном порядке #5
программа что-то не хочет работать
программа спрашивает 31 раз и в конце просто СИ закрывается
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
25.04.2011, 19:27     Упорядочить список группы в алфавитном порядке #6
Остановить добавление строк можно символом конца потока вместо ввода строки. Этот символ вставляется сочетанием клавиш в Windows - Ctrl+Z, в линукс/юникс - Ctrl+D.

Действительно. В цикле надо поменять местами условия. Тогда не будет лишний раз спрашивать.
C
1
while (list_size < max_list_size && fgets(buffer, buffer_size, stdin)) {
ds102061
 Аватар для ds102061
2 / 2 / 2
Регистрация: 13.10.2010
Сообщений: 144
25.04.2011, 20:43  [ТС]     Упорядочить список группы в алфавитном порядке #7
все равно си закрывается в конце
Xtir
25.04.2011, 20:59
  #8

Не по теме:

а есть разница между int и size_t?

neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
25.04.2011, 21:00     Упорядочить список группы в алфавитном порядке #9
есть.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
25.04.2011, 21:07     Упорядочить список группы в алфавитном порядке #10
Цитата Сообщение от ds102061 Посмотреть сообщение
все равно си закрывается в конце
Закрывается не "си", а терминал, в котором выполняется программа, после завершения работы этой самой программы. Запустите терминал (в винде это cmd) и запустите из него программу. Ну или добавьте в конце кода программы, но перед "return 0;" ввод какой угодно переменной, например scanf("%d", &i);

Не по теме:

Цитата Сообщение от Xtir Посмотреть сообщение
Не по теме:
а есть разница между int и size_t?
Да.

ds102061
 Аватар для ds102061
2 / 2 / 2
Регистрация: 13.10.2010
Сообщений: 144
17.05.2011, 21:26  [ТС]     Упорядочить список группы в алфавитном порядке #11
Цитата Сообщение от lemegeton Посмотреть сообщение
Ну или добавьте в конце кода программы, но перед "return 0;" ввод какой угодно переменной, например scanf("%d", &i);.
все равно закрывается СИ, а где расположен cmd
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
17.05.2011, 21:32     Упорядочить список группы в алфавитном порядке #12
..
пуск - выполнить - cmd.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2011, 15:49     Упорядочить список группы в алфавитном порядке
Еще ссылки по теме:

Составить в алфавитном порядке список всех слов, встречающихся в тексте C++
C++ Дается строка символов, упорядочить символы в алфавитном порядке
Упорядочить слова в алфавитном порядке C++

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

Или воспользуйтесь поиском по форуму:
ds102061
 Аватар для ds102061
2 / 2 / 2
Регистрация: 13.10.2010
Сообщений: 144
29.05.2011, 15:49  [ТС]     Упорядочить список группы в алфавитном порядке #13
что означает
C
1
2
 free(buffer);
qsort(list, list_size, sizeof(char*), CompareStrings);
разъясните пожалуйста

Добавлено через 31 минуту
после остановки с помощью Ctrl+Z рузультат выводит ввиде процентов
почему
Yandex
Объявления
29.05.2011, 15:49     Упорядочить список группы в алфавитном порядке
Ответ Создать тему
Опции темы

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