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

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

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

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

26.05.2013, 07:29. Просмотров 1136. Ответов 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
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
26.05.2013, 08:09 #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
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<iostream>
using namespace std;
 
int main() {
 
    int mass[15] = { -5, -7, -8,  6,  4,
                      4,  5,  6, -4, -1,
                     -1,  5, -4,  8, -4
                   };
                   
    int perv_polozh = 0;    
    bool pp = true;
 
    for (int i=0; i<15; i++) {
        // находим первое положительное число
        // и если мы один раз нашли, и потом в процессе вычисления
        // perv_polozh  будет равен 0, то добавляем булевскую проверку,
        // чтобы не трогать снова первый цикл if()
        if(perv_polozh == 0 && pp == true) {
            if(mass[i] > 0) {
                perv_polozh = mass[i];
                pp = false;
            }
        }
        // сумма от первого положительного до последнего отрицательного
        if(pp == false) {
            if(mass[i] < 0) {
                perv_polozh = perv_polozh + mass[i];
            }
        }
    }
    
    cout << perv_polozh << endl;
    
cin.get();
}
0
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 130
26.05.2013, 08:13  [ТС] #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
35
36
#include<iostream>
using namespace std;
 
int main() {
 
    int mass[15] = { -5, -7, -8,  6,  4,
                      4,  5,  6, -4, -1,
                     -1,  5, -4,  8, -4
                   };
                   
    int perv_polozh = 0;    
    bool pp = true;
 
    for (int i=0; i<15; i++) {
        // находим первое положительное число
        // и если мы один раз нашли, и потом в процессе вычисления
        // perv_polozh  будет равен 0, то добавляем булевскую проверку,
        // чтобы не трогать снова первый цикл if()
        if(perv_polozh == 0 && pp == true) {
            if(mass[i] > 0) {
                perv_polozh = mass[i];
                pp = false;
            }
        }
        // сумма от первого положительного до последнего отрицательного
        if (pp == false) {
            if (mass[i] < 0) {
                perv_polozh = perv_polozh + mass[i];
            }
        }
    }
    
    cout << perv_polozh << endl;
    
cin.get();
}
А можно без булевой переменной и массив я ввожу в компиляторе, а не задаю изначально
0
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
26.05.2013, 08:32 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    for (int i=0; i<15; i++) {
        cout << "Введите " << i+1 << " число: "; cin >> mass[i];
        
        // находим первое положительное число 
            if(mass[i] > 0) {
                if(perv_polozh == 0 ) {
                    perv_polozh = mass[i];
                }
            }
        
        // сумма от первого положительного до последнего отрицательного
        if(mass[i] < 0) {
                perv_polozh = perv_polozh + mass[i];
        }
    }
0
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 130
26.05.2013, 08:41  [ТС] #5
Цитата Сообщение от Нету имени Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    for (int i=0; i<15; i++) {
        cout << "Введите " << i+1 << " число: "; cin >> mass[i];
        
        // находим первое положительное число 
            if(mass[i] > 0) {
                if(perv_polozh == 0 ) {
                    perv_polozh = mass[i];
                }
            }
        
        // сумма от первого положительного до последнего отрицательного
        if(mass[i] < 0) {
                perv_polozh = perv_polozh + mass[i];
        }
    }
Сейчас попробую

Добавлено через 4 минуты
Цитата Сообщение от Нету имени Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    for (int i=0; i<15; i++) {
        cout << "Введите " << i+1 << " число: "; cin >> mass[i];
        
        // находим первое положительное число 
            if(mass[i] > 0) {
                if(perv_polozh == 0 ) {
                    perv_polozh = mass[i];
                }
            }
        
        // сумма от первого положительного до последнего отрицательного
        if(mass[i] < 0) {
                perv_polozh = perv_polozh + mass[i];
        }
    }
Что-то не получается, можешь полный код показать?
0
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
26.05.2013, 08:42 #6
Цитата Сообщение от 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
34
#include<iostream>
#include<clocale>
using namespace std;
 
int main() { setlocale(LC_ALL,"Rus");
 
    int mass[15];
    
    int perv_polozh = 0;
    bool pp = true;
    
    for (int i=0; i<15; i++) {
        cout << "Введите " << i+1 << " число: "; cin >> mass[i];
        
        // находим первое положительное число 
            if(mass[i] > 0 && pp == true)   {
                if(perv_polozh == 0) {
                    perv_polozh = mass[i];
                    pp = false;
                }
            }
        
        // сумма от первого положительного до последнего отрицательного
        if (pp == false) {
            if(mass[i] < 0) {
                    perv_polozh = perv_polozh + mass[i];
            }
        }
    }
    
    cout << perv_polozh << endl;
    
cin.get();
}
А что обязательно, чистый цикл должен быть?
0
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 130
26.05.2013, 08:46  [ТС] #7
Цитата Сообщение от Нету имени Посмотреть сообщение
К сожелению, я незнаю другого способа, чтобы не переприсваивать, первому положительнумы числу, какое-нибуть другое положительное
такой цикл только правильный, ну я до другого додуматься немогу
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<iostream>
#include<clocale>
using namespace std;
 
