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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Guyver312
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 6
#1

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

26.03.2012, 22:38. Просмотров 1110. Ответов 4
Метки нет (Все метки)

Помогите пожалуйста с заданием.Необходимо расположить элементы из файла .txt в алфавитном порядке.
Как я понял можно таким методом сделать: Открыть файл, создать массив и присвоить ему рандомные значения от 128 до 159( это вроде по кодировке ASCII) потом расположить элементы массива в порядке возрастания, и сохранить файл чтоб буквы были в нужном порядке. Помогите пожалуйста....Только как нибудь с объяснениями
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2012, 22:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Расположение элементов массива в алфавитном порядке из файла (C++):

Отсортировать элементы массива в алфавитном порядке - C++
отсортировать элементы массива А в алфавитном порядке. Помогите. Плис

Упорядочить символы массива в алфавитном порядке - C++
Даны строки A и B. Если строки состоят из одних и тех же символов и в A нет повторяющихся символов, то упорядочить символы A в алфавитном...

Сортировка массива структур в алфавитном порядке фамилий - C++
Основная часть: Каждый элемент исходного массива представляет собой запись содержащую следующие поля: - Фамилия - Номер отдела -...

.Переписать все слова из одного файла в другой в алфавитном порядке - C++
Переписать все слова из одного файла в другой в алфавитном порядке.

Заменить исходное расположение элементов файла - C++
pomagite reshit' zadachu plz Дан файл целых чисел с элементами A1, A2, …, AN (N — количество эле-ментов в файле). Заменить исходное...

Получить из файла строки, содержащие четырехбуквенные слова. Слова отсортировать в алфавитном порядке - C++
Задание: Дан текстовый файл, получить строки, содержащие четырехбуквенные слова. Слова отсортировать в алфавитном порядке. Заранее...

4
Algiz
160 / 160 / 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;
}
0
Guyver312
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 6
26.03.2012, 23:19  [ТС] #3
Хм у меня почему то ничего не происходит. Еще я не понимаю вы файл открываете уже после того как создали массив что ли? Надо бы теперь чуть чуть изменить содержимое. Допустим имена в файле будут и их расположить в алфавитном порядке.
0
Algiz
160 / 160 / 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;
}
1
Guyver312
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 6
27.03.2012, 20:41  [ТС] #5
Да правильно

Добавлено через 7 минут
Спасибо большое !Программа работает но с английскими именами.И с русскими но только с первой буквой.То есть она ставит Андрей выше чем Александр. И по поводу последнего слова у меня все нормально ничего не дублируется. Попробую разобраться что можно сделать
0
27.03.2012, 20:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2012, 20:41
Привет! Вот еще темы с ответами:

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

Переписать данные файла input.txt в файл output.txt, отсортировать их в алфавитном порядке по фамилии - C++
Народ меня тут 11 задач мне нужно их подробно прокомментировать какая строчка что делает(пример первая задача) помогите плиз кому не...

Сортировка массива в порядке возрастания и вывод элементов в обратном порядке - C++
нашла на форуме пару примеров, но они не полные и не запускаются, выбрала из них более менее подходящий, дальше было много вариантов но не...

Первые десять элементов массива М(30) отсортировать в порядке возрастания, а остальные в порядке убывания - C++
Привет. Первые десять элементов массива М(30) отсортировать в порядке возрастания, а остальные в порядке убывания. Вот тут я сделал массив...


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

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

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