Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Алгоритмы и теория программирования


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Гаряка Асмик
Статус: Профессор
Рейтинг: 5498
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2544
∙ повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2035
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Алгоритмы и теория программирования

Номер выпуска:126
Дата выхода:27.11.2010, 17:30
Администратор рассылки:Борисыч (Профессор)
Подписчиков / экспертов:394 / 173
Вопросов / ответов:1 / 2

Вопрос № 180896: Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос:Дан текстовый файл.Вывести на экран строки файла в алфавитном порядке. Программа должна производить проверку особых ситуаций при операциях ввода-вывода ...



Вопрос № 180896:

Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос:Дан текстовый файл.Вывести на экран строки файла в алфавитном порядке. Программа должна производить проверку особых ситуаций при операциях ввода-вывода

Отправлен: 23.11.2010, 01:34
Вопрос задал: Magma (Посетитель)
Всего ответов: 2
Страница вопроса »


Отвечает vladisslav (8-й класс) :
Здравствуйте, Magma!
Такой вариант. На C. Передавать 1 аргумент - исследуемый файл.
Используется список сортировки (точнее таблицы).
Используется b+ дерево. (Быстро и при большом количестве одинаковых слов занимает меньше памяти.)
Под словами подразумевается то, что читает функция scanf("%s",word).
Комментарии на английском (не люблю переключать раскладку).

Приложение:

Ответ отправил: vladisslav (8-й класс)
Ответ отправлен: 24.11.2010, 18:44
Номер ответа: 264309

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 264309 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Отвечает Борисыч (Профессор) :
    Здравствуйте, Magma! G++/Code::Blocks. Файл читается в массив строк, массив сортируется "пузырьком", печатается на экран.
    Код:
    #include <stdio.h>
    #include <string.h>

    int main(void)
    {
    enum {MAX_LINE_SIZE=100, MAX_VEC_SIZE=1000};
    char line[MAX_LINE_SIZE], tmp[MAX_LINE_SIZE];
    char v[MAX_VEC_SIZE][MAX_LINE_SIZE];
    char fname[40];
    int i, j, vec_size;
    FILE *f;

    printf("Файл " );
    scanf("%s", &fname);

    // Проверка открытия
    if ((f = fopen(fname, "r")) == NULL)
    {
    printf("Файл не найден\n");
    system("pause");
    return 1;
    }

    // Заполняем массив строк
    vec_size=0;
    while( fgets(line, MAX_LINE_SIZE, f) != NULL )
    {
    strcpy(v[vec_size++], line);
    }

    // Проверка закрытия
    if (fclose(f)!=0)
    {
    printf("Ошибка закрытия файла\n");
    system("pause");
    return 1;
    }

    // Сортируем массив строк
    // Правильней было бы сортировать массив указателей
    for (i=0; i<vec_size-1; i++)
    for (j=vec_size-1; j>i; j--)
    if (strcmp(v[j], v[j-1])<0)
    {
    strcpy(tmp, v[j]);
    strcpy(v[j], v[j-1]);
    strcpy(v[j-1], tmp);
    }

    printf("\nПосле сортировки\n");
    for (i=0; i<vec_size; i++)
    printf(v[i]);

    system("pause");
    return 0;
    }

    Исходный файл.
    Код:
    Richard Bach
    Jonathan Livingston Seagull

    To the real Jonathan Seagull,
    who lives within us all.

    Part One

    It was morning, and the new sun sparkled gold across the ripples of a
    gentle sea. A mile from shore a fishing boat chummed the water. and the
    word for Breakfast Flock flashed through the air, till a crowd of a
    thousand seagulls came to dodge and fight for bits of food. It was another
    busy day beginning.
    But way off alone, out by himself beyond boat and shore, Jonathan
    Livingston Seagull was practicing. A hundred feet in the sky he lowered
    his webbed feet, lifted his beak, and strained to hold a painful hard
    twisting curve through his wings. The curv e meant that he would fly
    slowly, and now he slowed until the wind was a whisper in his face, until
    the ocean stood still beneath him. He narrowed his eyes in fierce
    concentration, held his breath, forced one... single... more... inch...
    of... curve... Then his featliers ruffled, he stalled and fell.
    Seagulls, as you know, never falter, never stall. To stall in the air
    is for them disgrace and it is dishonor.
    But Jonathan Livingston Seagull, unashamed, stretching his wings
    again in that trembling hard curve - slowing, slowing, and stalling once
    more - was no ordinary bird.
    Most gulls don't bother to learn more than the simplest facts of
    flight - how to get from shore to food and back again. For most gulls, it
    is not flying that matters, but eating. For this gull, though, it was not
    eating that mattered, but flight. More than anything else. Jonathan
    Livingston Seagull loved to fly.


    Пример работы
    Код:
    Файл test.txt
    После сортировки



    But Jonathan Livingston Seagull, unashamed, stretching his wings
    But way off alone, out by himself beyond boat and shore, Jonathan
    It was morning, and the new sun sparkled gold across the ripples of a
    Jonathan Livingston Seagull
    Livingston Seagull loved to fly.
    Livingston Seagull was practicing. A hundred feet in the sky he lowered
    Most gulls don't bother to learn more than the simplest facts of
    Part One
    Richard Bach
    Seagulls, as you know, never falter, never stall. To stall in the air
    To the real Jonathan Seagull,
    again in that trembling hard curve - slowing, slowing, and stalling once
    busy day beginning.
    concentration, held his breath, forced one... single... more... inch...
    eating that mattered, but flight. More than anything else. Jon athan
    flight - how to get from shore to food and back again. For most gulls, it
    gentle sea. A mile from shore a fishing boat chummed the water. and the
    his webbed feet, lifted his beak, and strained to hold a painful hard
    is for them disgrace and it is dishonor.
    is not flying that matters, but eating. For this gull, though, it was not
    more - was no ordinary bird.
    of... curve... Then his featliers ruffled, he stalled and fell.
    slowly, and now he slowed until the wind was a whisper in his face, until
    the ocean stood still beneath him. He narrowed his eyes in fierce
    thousand seagulls came to dodge and fight for bits of food. It was another
    twisting curve through his wings. The curve meant that he would fly
    who lives within us all.
    word for Breakfast Flock flashed through the air, till a crowd of a

    Если требуются разъяснения, пожалуйста, вопросы в мини-форум.

    Ответ отправил: Борисыч (Профессор)
    Ответ отправлен: 25.11.2010, 21:03
    Номер ответа: 264331

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 264331 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFPRO.RU, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.23 от 23.11.2010

    В избранное