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

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

Войти
Регистрация
Восстановить пароль
 
rappu
0 / 0 / 0
Регистрация: 17.11.2014
Сообщений: 2
#1

Удаление элементов из списка - C++

17.11.2014, 13:55. Просмотров 798. Ответов 3
Метки нет (Все метки)

Товарищи, прошу о помощи!
Задание такое: создать список из целых чисел. Удалить лишние элементы в списке так, чтобы в результирующем списке каждый элемент был не меньше среднего арифметического всех элементов, следующих за ним.
Решить требуется очередью. Ввод вывод данных файловый.
Дошёл в общем-то до этого:
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
#include <stdafx.h>
#include <fstream>
#include <iostream>
#include <queue.cpp> //сам класс очереди//
using namespace std;
int main()
{
    int i, k=0;
    double sum=0;
    Queue <int> t;
    ifstream in("input.txt");
    ifstream in1("input.txt");
    ofstream out("output.txt");
    while(in1>>i)
        {
            sum+=i;
            k++;
        }
    in1.close();
    while (in>>i)
    {
        sum-=i;
        k--;
        if(i>=sum/k||k==0)
            t.Put(i);
    }
    in.close();
    while(!t.Empty())
    {
        out<<t.Get()<<" ";
    }
    out.close();
    return 0;
}
Понимаю, в чём ошибка и почему работает не совсем правильно, но сделать как надо у меня не получается. Помогите пожалуйста! Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2014, 13:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление элементов из списка (C++):

Удаление элементов из односвязного списка списка - C++
Привет всем знатокам, суровым программистам и профессионалам своего дела. Засел за реализацией списка и что то пока не могу понять. Задача...

Двунаправленный список (добавление/удаление элементов в голову, просмотр списка, реализовать дублирование элементов с заданным значением) - C++
Здравствуйте! Помогите написать программу, обеспечивающую работу с двунаправленным нециклическим списком: добавление/удаление элементов в...

Удаление элементов из списка - C++
помогите пожалуйста)))написать процедуру , которая удаляет: а)из списка L за каждым вхождением элемента Е один элемент, если такой есть...

Удаление элементов из списка - C++
Здравствуйте. Есть такая программа, не могу сделать удаление элемента из списка, помогите пожалуйста. #include &lt;iostream&gt; #include...

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

Удаление элементов из списка - C++
Дан список L, состоящий из записей: первое поле – вещественное число, второе – адрес следующего элемента. Составить программу, которая...

3
mss307
118 / 118 / 25
Регистрация: 14.12.2013
Сообщений: 352
17.11.2014, 14:51 #2
Цитата Сообщение от rappu Посмотреть сообщение
C++
1
2
3
4
sum-=i; 
k--; 
if(i>=sum/k||k==0) 
t.Put(i);
среднее арифметическое здесь не надо пересчитывать.
C++
1
2
if(i>=sum/k) 
   t.Put(i);
Добавлено через 1 минуту
а вообще можно воспользоваться стандартной очередью, куда сразу загнать все числа, а дальше воспользоваться std::erase_if(начало, конец, условие).
1
rappu
0 / 0 / 0
Регистрация: 17.11.2014
Сообщений: 2
17.11.2014, 19:20  [ТС] #3
Почему не надо пересчитывать? Мы меняем число => и числа следующие за ним будут другими => среднее арифметическое тоже надо пересчитывать. А вообще можно просто записать в очередь этот список в обратном порядке и задачу точно таким же образом решить, только вот придётся использовать что-то ещё, а этого не разрешает преподаватель. std::erase_if(начало, конец, условие) - мы не изучали, поэтому использовать тоже нельзя. А за ответ спасибо!
0
mss307
118 / 118 / 25
Регистрация: 14.12.2013
Сообщений: 352
18.11.2014, 15:28 #4
Цитата Сообщение от rappu Посмотреть сообщение
Почему не надо пересчитывать?
потому что обычно подобные задачи подразумевают, что сначала один раз считается среднее арифметическое, а дальше уже с ним сравниваются все значения (среднее арифметическое при этих сравнениях не меняется).
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2014, 15:28
Привет! Вот еще темы с ответами:

Удаление элементов из списка - C++
struct List { int data; List *next; }; typedef List* ListPtr; void InsertHead(ListPtr &amp; h, int a); void showList(ListPtr...

Удаление элементов из списка - C++
Создать список. Потом удалить из него все отрицательные элементы. Если можно с комментариями некоторых действий) кстати сдавать программу...

Удаление элементов из списка - C++
Доброго всем времени суток! в универе начали проходить динамические структуры, дошли до списков. Дали задание составить динамический...

Удаление элементов из списка - C++
Даны числа n, m и список list&lt;n_vec&gt; l1 Как удалить из l1 элементы с n по m? n_vec - структура


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
18.11.2014, 15:28
Ответ Создать тему
Опции темы

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