1 / 1 / 0
Регистрация: 15.06.2021
Сообщений: 19
1

Найти сумму элементов массива, расположенных между первым и последним отрицательными элементам

15.06.2021, 11:52. Показов 690. Ответов 7
Метки нет (Все метки)

Найти сумму элементов массива, расположенных между первым и последним
отрицательными элементами.

Никак не могу найти ошибку
В sum копируется последний отрицательный элемент. Хотелось бы не пример как нужно было всё сделать, а объяснение в чём именно ошибка.
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(LC_ALL, "ru");
    int arr[5], max, min;
    for (int i = 0; i < 5; i++)
        cin >> arr[i];
 
    for (int i = 0; i < 5; i++)
        if (arr[i] < 0) { min = i; continue; }
 
    for(int i = min; i<5; i++)
        if (arr[i] < 0) max = i;
 
    int sum = 0;
 
    for (int i = min; i < max+1; i++)
        sum += arr[i];
 
    cout << sum;
        return 0;
    }
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2021, 11:52
Ответы с готовыми решениями:

Найти сумму элементов массива, расположенных между первым и последним отрицательными элементами
4 В одномерном массиве, состоящем из 20 вещественных элементов, вычислить: сумму элементов...

Найти сумму элементов расположенных между первым и последним отрицательными элементами массива
Дан целочисленный масив размера N.Найти суму элементов расположенных между первым и последним...

Найти сумму элементов массива, расположенных между первым и последним отрицательными элементами
Буду очень благодарен если кто поможет)

Найти сумму элементов массива, расположенных между первым и последним отрицательными элементами
Народ буду очень благодарен если поможете с этим) 1. Найти сумму элементов массива с нечетными...

7
Модератор
Эксперт по электронике
8695 / 6493 / 879
Регистрация: 14.02.2011
Сообщений: 22,714
15.06.2021, 12:00 2
дан массив {-1,-2, 3, 5, -7,}
какое число у тебя будет в max ?
Цитата Сообщение от Akar- Посмотреть сообщение
Хотелось бы не пример как нужно было всё сделать, а объяснение в чём именно ошибка.
в поисках последнего элемента
последний это первый с конца, следовательно поиск нужно вести с конца
Цитата Сообщение от Akar- Посмотреть сообщение
if (arr[i] < 0) { min = i; continue; }
зачем здесь continue зачем продолжить поиск после первого найденного? здесь уместней break
0
3652 / 2989 / 828
Регистрация: 25.03.2012
Сообщений: 11,024
Записей в блоге: 1
15.06.2021, 12:06 3
Цитата Сообщение от ValeryS Посмотреть сообщение
зачем здесь continue зачем продолжить поиск после первого найденного? здесь уместней break
ну вообще-то именно затем, что ищется последний. да, несколько не оптимально из-за того что сначала, а не с конца массива. Но автор похоже всё-таки учёл это.

Добавлено через 1 минуту
упс, вчитался в задание, поторопился с комментом. Да, там нужно было первый найти и делается это неверно
0
Модератор
Эксперт по электронике
8695 / 6493 / 879
Регистрация: 14.02.2011
Сообщений: 22,714
15.06.2021, 12:06 4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
ну вообще-то именно затем, что ищется последний. да,
тогда в min последний элемент
а max тогда что?
0
1 / 1 / 0
Регистрация: 15.06.2021
Сообщений: 19
15.06.2021, 12:29  [ТС] 5
Ввёл данные что вы написали, получилось -2. Значит в sum копируется второй отрицательный элемент.
min - первый отрицательный элемент, max - второй
Можете пожалуйста разъяснить что значит поиск с конца ?
И как делать ответы на сообщения в этом форуме ? Только что зарегистрировался.

