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

Расположение элементов массива в алфавитном порядке из файла - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Guyver312
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 6
26.03.2012, 22:38     Расположение элементов массива в алфавитном порядке из файла #1
Помогите пожалуйста с заданием.Необходимо расположить элементы из файла .txt в алфавитном порядке.
Как я понял можно таким методом сделать: Открыть файл, создать массив и присвоить ему рандомные значения от 128 до 159( это вроде по кодировке ASCII) потом расположить элементы массива в порядке возрастания, и сохранить файл чтоб буквы были в нужном порядке. Помогите пожалуйста....Только как нибудь с объяснениями
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2012, 22:38     Расположение элементов массива в алфавитном порядке из файла
Посмотрите здесь:

C++ Заменить исходное расположение элементов файла
Не использую доп. элементов массива переставить элементы массива в обратном порядке C++
C++ Переписать данные файла input.txt в файл output.txt, отсортировать их в алфавитном порядке по фамилии
C++ Вывод в алфавитном порядке
Отсортировать элементы массива в алфавитном порядке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Algiz
159 / 159 / 13
Регистрация: 23.02.2011
Сообщений: 347
26.03.2012, 23:04     Расположение элементов массива в алфавитном порядке из файла #2
В чем собственно сложность была?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#define forn(n0,i,n1) for(int i=n0; i<n1; i++)
 
using namespace std;
 
int main(int argc, char **argv)
{
    string arr;
    int n;
    cin >> n;
    srand(time(0));
    forn(0,i,n)
        arr += char('A' + (rand() % ('Z' - 'A')));
    freopen("output.txt","wt",stdout);
    cout << arr;
    return 0;
}
Guyver312
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 6
26.03.2012, 23:19  [ТС]     Расположение элементов массива в алфавитном порядке из файла #3
Хм у меня почему то ничего не происходит. Еще я не понимаю вы файл открываете уже после того как создали массив что ли? Надо бы теперь чуть чуть изменить содержимое. Допустим имена в файле будут и их расположить в алфавитном порядке.
Algiz
159 / 159 / 13
Регистрация: 23.02.2011
Сообщений: 347
27.03.2012, 18:08     Расположение элементов массива в алфавитном порядке из файла #4
Я не правильно понял, сейчас перепишу

Добавлено через 23 минуты
Есть файл temp.txt, где находятся слова, которые нужно отсортировать и записать в тот же файл. Правильно?

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
#include <iostream>
#include <fstream>
#include <algorithm>
#include <string>
#include <vector>
#define forn(n0,i,n1) for(int i=n0; i<n1; i++)
 
using namespace std;
 
bool cmp(string s1, string s2)
{
    return (s1[0] < s2[0]);
}
 
int main(int argc, char **argv)
{
    ifstream in;
    ofstream out;
    vector<string> arr;
    string buffer;
    in.open("./temp.txt");
    while (not (in.eof()))
    {
        in >> buffer;
        arr.push_back(buffer);
    }
    arr.pop_back(); // Последнее слово почему-то дублируется
    in.close();
    sort(arr.begin(),arr.end(),&cmp); // Если не имеешь ничего против STL
    out.open("./temp.txt");
    forn(0,i,(int)arr.size())
    {
        out << arr[i] << endl;
    }
    out.close();
    return 0;
}
Guyver312
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 6
27.03.2012, 20:41  [ТС]     Расположение элементов массива в алфавитном порядке из файла #5
Да правильно

Добавлено через 7 минут
Спасибо большое !Программа работает но с английскими именами.И с русскими но только с первой буквой.То есть она ставит Андрей выше чем Александр. И по поводу последнего слова у меня все нормально ничего не дублируется. Попробую разобраться что можно сделать
Yandex
Объявления
27.03.2012, 20:41     Расположение элементов массива в алфавитном порядке из файла
Ответ Создать тему
Опции темы

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