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

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

Войти
Регистрация
Восстановить пароль
 
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 104
#1

Прерывается выполнение программы - C++

08.12.2013, 22:48. Просмотров 416. Ответов 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
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
cout<<"elementov v macccive 100"<<endl;
 float a[100];//объявляем массив
 int n;
 cout<<"Vvedite n<=100 (kol-vo elementov v maccive)"<<endl;
cin>>n;
 for (int i=0; i<n; i++)
 {cout<<"a["<<i<<"]=";cin>>a[i];}
 int one=0, second;// One=0 если максимальный элемент стоит первым
 float maxim, minim;
 maxim=a[0];
  minim=a[0];
 
 for (int i=1; i<n; i++)
 {
 if (maxim<a[i])
 {maxim=a[i];//нашел максимум
one=i;}
 
if (minim>=a[i])
 {minim=a[i];//нашел минимум
second=i;}
 }
 
if (one<second)//если максимальный элемент первее минимального, то выполняется цикл под условием
 {float s=0;
 for (int j=one+1; j<second; j++)
 {s+=a[j];}//считаем сумму меж макс. и миним.
 cout<<"s="<<s<<endl;}
else
 cout<<"Maksimal'nyj jelement vstrechaetsja pozzhe minimal'nogo"<<endl;
 
 
 
 return 0;}
0
Миниатюры
Прерывается выполнение программы   Прерывается выполнение программы  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2013, 22:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Прерывается выполнение программы (C++):

Выполнение программы - C++
Привет, я только начал изучать C++. По книге &quot;Язык программирования С&quot; Кернигана Б., Ритчи Д. Первая программа, которую я пытался...

Неправильное выполнение программы - C++
Задание: В одномерном массиве, состоящем из n вещественных элементов, вычислить: • номер минимального элемента массива; • сумму...

Выполнение программы в облаке - C++
Доброго времени суток. Возник вопрос- могу ли я, обычный пользователь ПК, отправить свою программу (exe-файл) куда-то в облако для...

Некорректное выполнение программы - C++
Суть проблемы: при выполнении программы выдаются корявые значения (-1.INF). Понимаю, что в программе где-то допущена ошибка, но сам уже...

Зациклить выполнение программы - C++
Помогите,как сделать чтобы при завершении программы, при нажатии определенной кнопки она начинала работать снова. Т.е. чтобы не...

Выполнение программы через функцию - C++
Задание: Ввести массивом 10 , 8 ,6 чисел и узнать кол-во положительных и отрицательных.Скажите, как сделать программу, чтобы она выполняла...

9
Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
08.12.2013, 22:51 #2
filimoncc, а вы не боитесь выхода за границы массива в 32 - 33 строках?
0
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 104
08.12.2013, 23:15  [ТС] #3
Ryuk, боюсь, однако в каком он месте выходит за границу? Можете правильный код дать?
И вообще, когда максимальный элемент первее минимального, то программа работает, а когда наоборот, то вылетает.
0
Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
08.12.2013, 23:20 #4
filimoncc, я же вам указал строки, в которых ошибка. У вас элемент массива j, может быть равен 15, в то время как в массиве всего 10 элементов.
0
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 104
08.12.2013, 23:25  [ТС] #5
А ещё такая штука странная выходит (см. скриншот):
0
Миниатюры
Прерывается выполнение программы  
Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
08.12.2013, 23:27 #6
filimoncc, вы о последних двух строках?
0
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 104
08.12.2013, 23:32  [ТС] #7
Почему, когда заполняю массив цифрами 1 2 3 4 5 - вылетает, а 1 1 1 1 5 - работает?!?

Добавлено через 4 минуты
Ryuk, я о том, что программа в разных вариациях чисел ведет себя по разному.
0
Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
08.12.2013, 23:52 #8
filimoncc, для начала избавьтесь от выхода за границы массива. В проверке на минимум, у вас стоит условие >=, если будут два одинаковых минимальных элемента в начале и в конце массива, то у вас i, всегда будет равно последнему индексу элемента. В начале программы вы сначала объявляете массив, а затем даете ему размерность 100, хотя потом вводите n как размерность. По последним стандартам С++, можно сначала ввести n, а затем объявить массив
C++
1
float a[n];
Я указал на ошибки которые попались на глаза. Исправьте их, а потом посмотрим.
0
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 104
09.12.2013, 00:13  [ТС] #9
Цитата Сообщение от Ryuk Посмотреть сообщение
filimoncc, для начала избавьтесь от выхода за границы массива. В проверке на минимум, у вас стоит условие >=, если будут два одинаковых минимальных элемента в начале и в конце массива, то у вас i, всегда будет равно последнему индексу элемента. В начале программы вы сначала объявляете массив, а затем даете ему размерность 100, хотя потом вводите n как размерность. По последним стандартам С++, можно сначала ввести n, а затем объявить массив
C++
1
float a[n];
Я указал на ошибки которые попались на глаза. Исправьте их, а потом посмотрим.
1)Не понимаю о каком выходе заграницу массива вы говорите, всё там верно.
2) Про поиск минимального. В условие сказано, что Подсчитать сумму элементов, расположенных между первым максимальным и последним минимальными элементами.
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
37
38
39
40
41
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
cout<<"Vvedite kol-vo elementov v maccive"<<endl;
 int n;
cin>>n;
 float a[n];//объявляем массив
 
 
 for (int i=0; i<n; i++)
 {cout<<"a["<<i<<"]=";cin>>a[i];}
 int one=0, second;// One=0 если максимальный элемент стоит первым
 float maxim, minim;
 maxim=a[0];
  minim=a[0];
 
 for (int i=1; i<n; i++)
 {
 if (maxim<a[i])
 {maxim=a[i];//нашел максимум
one=i;}
 
if (minim>=a[i])
 {minim=a[i];//нашел минимум
second=i;}
 }
 
if (one<second)//если максимальный элемент первее минимального, то выполняется цикл под условием
 {float s=0;
 for (int j=one+1; j<second; j++)
 {s+=a[j];}//считаем сумму меж макс. и миним.
 cout<<"s="<<s<<endl;}
else
 cout<<"Maksimal'nyj jelement vstrechaetsja pozzhe minimal'nogo"<<endl;
 
 
 
 return 0;}
Добавлено через 4 минуты
Ryuk, помогите в этой теме, а то уже забыли В чём ошибка?
0
Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
09.12.2013, 00:29 #10
filimoncc, странного ничего нет, ваш массив объявлялся изначально из 100 элементов, затем вы крутили циклы до введенного n, а если n = 20, то остальные 80 элементов просто висят в памяти.
0
09.12.2013, 00:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2013, 00:29
Привет! Вот еще темы с ответами:

opendialog блокирует выполнение программы - C++
Пишу программу, краткое ее описание: есть главная форма, на ней нажимаем кнопку &quot;Старт&quot;, начинается обработка данных с COM порта, нажимаем...

Не происходит полное выполнение программы - C++
Всем привет. Только только начал изучать программирование и сразу проблема, которую не удалось нагуглить. Итак, написал код программы....

Выполнение программы простой структуры - C++
1. Для задачи 1 определить тип заданных выражений и найти их значения. 2. Составить систему тестов и вычислить полученное выражение для...

Быстрая компиляция и выполнение программы - C++
Кто-нибудь знает, каким образом можно замедлить программу при её компиляции и последующем выполнении? :(


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

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

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