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

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

Восстановить пароль Регистрация
 
Ульяниус
 Аватар для Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
17.12.2013, 10:35     пишет недостаточно памяти для запуска программы #1
Задача - отсортировать случайный массив 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);
 }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,171
Завершенные тесты: 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
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,171
Завершенные тесты: 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
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,171
Завершенные тесты: 1
17.12.2013, 12:54     пишет недостаточно памяти для запуска программы #6
Если есть ошибка компиляции, то запускается старый вариант.
Ульяниус
 Аватар для Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
17.12.2013, 13:06  [ТС]     пишет недостаточно памяти для запуска программы #7
Но ошибки компиляции нет, по крайней мере не выводит ошибку
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
17.12.2013, 13:33     пишет недостаточно памяти для запуска программы #8
zss, что, и в борланде тоже запускается старый вариант? При чём тут студия?
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,171
Завершенные тесты: 1
17.12.2013, 15:20     пишет недостаточно памяти для запуска программы #9
У меня нет Борланда.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2013, 11:23     пишет недостаточно памяти для запуска программы
Еще ссылки по теме:

Нужно оценить время запуска программы C++
C++ ошибка после запуска программы!
Ошибка запуска программы C++

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

Или воспользуйтесь поиском по форуму:
Ульяниус
 Аватар для Ульяниус
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     пишет недостаточно памяти для запуска программы
Ответ Создать тему
Опции темы

Текущее время: 13:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru