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

Из числовой последовательности найти удалить элементы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Описать базовый класс "книга" http://www.cyberforum.ru/cpp-beginners/thread698614.html
Помогите пожалуйста описать базовый класс "книга". Написать поиск по автору и году выпуска
C++ Есть ли тематические банки заданий Я читаю книгу С.Праты "Язык программирования С++". Она понятная, по-мне так просто прекрасная (Потом обязательно попробую Страуструпа) .Но вот один недостаток: не хватает заданий для проверки знаний, как можно больше приближенных к реальности (есть задачки, но от отчаяния даже как-то давно писал сей бред). Ну так вот, я изучил (если можно так сказать) циклы, логику, классы памяти, структуры,... http://www.cyberforum.ru/cpp-beginners/thread698609.html
Корень из 2 с точностью до 100 знаков после запятой C++
Добрый день. Задача такова, программа должна выразить корень из 2 с точностью до 100 знаков после запятой, может есть предложения как это сделать? Могу выбрать между С и С++ языками. Спасибо!
C++ Рекурсивный спуск
Здравствуйте помогите пожалуйста разобраться в рекурсивном спуске, который вычисляет выражения, и как считывать по одному элементу из файла( #include "stdafx.h" #include "stdlib.h" bool E(); bool T(); bool F(); bool N(); {
C++ Составить блок-схему к программе http://www.cyberforum.ru/cpp-beginners/thread698589.html
Народ!помогите блок-схему сделать!((( using namespace std; void enteringData(double*, int); void calculatingAvg(double*, int); void main() { int size = 0; cout<<"Type size of array: ";
C++ Блок-схема Народ!помогите!кто знает как блок -схему сделать!!? void main() { doublemult=1; ifstream text("text.txt"); while (!text.eof()) { double num; text>>num; cout<<num<<endl; if (num < 0) { mult*=pow(num,2); подробнее

Показать сообщение отдельно
Apelsin199
11 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 127
15.11.2012, 16:58     Из числовой последовательности найти удалить элементы
Вот такая ситуация... Дани лабораторную, решил её через индексы (нужно использовать STL Deque), прапад дал на защиту туже работу, толкьо написать на итераторах, не получается написать функцию удаления... Помогите плиз =)
Вот задача:
Из числовой последовательности найти удалить все элементы, меньшие, чем B*X, где X – среднее арифметическое трех наибольших элементов последовательности, B – задаваемый пользователем коэффициент.
Вот мой код:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <deque>
#include <conio.h>
#include <stdio.h>
#include <clocale>
#include <LIMITS.H>
using namespace std;
 
int main ()
{
    setlocale(LC_ALL,"rus");
    deque <int> a;
    deque <int>::iterator iter;
    int X=0, b;
    int max1, max2, max3;
    int size;
    int n;
    FILE *in;
    puts(" Считывание данных из файла.");
    if((in=fopen("input.txt","r"))==NULL)
    {
        puts(" Не удалось открыть файл");
        getch();
        return 0;
    }
    fscanf(in,"%d",&size);
    printf(" Размер дека : %d\n", size);
    for(int i=0; i<size ; i++)
    {
        fscanf(in, "%d", &n);
        a.push_back(n);
    }
    printf(" Исходный дек: ");
    for(iter = a.begin(); iter != a.end(); ++iter)
    {
        printf(" %d ", *iter);
    }
    max1=INT_MIN;;
    max2=INT_MIN;
    max3=INT_MIN;
    for(iter = a.begin(); iter != a.end(); ++iter)
    {
        if(*iter>max1)
        {
            max1=*iter;
        }
    }
    for(iter = a.begin(); iter != a.end(); ++iter)
    {
        if(*iter<max1 && *iter>max2)
            {
                max2=*iter;
            }
    }
    for(iter = a.begin(); iter != a.end(); ++iter)
    {
        if(*iter<max1 && *iter<max2 && *iter>max3)
        {
            max3=*iter;
        }
    }
    printf("\n Первый максимальный эллемент = %d\n Второй максимальный эллемент = %d\n Третий максимальный эллемент = %d\n ", max1, max2, max3);
    X=(max1+max2+max3)/3;
    printf("Среднее арифметическое = %d", X);
    printf("\n Введите b = ");
    scanf("%d", &b);э
             //Здесь начинается удаление
    for(iter = a.begin(); iter != a.end(); ++iter)
    {
        if(*iter<(b*X))
        {
            //Здесь надо как то удалять через функцию erase, как именно?
        }
    }
            // Сдесь удаление закончилось
    if(a.empty())
    {
        printf(" Весь дек удален! ");
    }
    printf(" Оставшиеся эллементы: ");
    for(iter = a.begin(); iter != a.end(); ++iter)
    {
        printf(" %d ", *iter);
    }
    getch ();
}
Функция удаления с индексами у меня выглядела так:
C++
1
2
3
4
5
6
7
8
for(int i=0; i<a.size();i++)
    {
        if(a[i]<(b*X))
        {
            a.erase(a.begin()+i);
            i--;
        }
    }
Помогите пожалуйста...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru