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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
grasp
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 4
#1

Сортировка строк из файла по количеству гласных букв - C++

16.12.2012, 10:50. Просмотров 792. Ответов 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 "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <Windows.h>
 
int main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    char strings[10][32], str[32];
    FILE *f;
    int count = 0, i, j;
    if((f = fopen ("name1.txt", "r")) == NULL)
    {
        return 1;
    }
    /* Считываем слова из файла */
    while (feof(f) == 0 || count > 10)
    {
        fscanf (f, "%s", str);
        strcpy(strings[count++], str);
    }
    fclose(f);
    /* Выводим считаные строки */
    for(i = 0; i < count; i++)
        printf("%s\n", strings[i]);
    putchar('\n');
    /* Сортировка методом пузырька */
 
 
    return 0;
}
Убедительная просьба! Изменять программу по минимуму, т.к. эта прога только часть одной большой, с меню, функциями и другими программами. За помощь буду очень благодарен))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2012, 10:50     Сортировка строк из файла по количеству гласных букв
Посмотрите здесь:

C++ Считать английский текст из файла и вывести на экран слова, начинающиеся с гласных букв
C++ Обработка строк. Печать по одному разу в алфавитном порядке всех строчных гласных русских букв, входящих в текст
C++ Написать программу, которая считывает английский текст из файла и выводит на экран слова, начинающиеся с гласных букв
C++ Написать программу, которая считывает английский текст из файла и выводит на экран слова, начинающиеся с гласных букв
C++ Сделать что-бы строка бралась с файла (определить отношение количества гласных букв в предложении к согласным)
C++ STL: Сортировка слов по количеству согласных букв; вывод слов, встречающихся в списке более одного раза
Определить количество гласных букв в первой строке файла F2 C++
C++ Сортировка строк в файле по количеству чисел в строке
C++ Отсортировать слова по количеству гласных букв
C++ Вывести те слова из текста на экран, которые отсортированы по количеству гласных букв
Сортировка слов по количеству в них букв C++
C++ Определить, в какой строке текстового файла больше гласных букв (Dev-C++)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
16.12.2012, 11:55     Сортировка строк из файла по количеству гласных букв #2
Ну, если совсем минимум изменений, то так можно. А вообще лучше динамический память выделять, чтобы просто указатели менять, а не копировать строки с помощью strcpy.

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
#include <string.h>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
 
 
int count_vowels(char * word)
{
    int count = 0; 
    char vowels[] = "AEIOUYaeiouy";
    
    for(char * p2 = word; *p2; ++p2)
        for(char * p1 = vowels; *p1; ++p1)
            if(*p1 == *p2)
                ++count; 
 
    return count;
}
 
 
int main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    char strings[10][32], str[32];
    FILE *f;
    int count = 0, i, j;
    if((f = fopen ("name1.txt", "r")) == NULL)
    {
        return 1;
    }
    /* Считываем слова из файла */
    while (feof(f) == 0 || count > 10)
    {    
        fscanf (f, "%s", str);
        strcpy(strings[count++], str);
    }
    fclose(f);
    
     /* Сортировка методом пузырька */
    for(i = 0; i < count - 1; ++i)
    {
        for(j = 0; j < count - 1 - i; ++j)    
        {
            if(count_vowels(strings[j + 1]) > count_vowels(strings[j]))
            {
                strcpy(str, strings[j]);
                strcpy(strings[j], strings[j + 1]);
                strcpy(strings[j + 1], str);
            }
        }
    }
    
    /* Выводим считаные строки */
    for(i = 0; i < count; i++)
    {
        printf("%s\n", strings[i]);
    }
    putchar('\n');
 
    return 0;
}
grasp
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 4
16.12.2012, 12:58  [ТС]     Сортировка строк из файла по количеству гласных букв #3
Schizorb, спасибо тебе огромное)) От души))
Yandex
Объявления
16.12.2012, 12:58     Сортировка строк из файла по количеству гласных букв
Ответ Создать тему
Опции темы

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