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

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

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

Программа, во время выполнения, после ввода, прекращает работу - C++

07.07.2014, 00:13. Просмотров 403. Ответов 6
Метки нет (Все метки)

Проблема такая:
Предисловие... Недавно я уже обращался сюда на форум из-за того, что с функцией randomize программа не компилировалась. Я, при помощи тех, кто мне помог, определил, как нужно было решить проблему.Ну и, собственно, решил проблему. Переделал все как требуется.

Сначала скомпилировал программу: все верно. Запустил: спрашивает "введите размер массива:", я ему ввожу "3" (ради примера). Дальше программа прерывается. Мне кажется, что происходит переполнение стека... а где?! чему там переполняться-то? Границы массива введены; рандомное число в границах от -50 до 5; произведение, я думаю, адекватное...
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
#include<stdio.h>
#include<cstdlib>
int main()
{
      int A[20],j,j1,k,p=1,min;
      printf("Vvedite razmer massiva: ");
      scanf("%d",k);
      for(j=1;j<=k;j++)
      {
        A[j]=-50+rand() % 5;
      }   
      for(j=1;j<=k;j++)
      {
        p=p*A[j];
      }
      min=A[1];
      for(j=2;j<=k;j++)
      {
      if (A[j]<min)
      {
                  min=A[j];
                  j1=j;
                  }
              }
      printf("Proizvedenie=%d .\n",&p);
      printf("Naimenjshee=%d .\n",&min);
      printf("Nomer naimenjshego=%d .\n",&j1);
      }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2014, 00:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа, во время выполнения, после ввода, прекращает работу (C++):

[Символьная строка] После ввода количества символов в символьной строке, программа прекращает работу - C++
#include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;locale&gt; int main() { setlocale(LC_ALL, &quot;RUSSIAN&quot;); ...

ЕХЕ файл после ввода элементов вектора прекращает работу - C++
Вот такой код, вычисление евклидовой нормы вектора 2 способами(опыт программирования - два дня, поэтому код, понятное дело, кривой): ...

Прекращает работу программу после ее запуска, в чем дело - C++
Вот код программы по указателям, в итоге должен выводить на экран значение 6, но при запуске программа виснет и прекращает свою работу,...

Почему программа прекращает свою работу, не дойдя до конца конструктора - C++
Инструкция по запуску: &lt;имя.exe&gt; &lt;inputfilename&gt; &lt;outputfilename&gt; &lt;-s|-i&gt; &lt;-a|-d&gt; Так как в коллере есть cout &lt;&lt; &quot;Constructor passed...&quot;,...

Почему при вводе элементов массива, программа прекращает работу или работает не так, как ожидается? - C++
При вводе элементов массива, программа прекращает работу или не правильно работает. Например если указать размер массива 10 , то ввод...

Программа пропускает вызов cin.getline() во время выполнения - C++
помогите исправить прогу, не работает cin.getline, просто пропускает ее(( void main() { setlocale(LC_ALL,&quot;russian&quot;); char...

6
DrOffset
7506 / 4502 / 1023
Регистрация: 30.01.2014
Сообщений: 7,362
07.07.2014, 00:46 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
jakis, в scanf надо передавать адрес переменной, а не саму переменную.
А в printf, наоборот, адрес передавать не надо.
1
jakis
1 / 1 / 0
Регистрация: 22.01.2012
Сообщений: 18
07.07.2014, 19:25  [ТС] #3
спасибо)
0
RaiaNKnight
96 / 70 / 7
Регистрация: 29.06.2011
Сообщений: 465
Записей в блоге: 1
07.07.2014, 19:27 #4
Цитата Сообщение от jakis Посмотреть сообщение
scanf("%d",k);
scanf("%d", &k); //& - надо!
0
jakis
1 / 1 / 0
Регистрация: 22.01.2012
Сообщений: 18
07.07.2014, 19:29  [ТС] #5
Цитата Сообщение от RaiaNKnight Посмотреть сообщение
scanf("%d", &k); //& - надо!
знаю-знаю, я просто один scanf заметил, а другой - нет. Пора мне на отдых...)
0
AlexVRud
466 / 177 / 46
Регистрация: 04.07.2014
Сообщений: 486
07.07.2014, 19:38 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Нумерация элементов массива с 0-ля. И у тебя были случайные числа от -50 до -46
C
1
2
3
4
for(j=0;j<k;j++)
{
 A[j]=-50+rand() % 56;
}
0
monolit
188 / 187 / 22
Регистрация: 24.03.2011
Сообщений: 670
Завершенные тесты: 1
07.07.2014, 19:39 #7
И нумерация массива с 0 начинается, а не с 1...
Так что если будет введено k=20, будет выход за границу - учитывая текущие циклы.
1
07.07.2014, 19:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2014, 19:39
Привет! Вот еще темы с ответами:

Организовать работу функции так, чтобы программа не дожидалась окончания её выполнения (многопоточность) - C++
Всем привет. Только начинаю применять многопоточность. В нижеследующем коде нужно организовать таким образом, чтобы программа не дожидалась...

Организация вычислений во время ввода данных программа С++ - C++
Помогите написать программу в С++ Дано натуральное число, в котором все цифры различны. Определить порядковый номер его максимальной...

Программа сворачивается сразу же после выполнения - C++
Есть система из трех уравнений, программа написана. Почему при вводе x=0 , y=0 окно вывода сразу сворачивается? #include &lt;iostream&gt; ...

Программа закрывается после ввода массива - C++
Доброго времени суток, помогите, пожалуйста, поправить код. Опыт программирования = 0. В visual studio 2013 запускается без ошибок, но...


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

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

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