Добавлено через 16 минут
Ввёл данные что вы написали, получилось -2. Значит в sum копируется второй отрицательный элемент.
min - первый отрицательный элемент, max - второй
Можете пожалуйста разъяснить что значит поиск с конца ?
И как делать ответы на сообщения в этом форуме ? Только что зарегистрировался.
0
Модератор
Эксперт по электронике
8695 / 6493 / 879
Регистрация: 14.02.2011
Сообщений: 22,714
15.06.2021, 12:30 6
Цитата Сообщение от Akar- Посмотреть сообщение
Можете пожалуйста разъяснить что значит поиск с конца ?
вот на основе твоего кода, мелкие исправления
C++
1
2
3
4
5
6
7
8
9
10
//поиск с начала, первый отрицательный элемент
for (int i = 0; i < 5; i++)
        if (arr[i] < 0) 
          { min = i;
            break; }
 // поиск с конца, последний отрицательный элемент
    for(int i = 5-1; i>=0; i--)
        if (arr[i] < 0)
          { max = i;
            break; }
подумай еще вот о чем, что если в массиве будет один отрицательный элемент или вообще не будет
как обработать эту ситуацию
0
700 / 522 / 301
Регистрация: 24.02.2017
Сообщений: 1,873
15.06.2021, 12:49 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
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "ru");
    int arr[5], max=0, min=0;
    for (int i = 0; i < 5; i++)
        cin >> arr[i];
 
    for (int i = 0; i < 5; i++)
        if (arr[i] < 0) { min = i;
             for( i ; i<5; i++)
                 if (arr[i] < 0) max = i;
       }
    int sum = 0;
 
    for (int i = min; i < max+1; i++)
        sum += arr[i];
 
    cout <<sum;
 
    return 0;
}
Добавлено через 1 минуту
только правильно расставить фигурные скобки

Добавлено через 10 минут
Цитата Сообщение от Akar- Посмотреть сообщение
В sum копируется последний отрицательный элемент.
если его не надо копировать, то сделать так:
C++
1
2
for (int i = min; i < max; i++)
        sum += arr[i];
0
1 / 1 / 0
Регистрация: 15.06.2021
Сообщений: 19
15.06.2021, 16:55  [ТС] 8
Цитата Сообщение от ValeryS Посмотреть сообщение
вот на основе твоего кода, мелкие исправления
Да, такая запись лучше. Спасибо.
Цитата Сообщение от ValeryS Посмотреть сообщение
подумай еще вот о чем, что если в массиве будет один отрицательный элемент или вообще не будет
как обработать эту ситуацию
Ты про защиту от дурака что ли ? Думаю так:
C++
1
2
3
4
5
6
7
if(min==max) 
cout << "Error"  \\ если один отрицательный элемент
int n=0;
for(int i =0; i<5; i++){
if(arr[i] < 0) n = arr[i]
else (n=0)
cout << "Error"  \\если ни одного
Добавлено через 3 часа 50 минут
Правильное решение найдено:
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(LC_ALL, "ru");
    int arr[5]{ -1, 9, 3, 5, -7, }, max = 0, min = 0;
 //  for (int i = 0; i < 5; i++)
   //     cin >> arr[i];
 
    for (int i = 0; i < 5; i++)
        if (arr[i] < 0) { min = i; break; }
            for (int i = 5-1; i >=0; i--)
                if (arr[i] < 0) { max = i; break; }
          
    int sum = 0;
 
    for (int i = min+1; i < max; i++)
        sum += arr[i];
 
    cout << sum;
 
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2021, 16:55
Помогаю со студенческими работами здесь

Найти сумму элементов массива, расположенных между первым и последним отрицательными элементами
Вот условие если что: В одномерном массиве, состоящем из n действительных элементов, найдите сумму...

Найти произведение и сумму элементов массива, расположенных между первым и последним отрицательными элементами
Привет, нужно найти произведение и сумму элементов массива, расположенных между первым и последним...

Массив: Найти сумму элементов массива, расположенных между первым и последним отрицательными элементами.
Помогите, пожалуйста. Как решить в с++. Дан целочисленный массив размера N. Найти сумму...

Найти произведение и сумму элементов массива, расположенных между первым и последним отрицательными элементами
Объясните пожалуйста почему функции выдают нули :) #include &quot;pch.h&quot; #include &lt;iostream&gt;...

Вычислить сумму элементов массива, расположенных между первым и последним отрицательными
В одномерном массиве, состоящем из М вещественных элементов, вычислить сумму элементов массива,...

Сумму элементов массива, расположенных между первым и последним отрицательными элементами
Задание: Нужно найти сумму элементов массива, расположенных между первым и последним...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru