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

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

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

Нужно немного изменить код (сумма от последнего отрицательного элемента массива до первого положительного) - C++

26.05.2013, 07:29. Просмотров 1131. Ответов 22
Метки нет (Все метки)

Народ такая проблема, мой код считает сумму от последнего отрицательного элемента массива до первого положительного. Как сделать чтобы он считал сумму элементов от первого положительного до последнего отрицательного. И все это должно быть в одном цикле for, другими словами 0(N). Я знаю что код косячный и что тут даже сумма не считается, но прошу помощи. Вот сам код:


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()
{
    setlocale (0,"rus");
    int a;
    const int m=15;
    double v[m],s=0; 
    cout<<"Введите массив из 15 чисел\n";
    for (int i=0; i<m; ++i)
    {
        cin>>v[i];
 
        if (v[i]<0)
            a=i;                              
    } 
    if(a < 14)
        s = v[a] + v[a+1];     
    else
        s = v[a];               
    cout << "Сумма элементов массива s= " << s << endl;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 07:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужно немного изменить код (сумма от последнего отрицательного элемента массива до первого положительного) (C++):

Сумма элементов массива, расположенных после первого положительного элемента - C++
Помогите доделать последний пункт задачи, пожалуйста! Работаю в Visual Studio 2005, так уж заставили.. В интернете искал, но что-то...

Сумма элементов массива, расположенных после первого положительного элемента - C++
Задание: В одномерном массиве, состоящем из n действительных элементов, найдите: 1) номер максимального по модулю элемента массива; ...

Сумма элементов массива, расположенных после первого положительного элемента - C++
Прошу, помогите с задачей... В одномерном массиве, состоящем из n вводимых с клавиатуры целых элементов, вычислить сумму элементов...

Найти величину и номер первого отрицательного и последнего положительного элементов в массиве - C++
хелп с программой. Найти величину и номер первого отрицательного и последнего положительного элементов в массиве вещественного типа...

Определить порядковые номера и значения первого положительного и п оследнего отрицательного элементов массива Z. - C++
http://www.cyberforum.ru/attachment.php?attachmentid=29664&amp;stc=1&amp;d=1272928037

Нахождение последнего отрицательного элемента массива - C++
Программа ищет последний отрицательного элемент массива. Не могу понять ошибки программы: 3 from F:\...\2_17.C In file included from...

22
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 130
26.05.2013, 12:21  [ТС] #16
Цитата Сообщение от Нету имени Посмотреть сообщение
Вижу что работает только что он считает то?
0
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
26.05.2013, 12:48 #17
Цитата Сообщение от MishkaSh Посмотреть сообщение
Вижу что работает только что он считает то?
Маленькая поправка в коде,
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
#include<iostream>
#include<clocale>
using namespace std;
 
int main() { setlocale(LC_ALL,"Rus");
 
    int mass[15];
    
    int perv_polozh = 0;
    int raschet = 0;
    
    for (int i=0; i<15; i++) {
        cout << "Введите " << i+1 << " число: "; cin >> mass[i];
        
        // находим первое положительное число 
        if(mass[i] > 0 && perv_polozh == 0) {
            perv_polozh = mass[i];
            raschet = mass[i];
        }
        // сумма от первого положительного до последнего отрицательного
        if(mass[i] < 0 && perv_polozh != 0) {
           raschet = raschet + mass[i];
        }
    }
    
    cout << "Первое положительное число: " << perv_polozh   << endl
         << "Сумма элементов массива: "    << raschet       << endl;
    
cin.get();
cin.get();
 
return 0;
}
сейчас должно быть правильно
0
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 130
26.05.2013, 12:53  [ТС] #18
Цитата Сообщение от Нету имени Посмотреть сообщение
Маленькая поправка в коде,
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
#include<iostream>
#include<clocale>
using namespace std;
 
int main() { setlocale(LC_ALL,"Rus");
 
    int mass[15];
    
    int perv_polozh = 0;
    int raschet = 0;
    
    for (int i=0; i<15; i++) {
        cout << "Введите " << i+1 << " число: "; cin >> mass[i];
        
        // находим первое положительное число 
        if(mass[i] > 0 && perv_polozh == 0) {
            perv_polozh = mass[i];
            raschet = mass[i];
        }
        // сумма от первого положительного до последнего отрицательного
        if(mass[i] < 0 && perv_polozh != 0) {
           raschet = raschet + mass[i];
        }
    }
    
    cout << "Первое положительное число: " << perv_polozh   << endl
         << "Сумма элементов массива: "    << raschet       << endl;
    
cin.get();
cin.get();
 
return 0;
}
сейчас должно быть правильно
Он считает, но не правильно даже сам посмотри
0
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
26.05.2013, 13:03 #19
Цитата Сообщение от MishkaSh Посмотреть сообщение
Он считает, но не правильно даже сам посмотри
после исправлений должно правильно( из за этой ошибки я и сделал булевскую проверку )
посмотрим на новый скрин, и посчитаем
Нужно немного изменить код (сумма от последнего отрицательного элемента массива до первого положительного)
Самый первый положительное число находится в 4 массиве и равно оно 5
1ое отрицательное число находится в 7 массиве и равно -5
2ое отрицательное число находится в 8 массиве и равно -8
3ье отрицательное число находится в 9 массиве и равно -2
4ое отрицательное число находится в 13 массиве и равно -6

