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

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

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

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

12.12.2013, 19:50. Просмотров 314. Ответов 4
Метки нет (Все метки)

Задача - внести случайные числа в динамический массив.
Проблема - почему-то при первом запуске программы в первый элемент массива вносится огромное число (хотя диапазон чисел в 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++
#include &lt;iostream&gt; using namespace std; short fill(double*, short); const short size = 5; int main() { double array;...

Некорректно работает функция - C++
Функция Small_S должна находить короткое слово в строке str, а она почему-то выводит первое слово! Помогите решить проблему, буду очень...

Функция работает некорректно - C++
написал функцию,возвращающий нажатую клавишу: char func2(){ if(_kbhit()){ char c; c=_getch(); return c; } return 0; ...

Некорректно работает функция проверки на численность - C++
Фрагмент кода: //... bool is_number() { //* while(cin.fail()) { cin.clear(); cin.sync(); return false;} return true;...

Некорректно работает функция добавления, указать ошибку - C++
Здравствуйте, в моей программе некорректно работает добавление элемента, функция addBook. Также прошу проверить правильность работы...

Ошибка при заполнении массива - C++
Помогите пожалуйста решить проблему: Это программа для игры в крестики нолики. В первой функции void instruction() необходимо вывести...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13051 / 7314 / 814
Регистрация: 27.09.2012
Сообщений: 18,051
Записей в блоге: 3
Завершенные тесты: 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
Модератор
Эксперт CЭксперт С++
13051 / 7314 / 814
Регистрация: 27.09.2012
Сообщений: 18,051
Записей в блоге: 3
Завершенные тесты: 1
12.12.2013, 20:45     Некорректно работает функция рандомайз при заполнении массива #4
Цитата Сообщение от Ульяниус Посмотреть сообщение
если например ввести n=4, то a[4]
если ввести 4, то a[4] - это выход за пределы выделенной памяти
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2013, 21:43     Некорректно работает функция рандомайз при заполнении массива
Еще ссылки по теме:

ошибка при заполнении массива - C++
хочу заполнить массивы класса (и сразу же записать в файл), если выбрать количество записей - 1, то все работает нормально, но больше...

Глюк при заполнении массива - C++
Заполняю массив float row float j=0; for (int i=0;i&lt;501;i++) { row=j; cout&lt;&lt;j&lt;&lt;endl; j += 0.02; ...

Сообщение о ошибке при заполнении массива - C++
Привет всем! Возникла проблемма при заполнении массива малыми числами. При компиляции выводится сообщение &quot;floating constant truncated...

Вылетает программа при заполнении массива - C++
Добрый день. Решил написать простой код отрисовки карты в консоли. Идея: 1.Создаю объект структуры, содержащий перечень координат в...

Ошибка при заполнении динамического массива - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int N, i, a, l; int head = -1; char ch; int *s = new int ; ...

Ошибка исполнения при заполнении массива - C++
Программа работы с квадратными матрицами. Используются динамические массивы. Задание из вуза. Использование функций запрещено по...


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

Или воспользуйтесь поиском по форуму:
Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
12.12.2013, 21:43  [ТС]     Некорректно работает функция рандомайз при заполнении массива #5
Спасибо, разобралась
Yandex
Объявления
12.12.2013, 21:43     Некорректно работает функция рандомайз при заполнении массива
Ответ Создать тему
Опции темы

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