int main() { setlocale(LC_ALL,"Rus");
 
    int mass[15];
    
    int perv_polozh = 0;
    bool pp = true;
    
    for (int i=0; i<15; i++) {
        cout << "Введите " << i+1 << " число: "; cin >> mass[i];
        
        // находим первое положительное число 
            if(mass[i] > 0 && pp == true)   {
                if(perv_polozh == 0) {
                    perv_polozh = mass[i];
                    pp = false;
                }
            }
        
        // сумма от первого положительного до последнего отрицательного
        if (pp == false) {
            if(mass[i] < 0) {
                    perv_polozh = perv_polozh + mass[i];
            }
        }
    }
    
    cout << perv_polozh << endl;
    
cin.get();
}
А что обязательно, чистый цикл должен быть?
Да надо именно один цикл, не, ты покажешь показать код без булевой переменной?
0
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
26.05.2013, 08:56 #8
Да вот такого додумался, мы первое положительное число присваиваем один раз, и больше не трогаем, а расчеты проводим в другой переменной, такой возможен вариант??

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

вот без булевской переменной, но я его не изменял, как предлагал выше строчками
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
#include<iostream>
#include<clocale>
using namespace std;
 
int main() { setlocale(LC_ALL,"Rus");
 
    int mass[15];
    
    int perv_polozh = 0;
    
    for (int i=0; i<15; i++) {
        cout << "Введите " << i+1 << " число: "; cin >> mass[i];
        
        // находим первое положительное число 
            if(mass[i] > 0 )   {
                if(perv_polozh == 0) {
                    perv_polozh = mass[i];
                }
            }
        
        // сумма от первого положительного до последнего отрицательного
        if(mass[i] < 0) {
             perv_polozh = perv_polozh + mass[i];
        }
        
    }
    
    cout << perv_polozh << endl;
    
cin.get();
}
Думаю да возможен
0
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
26.05.2013, 09:02 #10
Цитата Сообщение от 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
#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) {
           raschet = raschet + mass[i];
        }
    }
    
    cout << "Первое положительное число: " << perv_polozh  
         << "Сумма элементов массива: "    << raschet 
         << endl;
    
cin.get();
}
0
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 130
26.05.2013, 09:11  [ТС] #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
24
25
26
27
28
29
30
31
#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) {
           raschet = raschet + mass[i];
        }
    }
    
    cout << "Первое положительное число: " << perv_polozh  
         << "Сумма элементов массива: "    << raschet 
         << endl;
    
cin.get();
}
LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден
Вот что пишет и вопрос где return o; ?
0
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
26.05.2013, 09:38 #12
Цитата Сообщение от MishkaSh Посмотреть сообщение
return o;
return 0;

Цитата Сообщение от MishkaSh Посмотреть сообщение
LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден
А ты на чем программы компилируешь ,я имею ввиду какая среда

И ещё, у меня всё работает, смотри скрин рабочего стола
Нужно немного изменить код (сумма от последнего отрицательного элемента массива до первого положительного)
0
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
26.05.2013, 09:45 #13
Вот что на форуме нашел, у тебя что-то со студией и .Net Framework
Ошибка при построении: сбой при преобразовании в COFF: файл недопустим или поврежден
0
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 130
26.05.2013, 10:26  [ТС] #14
Цитата Сообщение от Нету имени Посмотреть сообщение
return 0;


А ты на чем программы компилируешь ,я имею ввиду какая среда

И ещё, у меня всё работает, смотри скрин рабочего стола
Вложение 272955
Он считает сумму да? Можешь скрин показать?
0
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
26.05.2013, 11:34 #15
Цитата Сообщение от MishkaSh Посмотреть сообщение
Он считает сумму да? Можешь скрин показать?
Нужно немного изменить код (сумма от последнего отрицательного элемента массива до первого положительного)
0
26.05.2013, 11:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2013, 11:34
Привет! Вот еще темы с ответами:

Вычислить максимальный элемент массива до первого нулевого и сумму элементов до последнего положительного. - 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++
Здравствуйте. Я студент. Не могу понять как найти сумму элементов массива до последнего положительного элемента... Пытался идти с конца, но...


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

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

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