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

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

Войти
Регистрация
Восстановить пароль
 
Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
#1

"Недостаточно памяти для запуска программы" - C++

17.12.2013, 10:35. Просмотров 659. Ответов 9
Метки нет (Все метки)

Задача - отсортировать случайный массив n=500 методом выбора.
Почему то неверно выводит на экран значения M и С, хотя под отладчиком все нормально считает, в чем может быть ошибка? М считает до n<300, а С вообще пишет ноль, хотя под отладчиком все красиво.
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include  <stdio.h>
#include  <conio.h>
#include <time.h>
#include  <stdlib.h>
#include <alloc.h>
#define ESC 27
 
int swap (int *y, int i, int j) //®Ў¬Ґ* н«Ґ¬Ґ*в®ў ¬*ббЁў*
 {
  int t; int M;
  t=y[i];
  y[i]=y[j];
  y[j]=t;
  M=1;
  return M;
 }
sum (int *y, int z)//Ї®¤бзҐв Є®*ва®«м*®© б㬬л
 {
  int i, sum=0;
  for (i=0;i<z;++i)
    sum+=y[i];
  return sum;
 }
void select (int *x,int k,int s) //б®авЁа®ўЄ* ўлЎ®а®¬
 {
  int S,min,t,i,j,num; long int C=0, M=0;
  for (j=0;j<k-1;++j)
  {
   num=j,
   min=x[j];
   for (i=j+1;i<k;++i) //*®¬Ґа ⥪г饣® и*Ј*
   {
    if (x[i]<min)  //Ї®ЁбЄ ¬Ё*Ё¬г¬* б।Ё ®бв*ўиЁебп н«Ґ¬Ґ*в®ў ¬*ббЁў*
     {
      min=x[i];
      num=i;
     }
     C++;
    }
   M+=swap (x,j,num);
   }
  for (i=0,S=1;i<k;++i)
   {
   if (x[i]>x[i+1])
     S++;
   }
  if (S>1)
   printf("\n Error \n");
  if (s!=sum(x,k))
   printf("\n ЋиЁЎЄ* б®авЁа®ўЄЁ, Ї®«гзҐ** *ҐўҐа**п Є®*ва®«м**п б㬬* \n");
  else
    printf("\n M=%d, C=%d,  \n",M,C);
 
 }
 
 
