Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 0
Регистрация: 08.02.2017
Сообщений: 21
1

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

10.02.2017, 19:34. Показов 2146. Ответов 9

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Пытался написать программу, которая без использования сортировки перемещала числа из одного файла в другой и при этом записывала их в порядке возрастания. Вот код:
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
#include <iostream>
#include <fstream>
using namespace std;
 
void main()
 
{
    int CurMean, PrevMean, sw;
    // открываем файлы
    std::ifstream in("input.txt");
    std::ofstream out("output.txt");
    // считываем первое значение
    if (!(in >> PrevMean))
    {
        out << "Файл input.txt пуст!";
    }
    // на случай, если первое значение оказалось единственным
    CurMean = PrevMean;
    // обрабатываем значения файла
    while (in >> sw)
    {
        if (sw>PrevMean)
            CurMean = sw;
        else
        {
            CurMean = PrevMean;
            PrevMean = sw;
        }
        // сохраняем значение
        out << PrevMean << ' ';
        PrevMean = CurMean;
    }  while( in>>sw )
      // сохраняем последнее значение
    out << CurMean;
    system("pause");
}
.
Но когда в "input.txt" записываешь, например, числа

78 34 45 88 23 11 111 78 43 33,

в "output.txt" получается не то, что я хотел

34 45 78 23 11 88 78 43 33 .

Куда-то пропадает число 111, и сортирует он не весь файл. Подскажите, где я ошибся?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.02.2017, 19:34
Ответы с готовыми решениями:

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

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

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

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

9
132 / 158 / 87
Регистрация: 06.04.2016
Сообщений: 992
10.02.2017, 19:59 2
А зачем 2 while - строки 20 и 32?

Добавлено через 3 минуты
По какому принципу работает условие if{}else{} в строках 22-28 - это сортировка или конвейер?

Добавлено через 13 минут
Сортировка не правильно работает, Вы выводите число 34 в выходной поток(out), но в непрочитанном файле есть еще меньшее число(11). Так что сортировка Ваша провалилась по определению. А что стандартную сортировку нельзя применять? Если можно, то просто читаете файл, запускаете метод sort() и результат записываете в файл. Если сортировку так нельзя применять, то тут на форуме где-то был заголовок:"Сортировки". Видимо Вам его нужно посмотреть.
1
1 / 1 / 0
Регистрация: 08.02.2017
Сообщений: 21
10.02.2017, 20:19  [ТС] 3
Нет, задание звучит так:

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

Так что тема "Сортировка" мне не подходит

Просто нет никаких идей, как решить данную задачу. Может Вы что-то предложите?

Добавлено через 11 минут
Цитата Сообщение от Nik_001 Посмотреть сообщение
Нет, задание звучит так
Извините, что сразу не сказал, что это задание.
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
10.02.2017, 20:28 4
Лучший ответ Сообщение было отмечено Nik_001 как решение

Решение

Цитата Сообщение от Nik_001 Посмотреть сообщение
Так что тема "Сортировка" мне не подходит
Nik_001, читайте свои числа из файла INPUT.TXT в библиотечный контейнер std::set. А затем из std::set в OUTPUT.TXT.
И ничего сортировать не придётся. std::set сам упорядочивает элементы, которые в нём содержатся.

Добавлено через 4 минуты
Nik_001, если в Вашем файле допускаются дубликаты (элементы с одинаковыми значениями), то используйте std::multiset.

Добавлено через 3 минуты
Nik_001, подробнее про std::set и std::multiset см. в книге Николаи Джосаттиса "Стандартная библиотека C++. Справочное руководство" (2014, 2-е издание, издательство Вильямс, глава 7 "Контейнеры STL", подраздел 7.7 "Множества и мультимножества", стр. 347).
2
1 / 1 / 0
Регистрация: 08.02.2017
Сообщений: 21
10.02.2017, 21:06  [ТС] 5
Спасибо большое. Сейчас попробую написать, как Вы сказали.
0
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
10.02.2017, 23:26 6
Задание звучит как: отсортировать числа без сортировки. Прелестно.
2
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
10.02.2017, 23:59 7
Цитата Сообщение от avgoor Посмотреть сообщение
Задание звучит как: отсортировать числа без сортировки. Прелестно.
Я это понял как "отсортировать числа без явного использования сортировки". Потому и предложил std::set.
1
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
11.02.2017, 00:03 8
gru74ik, в результате получили сортировку вставками. И внешняя сортировка - тоже сортировка.
1
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
11.02.2017, 09:41 9
avgoor, забил последний гвоздь в гроб надежды. Что ж, признаю́ - ты прав, дорогой друг. Действительно, нельзя упорядочить последовательность, имея запрет на любой вид сортировки. Условие задачи - лютый вздор.
2
1 / 1 / 0
Регистрация: 08.02.2017
Сообщений: 21
11.02.2017, 13:08  [ТС] 10
Да уж, действительно, задание звучит бредово. Подойду к преподу, который это задание давал - попробую прояснить ситуацию.
0
11.02.2017, 13:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2017, 13:08
Помогаю со студенческими работами здесь

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

За один просмотр файла сформировать список чисел из INPUT.TXT. Определить количество нулевых элементов в списке
Здравствуйте, помогите написать код к задаче, надо решить с помощью массивов/указателей, вообщем на...

За один просмотр файла и без использования дополнительных файлов вывести элементы файла f в указанном порядке
Если можете сделайте программу (сам пытался понять как делать но не получается +времени нет...

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

Объединить два упорядоченных по неубыванию списка в один упорядоченный по неубыванию
Помогите описать процедуру, которая объединяет два упорядоченных по неубыванию списка X1 и X2 в...

Образовать из двух упорядоченных по неубыванию массивов один, упорядоченный по неубыванию
Даны два числа m и n, и два упорядоченных по неубыванию массива A≤A≤...≤A и...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru