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

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

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

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

12.12.2013, 19:50. Просмотров 317. Ответов 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);
 }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2013, 19:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Некорректно работает функция рандомайз при заполнении массива (C++):

Функция работает некорректно - C++
#include &lt;iostream&gt; using namespace std; short fill(double*, short); const short size = 5; int main() { double array;...

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

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

Некорректно работает функция Delete - C++
Слепил прожку. Которая должна записать в файл информацию о стране. А потом функция Делит должна по названию страны удалить всю информацию о...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13232 / 7504 / 846
Регистрация: 27.09.2012
Сообщений: 18,433
Записей в блоге: 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 / 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);
 }
0
Croessmah
Эксперт CЭксперт С++
13232 / 7504 / 846
Регистрация: 27.09.2012
Сообщений: 18,433
Записей в блоге: 3
Завершенные тесты: 1
12.12.2013, 20:45 #4
Цитата Сообщение от Ульяниус Посмотреть сообщение
если например ввести n=4, то a[4]
если ввести 4, то a[4] - это выход за пределы выделенной памяти
1
Ульяниус
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
12.12.2013, 21:43  [ТС] #5
Спасибо, разобралась
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2013, 21:43
Привет! Вот еще темы с ответами:

функция send() работает некорректно после применения closesocket() - C++
Доброго времени суток! Имеется простенький тестовый сервер: SOCKET s; SOCKET s1; SOCKET s2 = NULL; char buf; int rc; ...

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

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

Ошибка при заполнении массива - C++
Объявляю и пытаюсь заполнить так: TArray__1&lt;System::Byte&gt; *buffer; buffer = new TArray__1 &lt;System::Byte&gt; (6); buffer='r'; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.12.2013, 21:43
Ответ Создать тему
Опции темы

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