считаем 5 + (-5) + (-8) + (-2) + (-6) = -16
0
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 130
26.05.2013, 13:11  [ТС] #20
Цитата Сообщение от Нету имени Посмотреть сообщение
после исправлений должно правильно( из за этой ошибки я и сделал булевскую проверку )
посмотрим на новый скрин, и посчитаем
Вложение 273016
Самый первый положительное число находится в 4 массиве и равно оно 5
1ое отрицательное число находится в 7 массиве и равно -5
2ое отрицательное число находится в 8 массиве и равно -8
3ье отрицательное число находится в 9 массиве и равно -2
4ое отрицательное число находится в 13 массиве и равно -6

считаем 5 + (-5) + (-8) + (-2) + (-6) = -16
Так мне нужно чтоб он числа складывал в промежутке от первого положительного до первого отрицательного
0
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
26.05.2013, 13:25 #21
Почитаем твой первый пост
Цитата Сообщение от MishkaSh Посмотреть сообщение
Как сделать чтобы он считал сумму элементов от первого положительного до последнего отрицательного.
Я тебе и подсказал, как так сделать, а тут я узнаю, что нужно было делать
Цитата Сообщение от MishkaSh Посмотреть сообщение
от первого положительного до первого отрицательного
истолковывай свою просьбу четче

Вот исправленый вариант,
Цитата Сообщение от MishkaSh Посмотреть сообщение
от первого положительного до первого отрицательного
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
#include<iostream>
#include<clocale>
using namespace std;
 
int main() { setlocale(LC_ALL,"Rus");
 
    int mass[15];
    
    int perv_polozh = 0;
    int raschet = 0;
    
    for (int i=0; i<15; i++) {
        cout << "Введите " << i+1 << " число: "; cin >> mass[i];
        
        // находим первое положительное число 
        if(mass[i] > 0 && perv_polozh == 0) {
            perv_polozh = mass[i];
            raschet = mass[i];
        }
        // сумма от первого положительного до последнего отрицательного
        if(mass[i] < 0 && perv_polozh != 0 && raschet == perv_polozh) {
            raschet = raschet + mass[i];
        }
    }
    
    cout << "Первое положительное число: " << perv_polozh   << endl
         << "Сумма элементов массива: "    << raschet       << endl;
    
cin.get();
cin.get();
 
return 0;
}
и скрин
Нужно немного изменить код (сумма от последнего отрицательного элемента массива до первого положительного)
0
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 130
26.05.2013, 17:10  [ТС] #22
Цитата Сообщение от Нету имени Посмотреть сообщение
Почитаем твой первый пост

Я тебе и подсказал, как так сделать, а тут я узнаю, что нужно было делать

истолковывай свою просьбу четче

Вот исправленый вариант,


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
#include<iostream>
#include<clocale>
using namespace std;
 
int main() { setlocale(LC_ALL,"Rus");
 
    int mass[15];
    
    int perv_polozh = 0;
    int raschet = 0;
    
    for (int i=0; i<15; i++) {
        cout << "Введите " << i+1 << " число: "; cin >> mass[i];
        
        // находим первое положительное число 
        if(mass[i] > 0 && perv_polozh == 0) {
            perv_polozh = mass[i];
            raschet = mass[i];
        }
        // сумма от первого положительного до последнего отрицательного
        if(mass[i] < 0 && perv_polozh != 0 && raschet == perv_polozh) {
            raschet = raschet + mass[i];
        }
    }
    
    cout << "Первое положительное число: " << perv_polozh   << endl
         << "Сумма элементов массива: "    << raschet       << endl;
    
cin.get();
cin.get();
 
return 0;
}
и скрин
Вложение 273039
И все равно он как то не так считает
0
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
27.05.2013, 06:22 #23
Вот подправил немного код, для варианта
от первого положительного до последнего отрицательного

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
#include<iostream>
#include<clocale>
using namespace std;
 
int main() { setlocale(LC_ALL,"Rus");
 
    int mass[15];
    
    int perv_polozh     = 0;
    int posledniy_otriz = 0;
    int raschet         = 0;
    int start, end;
    
    for (int i=0; i<15; i++) {
        cout << "Введите " << i+1 << " число: "; cin >> mass[i];
        
        // находим первое положительное число 
        if(mass[i] > 0 && perv_polozh == 0) {
            perv_polozh = mass[i];
            start = i;
        }
        // находим первое отрицательное число
        if(mass[i] < 0 && perv_polozh != 0) {
            posledniy_otriz = mass[i];
            end = i;
        }
    }
    
    while (start <= end) {
        raschet = raschet + mass[start];
        start++;
    } 
    
    cout << "Первое положительное число: " << perv_polozh   << endl
         << "Последние отрицательное число: " << posledniy_otriz << endl
         << "Сумма элементов массива: "    << raschet       << endl;
    
cin.get();
cin.get();
 
return 0;
}
Нужно немного изменить код (сумма от последнего отрицательного элемента массива до первого положительного)
1
27.05.2013, 06:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2013, 06:22
Привет! Вот еще темы с ответами:

Вычислить максимальный элемент массива до первого нулевого и сумму элементов до последнего положительного. - C++
В одномерном массиве, состоящем из n вещественных элементов вычислить: 1. Максимальный элемент массива, расположенный до первого...

Найти номер последнего отрицательного элемента массива - C++
# include &lt;iostream&gt; using namespace std; void main () { int i=0; int p; setlocale(LC_ALL, &quot;rus&quot;); cout&lt;&lt;&quot;Введите числа...

Матрица динамическая. 1. максимальный элемент массива; 2. сумму элементов массива, расположенных до последнего положительного элемента - C++
Вариант 5 В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1. максимальный элемент массива; 2. сумму элементов...

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


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

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

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