Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Сортировка текста по алфавиту


Автор: Кли 20.6.2020, 13:39
Здравствуйте!!! Помогите пожалуйста написать функцию сортировки по заданию: Написать программу с функцией, которая в текстовом файле "Test.txt" сортирует слова в лексикографическом порядке (по алфавиту). 
Код

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <Windows.h>
#include <string>
#include <cstring>
using namespace std;
int main()
{
    setlocale(LC_ALL,"rus");
    const int len_text = 500;
    const int len_word = 50;
    char buffer[len_text], word[len_word];
    ifstream fin("test.txt");
    if(!fin)
    {
        cout << "Ошибка открытия файла " << endl;
    }
    fin.getline(buffer,len_text ,EOF);
    for(int i = 0; i < strlen(buffer); i++)
    cout << buffer[i];
    cout << endl;
    cout <<"Результат после сортировки: " << endl;
    system("pause");
    return 0;
}

Автор: Кли 26.6.2020, 21:48
Я написал сортировку, но она че то не работает у меня, в чем ошибка?
Код

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <string.h>
#include <Windows.h>
using namespace std;
void print_list() 
{
    const int len_text = 500;
    const int len_word = 50;
    char buffer[len_text], word[len_word];
    ifstream fin("test.txt");
    if(!fin)
    {
        cout << "Ошибка открытия файла " << endl;
    }
    fin.getline(buffer,len_text,EOF);
    for(int i = 0; i < strlen(buffer); i++)
    cout << buffer[i];
}

void sort_words()
{
    const int len_text = 500;
    const int len_word = 50;
    char buffer[len_text], word[len_word];
    for(int i = 0; i < strlen(buffer) - 1; i++)
        for(int j = i + 1; j < strlen(buffer); j++)
            if(strcmp(len_word[i], len_word[j]) > 0) 
            {
                char* tmp = buffer[i];
                buffer[i] = buffer[j];
                buffer[j] = tmp;
            }
}

int main() 
{
    setlocale(LC_ALL,"rus");
    printf("\nInput data:\n\n");
    print_list();

//    sort_words();
    printf("\n\nSorted data:\n\n");
//    print_list();
    system("pause");
    return 0;
}



Автор: Oldshelf 27.6.2020, 13:34
1. Текст не разбивается на слова.
2. При работе с буфером "buffer", сравниваются символы из константы длины слова, а не самого слова (об этом также должен сообщить компилятор).

Добавлено через 5 минут и 52 секунды
3. "buffer" объявлена не глобально и в функцию "sort_words" не передаётся.

Автор: pairlee 16.7.2020, 13:39
Модератор: Сообщение скрыто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)