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

Некорректно работает функция рандомайз при заполнении массива - C++

Восстановить пароль Регистрация
 
Ульяниус
 Аватар для Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
12.12.2013, 19:50     Некорректно работает функция рандомайз при заполнении массива #1
Задача - внести случайные числа в динамический массив.
Проблема - почему-то при первом запуске программы в первый элемент массива вносится огромное число (хотя диапазон чисел в random (100)), при последующих запусках такого нет. В чем может быть ошибка?
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
#include  <stdio.h>
#include  <conio.h>
#include <time.h>
#include  <stdlib.h>
#include <alloc.h>
#define ESC 27
 
 
   
void main ()
 {
  int i,n,sum;int *a; char key;
  do
  {
   sum=0;
   randomize();
   clrscr ();
   fflush(stdin);
   printf("\n Введите количество элементов массива ");
   scanf("%d",&n);
   a=(int*)malloc(n*sizeof (int));
   for (i=1; i<=n; i++)
    {
     a[i]=random(100);
     sum+=a[i]; 
    }
   free(a);
   puts ("Ввести другое количество элементов массива? (Нет=Esc)");
   key=getch();
  }
  while (key!=ESC);
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2013, 19:50     Некорректно работает функция рандомайз при заполнении массива
Посмотрите здесь:

Глюк при заполнении массива C++
Функция работает некорректно C++
C++ Некорректно работает функция
C++ ошибка при заполнении массива
Ошибка при заполнении массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
12.12.2013, 20:00     Некорректно работает функция рандомайз при заполнении массива #2
Цитата Сообщение от Ульяниус Посмотреть сообщение
в первый элемент массива вносится огромное число
потому что он не заполняется и содержит мусор, плюс выход за пределы выделенной памяти:
C++
1
for (i=1; i<=n; i++)
индексация в массиве начинается с нуля. Диапазон [0,n)
Соответственно первый элемент будет a [ 0 ] , последний - a [ n - 1 ]
Ульяниус
 Аватар для Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
12.12.2013, 20:40  [ТС]     Некорректно работает функция рандомайз при заполнении массива #3
Исправила, но теперь если например ввести n=4, то a[4]остается с первого запуска программы, а остальные значения рандомятся. Почему так? И сумма некоректно считается.
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
#include  <stdio.h>
#include  <conio.h>
#include <time.h>
#include  <stdlib.h>
#include <alloc.h>
#define ESC 27
 
void main ()
 {
  int i,n,sum;int *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]; 
    }
   free(a);
   puts ("Закончить*? (Да=Esc)");
   key=getch();
  }
  while (key!=ESC);
 }
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
12.12.2013, 20:45     Некорректно работает функция рандомайз при заполнении массива #4
Цитата Сообщение от Ульяниус Посмотреть сообщение
если например ввести n=4, то a[4]
если ввести 4, то a[4] - это выход за пределы выделенной памяти
Ульяниус
 Аватар для Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
12.12.2013, 21:43  [ТС]     Некорректно работает функция рандомайз при заполнении массива #5
Спасибо, разобралась
Yandex
Объявления
12.12.2013, 21:43     Некорректно работает функция рандомайз при заполнении массива
Ответ Создать тему
Опции темы

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