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

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

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

Ошибка в сортировке русского текста - C++

25.05.2013, 09:07. Просмотров 202. Ответов 0
Метки нет (Все метки)

Есть произвольный текст и его слова нужно отсортировать в алфавитном порядке. Результат записать в другой текстовый файл. При сортировке слова обрезаются или исчезают символы из них.

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
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "Windows.h"
#include <string.h>
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    //указатели на файлы
    FILE *in, *out;
    char mas[100][100], *word[100] = {NULL};
    int numWords = 0;
    char seps[] = " .,!?\n";
    
    int n = 0;
                    
    in = fopen("in.txt", "r");
    //Проверка на открытие файла
    if(in == NULL)
    {
        printf("Данный файл не найден!\n");
        return 0;
    }   
 
    while(!feof(in))
    {
        //Сканирую полностью строку из файла
        fgets(mas[n], 100, in);
        printf("%s", mas[n]);
        n++;                
    }       
    fclose(in);
 
    
    for(int i = 0; i < n; i++)
    {
        //Функция strtok выбирает из перменной mas до знака из seps все символы в word отправляя указатель. То есть разделяет строку на отдельные слова
        //Ищем первое слово
        word[numWords] = strtok(mas[i], seps);
        while( word[numWords] != NULL )
        {
            numWords++;
            //ищем следующее слово
            word[numWords] = strtok(NULL, seps); 
        }
    }
 
    char tmp[20];
 
        for(int i = 0; i < numWords-1; i++)
        {
            for(int j = i+1 ;j < numWords; j++)
            {
                if(strcmp(word[i], word[j]) > 0)
                {
                    strcpy(tmp, word[i]);
                    memset(word[i], 0, sizeof(word[i]));
                    strcpy(word[i], word[j]);
                    memset(word[j], 0, sizeof(word[j]));
                    strcpy(word[j], tmp);
                //  memset(tmp, 0, sizeof(tmp));
                }
            }
        }
 
    out = fopen("out.txt", "w");
 
    for(int i = 0; i < numWords; i++)
    {
        fprintf(out, "%s ", word[i]);
    }
 
    fclose(out);
    printf("\nГотово.\n");  
    getch();    
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2013, 09:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в сортировке русского текста (C++):

Фильтрация русского текста - C++
есть задача. Создать программу, фильтрующую текст, введенный с клавиатуры. Задача программы заключается в считывании текста и...

Вывод русского текста - C++
Привет, я тут упражнение из книжки делаю. Там класс с переменными, содержащими имя (тип string) и ID работника (long). Я все сделал, но...

ввод русского текста в c++ - C++
при вводе русского вопроса &quot;кто ты?&quot; программа не воспринимает его. и выводит &quot;I can't answer for this question. What is the answer?&quot;. Т.е....

Ввод с клавиатуры русского текста - C++
Привет форум. Сел писать програмку на С++ и встретился с проблемой. Вот собственно задание &quot;C клавиатуры посимвольно вводится фраза....

Запись в файл русского текста - C++
Вообщем столкнулся с такой проблемой, надо записать данные в файл в Русском формате. Проблема в том, что записывает каракулями :) как это...

Вывод русского текста в консоли - C++
Доброго времени суток.Помогите пожалуйста в таком вопросе.Вот простенькая программа,которой нужно ввести имя,а она выведет Привет,введеное...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2013, 09:07
Привет! Вот еще темы с ответами:

Сохранение в файл русского текста - C++
Хай! Консоль работает с русскими шрифтами. Сделано с помощью setlocale(LC_ALL,&quot;Rus&quot;); нужно сохранить данные в файл bool...

Некорректный ввод русского текста - C++
Всем привет..столкнулся с такой проблемой. Есть программа которая считывает с файла текст на русском языке. Я его спокойно могу...

Вывод русского текста в консоли - C++
Ребят для курсового проекта требуется реализовать ввод русских букв, сколько уже не мучался с этим итог нулевой. Пробовал ...

Обработка русского текста в консольном режиме. - C++
Приветствую всех, Собственно вопрос: Создаю строковую переменную, посредством cin заношу в неё текст на русском, распечатываю...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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