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

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

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

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

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;,...

Калькулятор для работы с знаками "+" "-" "/" "*" через string без приоритетов
Нужно написать калькулятор для работы с знаками &quot;+&quot; &quot;-&quot; &quot;/&quot; &quot;*&quot; через string. Приоритеты действий...

9
Модератор
Эксперт С++
13256 / 10396 / 6214
Регистрация: 18.12.2011
Сообщений: 27,814
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
Модератор
Эксперт С++
13256 / 10396 / 6214
Регистрация: 18.12.2011
Сообщений: 27,814
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
Модератор
Эксперт С++
13256 / 10396 / 6214
Регистрация: 18.12.2011
Сообщений: 27,814
17.12.2013, 12:54 6
Если есть ошибка компиляции, то запускается старый вариант.
0
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
17.12.2013, 13:06  [ТС] 7
Но ошибки компиляции нет, по крайней мере не выводит ошибку
0
4023 / 3280 / 920
Регистрация: 25.03.2012
Сообщений: 12,269
Записей в блоге: 1
17.12.2013, 13:33 8
zss, что, и в борланде тоже запускается старый вариант? При чём тут студия?
0
Модератор
Эксперт С++
13256 / 10396 / 6214
Регистрация: 18.12.2011
Сообщений: 27,814
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2013, 11:23
Помогаю со студенческими работами здесь

Как сделать так, чтобы введенное с клавиатуры слово "helllo" в памяти сохранялось в виде "Hello".
Здравствуйте. Подскажите пожалауйста как сделать чтоб согда я вводу с клавиатуры helllo, в памяти...

Наследуемым классом для комплексного числа объявить класс "радиус-вектор", имеющий данные "длина" и "угол"
кто то напишите пожалуйста, вот программа: наследуемым классом для комплексного числа объявить...

Ошибка "Нарушение доступа для записи" при выделение памяти для поиска детерминанта квадратной матрицы
Добрый день! Делаю простое приложение по поиску детерминанта квадратной матрицы. Чтобы искать...

Через ООП: Дать для числа наименование: "рубль", "рубля", "рублей";
Помогите пожалуйста с задачей. Могу сделать ее просто, но надо через ООП и у меня не получается. ...


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

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

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