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

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

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

Оптимизация. Лишняя информация в решении - C++

05.02.2011, 15:28. Просмотров 639. Ответов 11
Метки нет (Все метки)

Суть задачи заключалась в отыскании четных и нечетных значений массива, найти их сумму.

Задачу решил.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
int main(){
    int cS=0,nS=0;
    const int size=10;
    int a[size];
    for(int i=0;i<10;i++){
        cout<<"Enter element: ";cin>>a[i];
    }
    for(int i=0;i<10;i++){
        cout<<"\nelements: "<<a[i];
    }
    cout<<"\n";
    for(int i=0;i<10;i++){
        if(a[i]%2==0){
            cS+=a[i]; cout<<"\n even sum: "<<cS;
        }
        else{
            nS+=a[i]; cout<<"\n odd sum: "<<nS;
        }
    }
    cout<<"\n";
}
Проблема в том, что в решении достаточно сложно разобрать конечный результат.
Как я понимаю, цикл поочередно каждое значение индекса проверяет на истинность условия и сразу-же выводит данные на экран.
C++
1
2
3
4
5
6
if(a[i]%2==0){
            cS+=a[i]; cout<<"\n even sum: "<<cS;
        }
        else{
            nS+=a[i]; cout<<"\n odd sum: "<<nS;
        }
Для удобства проверки хочется видеть лишь конечный результат этой проверки, что я и не знаю как сделать.


Спасибо за уделенное мне время.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2011, 15:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Оптимизация. Лишняя информация в решении (C++):

Лишняя скобка? - C++
Ругается на строку str = L&quot;всё&quot;; Так- error C2059: синтаксическая ошибка: ] \wchar\wchar\wchar.cpp 11 #include &lt;iostream&gt; ...

Лишняя черта - C++
Программа &quot;Слияние&quot;, не могу избавиться от последней черты (&quot; | &quot;) в выводе &quot;Выдач&quot;. Прошу помочь с удалением последней черты. ...

Лишняя строка в файле - C++
void Vvod() { ofstream file(Name, ios::app); if (!file) { cout &lt;&lt; &quot;Ошибка! Такого файла не существует!&quot; &lt;&lt; endl; ...

Выводится лишняя строка из файла - C++
Здравствуйте. При выводе из файла выводится лишняя строка. Т.е. если 13 строк в файле, то выводится 14 пустая строка. Вот код: void...

Чтение файла, лишняя итерация - C++
Вопрос по функции feof(). Я так понимаю она должна сигнализировать о конце файл, если был прочитан последний байт файла. Но у меня в...

При чтение из файла появляется лишняя запись - C++
Программа при чтение из файла дублирует последнюю запись файла.Можете объяснить в чём тут ошибка.В заранее благодарен #include...

11
slavich
12 / 12 / 1
Регистрация: 25.10.2009
Сообщений: 32
05.02.2011, 15:49 #2
Не совсем разобрался что нужно.Возможно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main(){
        int cS=0,nS=0;
        const int size=10;
        int a[size];
        for(int i=0;i<10;i++){
                cout<<"Enter element: ";cin>>a[i];
        }
        for(int i=0;i<10;i++){
                cout<<"\nelements: "<<a[i];
        }
        cout<<"\n";
        for(int i=0;i<10;i++){
                if(a[i]%2==0){
                        cS+=a[i]; 
                }
                else{
                        nS+=a[i]; 
                }
        }
        cout<<"\n even sum: "<<cS;
        cout<<"\n odd sum: "<<nS;
        cout<<"\n";
}
1
heyday
0 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 13
05.02.2011, 16:04  [ТС] #3
Да, это и нужно было, спасибо.

Т.к. в заголовке написал оптимизация, то думаю можно еще один вопрос на эту тему.
Можно ли упростить кол-во циклов for()?
0
slavich
12 / 12 / 1
Регистрация: 25.10.2009
Сообщений: 32
05.02.2011, 16:11 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main(){
        int cS=0,nS=0;
        const int size=10;
        int a[size];
        for(int i=0;i<10;i++){
                cout<<"Element "<<i+1<<": ";cin>>a[i];
        }
        cout<<"\n";
        for(int i=0;i<10;i++){
                if(a[i]%2==0){
                        cS+=a[i]; 
                }
                else{
                        nS+=a[i]; 
                }
        }
        cout<<"\n even sum: "<<cS;
        cout<<"\n odd sum: "<<nS;
        cout<<"\n";
}
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
05.02.2011, 16:20 #5
Как желали. Циклов for нет аще)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
    int sum_odd=0, sum_even=0;
    std::for_each(vec.begin(), vec.end(), [&sum_odd, &sum_even](int one)
    {
        one % 2 == 0 ? sum_even+=one : sum_odd+=one;
    });
    std::cout<<sum_odd<<'\n'<<sum_even<<'\n';
    return 0;
}
0
heyday
0 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 13
05.02.2011, 16:25  [ТС] #6
Извините за назойливость.
А можно ли сделать так, чтобы при вводе элементов массива они располагались в одну строку?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
05.02.2011, 16:26 #7
heyday, Что-что? оО Вводите как хотите. Главное через пробел.
0
heyday
0 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 13
05.02.2011, 16:34  [ТС] #8
ForEveR, в вашем коде я лишь разобрал замену if()

Да, пробел помог, почти. Изза цикла пустые надписи вылетают, но это косметика

Спасибо, в этих вопросах разобрался.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
05.02.2011, 17:53 #9
heyday, У вас мой код то хоть заработал? Нужно MSVS 10 или GCC 4.5+
0
heyday
0 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 13
05.02.2011, 18:20  [ТС] #10
У меня MS VС++ 10. Да, удобный код, только для начала подсчета нужно ввести знак или букву.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
05.02.2011, 19:49 #11
heyday, Я бы сказал нужно ввести цифры))))
Потом знак или букву для прекращения ввода.
Потом подсчет.
0
heyday
0 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 13
05.02.2011, 21:26  [ТС] #12
ForEveR, так я и написал: "для начала подсчета". Без диалога сложно понять
0
05.02.2011, 21:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2011, 21:26
Привет! Вот еще темы с ответами:

Запись в файл, лишняя строка, не могу понять! - C++
Сломал всю голову, по каким то причинам при вводе данных клавиатуры, они записываются, но 1ая строка пустая, есть подозрение, ЧТО связано с...

Выводится одна лишняя строка (работа с бинарным файлом) - C++
Буду благодарен за помощь. #include&lt;iostream&gt; #include &lt;fstream&gt; #include &lt;algorithm&gt; #include &lt;string&gt; #include &lt;cstring&gt; ...

Написать программу- вводная информация в файле in.txt, выходная информация в out.txt - C++
Написать программу- вводная информация в файле in.txt, выходная информация в out.txt. Срочнооо..

Зависимости в решении - C++
Подскажите, пожалуйста, как убрать зависимости между проектами в решении. В свойствах решения, или проектов (Зависимости проектов), снять...


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

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

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