void main ()
 {
int i,n, sum, *a; char key;
  do
  {
   sum=0;
   randomize();
   clrscr ();
   fflush(stdin);
   printf("\n ‚ўҐ¤ЁвҐ §**зҐ*ЁҐ n - Є®«ЁзҐбвў® н«Ґ¬Ґ*в®ў ¬*ббЁў*   ");
   scanf("%d",&n);
   a=(int*)malloc(n*sizeof (int));
   
   for (i=0; i<n; i++)
    {
     a[i]=random(100);
     sum+=a[i]; //Ї®¤бзҐв Є®*ва®«м*®© б㬬л
    }
   select(a,n,sum);
   free(a);
   puts ("‚ўҐбвЁ ¤агЈ®Ґ Є®«ЁзҐбвў® н«Ґ¬Ґ*в®ў ¬*ббЁў*? (ЌҐв=Esc)");
   key=getch();
  }
  while (key!=ESC);
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2013, 10:35     "Недостаточно памяти для запуска программы"
Посмотрите здесь:

После запуска exe-файла выдаёт "Прекращена работа программы" - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; int main(){ cout &lt;&lt; &quot;Vvedite razmernost massiva \n&quot;; ...

Выделение памяти для "треугольного" массива - C++
Сразу извиняюсь за &quot;неграмотность&quot; в коде. #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; using namespace std; int...

Что лучше для хранения БД в динамической памяти "Связный список" или же просто в массиве? - C++
Всем доброго времени суток! Получил тему курсовой, попалась тема база данных на файле. Не долго думая как хранить все данные в...

Помогите придумать 12 функций программы для игры в "Спички" - C++
Помогите придумать 12 функций программы для игры в &quot;Спички&quot;. НА пример первая функция умственное развитие, вторая развитие логического...

Убрать вывод фразы "Для продолжения нажмите любую клавишу" по окончании работы программы - C++
Ребят как убрать написанное &quot;Для продолжения нажмите любую клавишу&quot; ????

Нужно написать код для программы, которая выводит на экран звездочки ("*") в таком порядке: - C++
Нужна помощь в решении проблемы. Правда язык обучения у меня английский, поэтому некоторые задания на английском. Задание #3: Нужно...

Задать предложение, содержащее предлог "для".Вывести на каком месте стоит предлог "для" - C++
Задать предложение, содержащее предлог &quot;для&quot;.Вывести на каком месте стоит предлог &quot;для&quot; Как написать данную программу на Си? ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,184
Завершенные тесты: 1
17.12.2013, 11:03     "Недостаточно памяти для запуска программы" #2
строка 42
C++
1
for (i=0,S=1;i<k-1;++i)
т.к. внутри идет обращение к x[i+1].
Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
17.12.2013, 11:16  [ТС]     "Недостаточно памяти для запуска программы" #3
Спасибо,точно, а я думаю, что он через раз пишет ошибку, а в другой раз не пишет. А почему программа неверно выводит значение С и М? Смотрю под отладчиком, все подсчитано, а на экране 0, как такое вообще может быть?

Добавлено через 2 минуты
Например, при n=500, значение М - количество перемещений 499, значение С - количество сравнений 124750 - это правильно и программа правильно подсчитала, а на экране С=0, ну как так?

Добавлено через 4 минуты
программа уже не пишет, что не хватает памяти, не хватало, когда я сделала тип данных массива а long, но потом поняла, что массиву и так достаточно
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,184
Завершенные тесты: 1
17.12.2013, 11:19     "Недостаточно памяти для запуска программы" #4
У меня в VS 2008 и debug и release выдает одинаковые ответы.
Может запускаете файл от старой компиляции?
Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
17.12.2013, 11:45  [ТС]     "Недостаточно памяти для запуска программы" #5
Это как? я перед запуском откомпилировала все заново и запускала через Borland C
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,184
Завершенные тесты: 1
17.12.2013, 12:54     "Недостаточно памяти для запуска программы" #6
Если есть ошибка компиляции, то запускается старый вариант.
Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
17.12.2013, 13:06  [ТС]     "Недостаточно памяти для запуска программы" #7
Но ошибки компиляции нет, по крайней мере не выводит ошибку
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
17.12.2013, 13:33     "Недостаточно памяти для запуска программы" #8
zss, что, и в борланде тоже запускается старый вариант? При чём тут студия?
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,184
Завершенные тесты: 1
17.12.2013, 15:20     "Недостаточно памяти для запуска программы" #9
У меня нет Борланда.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2013, 11:23     "Недостаточно памяти для запуска программы"
Еще ссылки по теме:

Можно ли получить адрес памяти где хранится буква "a" - C++
Всем привет! Пожалуйста объясните этот код ) char string = &quot;abcdef&quot;; cout &lt;&lt; string; // будет вывод abcdef cout &lt;&lt; *string; //...

что значит "поставить контроль памяти"? (в динамическом массиве) - C++
подскажите, пожалуйста. программа работает, но не совсем понял чего требует.

Класс "ArrayList", похоже на проблему с выделением памяти - C++
Вроде бы все работает, ошибок не выдает... но на выходе совсем не то, похоже на проблему с выделением памяти... ArrayList.h #pragma...

напишите программу! тема "динамическое распределение памяти"! - C++
Таблица футбольного чемпионата, в котором участвуют n команд, задана своей верхней правой частью в виде последовательности чисел 0, 1 или 3...

Поиск значения в памяти приложения ("Нет" читам!) - C++
Здравствуйте, жители КиберФорума! Играл недавно в немало известную игру Sniper Elite(1 часть, мультиплеер), читеров оказалось хоть ж*п*й...


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

Или воспользуйтесь поиском по форуму:
Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
18.12.2013, 11:23  [ТС]     "Недостаточно памяти для запуска программы" #10
, что же делать то?

Добавлено через 13 часов 54 минуты
А делать вот что - изменить тип данных на unsingnet long и выводить командой printf() по отдельности М и С. Видно функции printf() не хватает, чтобы запомнить обе переменные, слишком уж они большие.... другого варианта не вижу...

Добавлено через 31 минуту
И еще, надо при выводе ставить в команде printf () перед спецификатором d или u, букву l - чтобы функция поняла, что данные типа long... вот теперь все.
Yandex
Объявления
18.12.2013, 11:23     "Недостаточно памяти для запуска программы"
Ответ Создать тему
Опции темы

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