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

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

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

Author24 — интернет-сервис помощи студентам
Задача - отсортировать случайный массив 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);
 }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2013, 10:35
Ответы с готовыми решениями:

Недостаточно памяти для обработки команды
(ноут)файл подкачки 4гб на 2ух дисках, оперативки 1гб моя программа довольно объёмная, пишу уже...

QThread::start: Failed to create thread (Недостаточно памяти для обработки команды.)
Ошибка возникает после создания примерно сотни потоков, чеза памяти ему не хватает? у меня...

Недостаточно памяти да запуска программы Закройте одну или несколько программ и повторите попытку
Добрый день в последнее время на работе некоторые компьютеры начали вести себя странно работаешь...

Недостаточно памяти для запуска приложения
Добрый день. Прошу помочь разобраться с проблемой: не запускаются никакие файлы с формулировкой...

Недостаточно памяти или места на диске для запуска приложения Word
Недавно столкнулся с проблемой пакета Офис 2007 При запуске Word говорит: Недостаточно памяти...

9
Модератор
Эксперт С++
13503 / 10755 / 6409
Регистрация: 18.12.2011
Сообщений: 28,704
17.12.2013, 11:03 2
строка 42
C++
1
for (i=0,S=1;i<k-1;++i)
т.к. внутри идет обращение к x[i+1].
0
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
17.12.2013, 11:16  [ТС] 3
Спасибо,точно, а я думаю, что он через раз пишет ошибку, а в другой раз не пишет. А почему программа неверно выводит значение С и М? Смотрю под отладчиком, все подсчитано, а на экране 0, как такое вообще может быть?

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

Добавлено через 4 минуты
программа уже не пишет, что не хватает памяти, не хватало, когда я сделала тип данных массива а long, но потом поняла, что массиву и так достаточно
0
Модератор
Эксперт С++
13503 / 10755 / 6409
Регистрация: 18.12.2011
Сообщений: 28,704
17.12.2013, 11:19 4
У меня в VS 2008 и debug и release выдает одинаковые ответы.
Может запускаете файл от старой компиляции?
0
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
17.12.2013, 11:45  [ТС] 5
Это как? я перед запуском откомпилировала все заново и запускала через Borland C
0
Модератор
Эксперт С++
13503 / 10755 / 6409
Регистрация: 18.12.2011
Сообщений: 28,704
17.12.2013, 12:54 6
Если есть ошибка компиляции, то запускается старый вариант.
0
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
17.12.2013, 13:06  [ТС] 7
Но ошибки компиляции нет, по крайней мере не выводит ошибку
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,488
Записей в блоге: 1
17.12.2013, 13:33 8
zss, что, и в борланде тоже запускается старый вариант? При чём тут студия?
0
Модератор
Эксперт С++
13503 / 10755 / 6409
Регистрация: 18.12.2011
Сообщений: 28,704
17.12.2013, 15:20 9
У меня нет Борланда.
0
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... вот теперь все.
0
18.12.2013, 11:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2013, 11:23
Помогаю со студенческими работами здесь

Microsoft office 97 системная ошибка или недостаточно свободной памяти для запуска приложения Mircosoft Access
Microsoft office 97 системная ошибка или недостаточно свободной памяти для запуска приложения...

Недостаточно памяти для продолжения выполнения программы
Пытаюсь присвоить видео аудиодорожку используя AviFile.dll, код: String fileName =...

Что такое: "недостаточно свободной памяти для обновления экрана, закройте какие-нибудь программы"?
Отцы, а кто скажет, почему в ACCESS 2000, в мною нарисованной базе, когда с десяток раз...

При запуске приложения или при сохранении выдает ошибку, что «недостаточно памяти для продолжения выполнения программы»?
при запуске приложения или при сохранении выдает ошибку, что &quot;недостаточно памяти для продолжения...

Недостаточно памяти для выполнения
Передаю данные в хранимую процедуру, которая делает update для определенных таблиц. Данные передаю...


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

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

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