Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
dubstik
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 22
#1

За один просмотр файла сформировать упрорядоченный список чисел

25.11.2017, 12:20. Просмотров 142. Ответов 7
Метки нет (Все метки)

В текстовом файле INPUT.TXT записаны целые числа через пробел, возможно, в несколько строк. За один просмотр файла, без использования сортировки сформировать список этих чисел, упорядоченный по неубыванию (каждый следующий элемент списка больше или равен предыдущему). Значения полученного списка занести в текстовый файл OUTPUT.TXT.

сложность этого задания в ограничениях :
(нельзя использовать <string>
нельзя использовать побитовый сдвиг (>>) (только брать getline и преобразовать через atoi, вектора и списки тоже запрещены.)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2017, 12:20
Ответы с готовыми решениями:

За один просмотр файла сформировать список чисел
В текстовом файле INPUT.TXT записаны целые числа через пробел, возможно, в...

За один просмотр файла, без использования сортировки, сформировать список чисел, упорядоченный по неубыванию
Доброго времени суток! Пытался написать программу, которая без использования...

За один просмотр файла без использования сортировки сформировать список чисел упорядоченный по неубыванию
В текстовом файле INPUT.TXT записаны целые числа через пробел, возможно, в...

Создать линейный двунаправленный список, упрорядоченный по убыванию
Создать линейный двунаправленный список, упрорядоченный по убыванию.

Сформировать список целых чисел, считав их из заданного файла
В текстовом файле INPUT.TXT записаны целые числа через пробел, возможно, в...

7
afront
1048 / 994 / 752
Регистрация: 29.02.2016
Сообщений: 3,185
25.11.2017, 15:05 #2
отсортировать без использования сортировки - кто же такое задание придумал?
0
dubstik
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 22
25.11.2017, 15:57  [ТС] #3
Цитата Сообщение от afront Посмотреть сообщение
отсортировать без использования сортировки - кто же такое задание придумал?
Самое легкое ,что я придумал это создать массив на миллион числел и присваивать число массива порядковому номеру..
0
afront
1048 / 994 / 752
Регистрация: 29.02.2016
Сообщений: 3,185
25.11.2017, 16:10 #4
dubstik, как только вы что то отсортируете каким либо способом, вы тем самым автоматически нарушаете условие - "без использования сортировки"
0
LVV
115 / 102 / 39
Регистрация: 15.02.2010
Сообщений: 421
25.11.2017, 19:57 #5
Цитата Сообщение от dubstik Посмотреть сообщение
Самое легкое ,что я придумал это создать массив на миллион числел и присваивать число массива порядковому номеру..
Ну, так и реализуйте (если заданные значения не превышают миллион).
Правда, через map всё гораздо "экономнее" получается.

Добавлено через 3 минуты
Цитата Сообщение от afront Посмотреть сообщение
dubstik, как только вы что то отсортируете каким либо способом, вы тем самым автоматически нарушаете условие - "без использования сортировки"
Наверное, автор задачи имел ввиду сортировку пузырьковую, перестановками и прочее.. А здесь один проход по всем значениям приводит к упорядочению.

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
#include <map>
#include <fstream>
using namespace std;
 
int main()
{
    ifstream f1("input.txt");
    map <int, int> m;
 
    int n;
    while (f1 >> n)
        m[n]++;
    
    f1.close();
 
    ofstream f2("output.txt");
    map <int, int>::iterator it;
    for (it = m.begin(); it != m.end(); it++)
        for (int i = 0; i<(*it).second; i++)
            f2 << (*it).first << " ";
    f2.close();
 
    return 0;
}

Ну, а если, например, в исходном файле все числа натуральные и меньше 1000, то можно идею dubstik реализовать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <fstream>
using namespace std;
 
int main()
{
    ifstream f1("input.txt");
    int m[1000] = {};
 
    int n;
    while (f1 >> n)
        m[n]++;
    
    f1.close();
 
    ofstream f2("output.txt");
    for (int i=0; i<1000; i++)
        for (int j = 0; j<m[i]; j++)
            f2 << i << " ";
    f2.close();
 
    return 0;
}
Один проход, и никакой классической сортировки.
0
Новичок
Модератор
1489 / 956 / 459
Регистрация: 17.07.2012
Сообщений: 4,903
Завершенные тесты: 3
25.11.2017, 20:04 #6
Цитата Сообщение от LVV Посмотреть сообщение
Один проход, и никакой классической сортировки.
Это называется "сортировка подсчетом".
1
LVV
115 / 102 / 39
Регистрация: 15.02.2010
Сообщений: 421
26.11.2017, 05:19 #7
Цитата Сообщение от Новичок Посмотреть сообщение
Это называется "сортировка подсчетом".
Спасибо. Не знал.
0
dubstik
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 22
27.11.2017, 14:22  [ТС] #8
Цитата Сообщение от LVV Посмотреть сообщение
int m[1000] = {};
Извините,а что значат фигурные скобки ? {}
UPD. разобрался,сори.
0
27.11.2017, 14:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2017, 14:22

С помощью очереди за один просмотр файла напечатать элементы файла в заданном порядке
Сформировать файл из вещественных чисел и с помощью очереди за один просмотр...

Очередь. За один просмотр файла без использования дополнительных файлов напечатать элементы файла в порядке
HELP!!!HELP!!!HELP!!!HELP!!!HELP!!!HELP!!!HELP!!!HELP!!!HELP!!!HELP!!!HELP!!!HEL...

За один просмотр файла выбрать числа из него и посчитать среднее арифметическое
В текстовом файле есть целые числа, записанные через пробел. Может быть и...


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

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

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