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

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

Войти
Регистрация
Восстановить пароль
 
Sarumanovich
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 23
#1

Массив случайных чисел - C++

19.07.2013, 15:56. Просмотров 561. Ответов 16
Метки нет (Все метки)

Хотел написать сам программу которая выводит случайные числа массива сто на сто. Ошибок в коде нет, но программа вылетает. Выхода за пределы массива нет. Программа конечна. Что не так? Возможно, проблемы в генерации случайных чисел, но я не знаю, как это сделать по-другому.
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
#include <iostream>
#include <stdlib.h>
#include <time.h>
 
using namespace std;
 
int main()
{
    unsigned short int stolbez=0;
    unsigned short int randomik;
    unsigned short int matriza[100][100];
    for(unsigned short int stroka=0;stroka <= 100;stroka++)
    {
        srand(time(NULL));
        randomik=rand();
        matriza[stroka][stolbez]=randomik;
        cout<<matriza[stroka][stolbez];
        if(stroka==100)
        {
            stroka-=100;
            stolbez++;
        }
        if(stolbez==100)
        break;
 
    }
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2013, 15:56     Массив случайных чисел
Посмотрите здесь:

Задача на массив и указатели.(массив из случайных чисел) - C++
Найти абсолютное значение,которое чаще остальных встречается в массиве. #include&lt;stdio.h&gt; #include&lt;time.h&gt; #include&lt;stdlib.h&gt; ...

Массив случайных чисел - C++
Помогите пожалуйста создать массив из 20 случайных чисел от 0 до 100. Все элементы меньше 50 занулить. Оформить в виде функции. ...

Массив случайных неповторяющихся чисел - C++
Ребят работал всю ночь и сейчас голова не пашет! объясните в чем проблема private: System::Void button2_Click(System::Object^ sender,...

Массив и генератор случайных чисел - C++
1)Числа m, n і k (3≤k10) вводятся с клавиатуры. Сгенерировать и вывести на екран m целых случайных чисел на промежутке указаного в пункте...

Генератор случайных чисел. Массив - C++
Суть вот в чём: Создать двумерный массив размерностью 3х3 дабы он заполнялся случайными числами. После это выполнить определённые...

Запись случайных чисел в массив - C++
Подскажите, пожалуйста, в чем проблема. #include &lt;random&gt; ... std::tr1::mt19937 eng; ...

Создать массив из 13 случайных чисел из отрезка от 11 до 99 - C++
Создать массив из 13 случайных чисел из отрезка от 11 до 99 и вывести массив на экран

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
19.07.2013, 15:59     Массив случайных чисел #2
Вот же выход за пределы массива
C++
1
stroka <= 100
Добавлено через 1 минуту
Плюс
C++
1
srand(time(NULL));
повторный вызов srand вызывает ошибку. а он у Вас в цикле
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
19.07.2013, 16:02     Массив случайных чисел #3
Цитата Сообщение от Sarumanovich Посмотреть сообщение
Программа конечна.
Ну разумеется..
Тема стара как мир. Поставь в конце system("pause");
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
19.07.2013, 16:02     Массив случайных чисел #4
C++
1
2
3
4
5
6
7
if(stroka==100)
        {
            stroka-=100;
            stolbez++;
        }
        if(stolbez==100)
        break;
Индексация массивов начинается с 0, а это значит, что массив из 100 элементов имеет индексы от 0 до 99 включительно. Вызов элемента 100 вызовет ошибку выход за пределы массива.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
19.07.2013, 16:03     Массив случайных чисел #5
Цитата Сообщение от Мимино Посмотреть сообщение
повторный вызов srand вызывает ошибку
с чего бы?..
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
19.07.2013, 16:08     Массив случайных чисел #6
Цитата Сообщение от lazybiz Посмотреть сообщение
с чего бы?..
Попробуйте. Например вот такой код
C++
1
2
3
4
5
for (int i = 0; i < 10; i ++)
    {
        srand(time(NULL));
        cout << rand() % 100 << endl;
    }
будет всегда выдавать 10 одинаковых чисел, но разных при каждом запуске программы. Это логическая ошибка. А бывает что и просто вылетает программа ( 1 раз сталкивался при повторном вызове функции, в которой был srand)
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
19.07.2013, 16:09     Массив случайных чисел #7
Цитата Сообщение от lazybiz Посмотреть сообщение
повторный вызов srand вызывает ошибку
с чего бы?..
я полагаю, это не совсем ошибка. Просто псевдослучайность из чисел улетучится. Я не спец,
но мне кажется, срэнд задаёт сид от которого дальнейшие вызовы рэнд будут начинать цикл генерации
некоего rand[i]=foo(rand[i-1]) разве нет?
Так вот, помещая срэнд в цикл, автор каждый раз сбрасывает сид в первоначальный. Ведь значения возвращаемые time(NULL) - времени. Будут почти одинаковыми, если их вызывать в цикле. (вызовы будут идти в одно и то же время)
Вот поэтому и псевдослучайность из чисел улетучится.
Это мои домыслы только... я прав?
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
19.07.2013, 16:10     Массив случайных чисел #8
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Это мои домыслы только... я прав?
Да, именно так.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
19.07.2013, 16:11     Массив случайных чисел #9
Мимино, нет, погоди, ты сказал:
Цитата Сообщение от Мимино Посмотреть сообщение
повторный вызов srand вызывает ошибку
нормальный человек поймет это как runtime-ошибку, но ни в коем случае не логическую.
Повторный вызов srand() ничего не вызывает. Программа как будет работать, так и работает. Ты просто неправильно высказался.
Просто то, что ты сказал, могло ввести ТС в заблуждение.. что не очень хорошо.
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
19.07.2013, 16:16     Массив случайных чисел #10
Цитата Сообщение от lazybiz Посмотреть сообщение
нормальный человек поймет это как runtime-ошибку, но ни в коем случае не логическую.
и хорошо. так делать не нужно. Минимум, это бессмысленно.
Sarumanovich
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 23
19.07.2013, 16:17  [ТС]     Массив случайных чисел #11
Всем спасибо. Сделал массив Matriza[101][101]. Остальной код правильный.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
19.07.2013, 16:17     Массив случайных чисел #12
Чего делать не нужно, и что бессмысленно?
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
19.07.2013, 16:19     Массив случайных чисел #13
Цитата Сообщение от lazybiz Посмотреть сообщение
Чего делать не нужно, и что бессмысленно?

Не по теме:

сейчас покажу на примере

castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
19.07.2013, 16:39     Массив случайных чисел #14
Цитата Сообщение от Sarumanovich Посмотреть сообщение
Всем спасибо. Сделал массив Matriza[101][101]. Остальной код правильный.
Лучше все числа 100 (кроме определения массива) поменяй на 99. Так будет правильней. Иначе у тебя будет 101 значение, а не 100 как ты ожидал..

Добавлено через 31 секунду

Не по теме:

Цитата Сообщение от Мимино Посмотреть сообщение

Не по теме:

сейчас покажу на примере

Ок. Интересно.



Добавлено через 17 минут
Цитата Сообщение от Мимино Посмотреть сообщение
Не по теме:
сейчас покажу на примере
Ну как там? Пример будет?
Sarumanovich
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 23
19.07.2013, 16:49  [ТС]     Массив случайных чисел #15
Кстати, если не секрет, как и сделать так, чтобы в .exe файле писалось время выполнения программы?
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
19.07.2013, 21:38     Массив случайных чисел #16
Чушь - чушью, но мне интересен пример.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2013, 04:01     Массив случайных чисел
Еще ссылки по теме:

Дан массив вещественных случайных чисел - C++
Дан массив вещественных случайных чисел(размер массива определяет пользователь но в пределах . определить количество чисел из диапазона ...

Сформировать одномерный массив целых случайных чисел - C++
Сформировать одномерный массив целых случайных чисел. Удалить все элементы , большие данного числа x ( x ввести с клавиатуры )...

Запись случайных натуральных чисел в линейный массив - C++
for( j=0; j&lt;10; j++) { arr=rand()%(b-a+1)+a; } Пытаюсь сделать так но выводит вообще не по теме 0BF014 что то в...

Создайте массив из 8 случайных целых чисел из отрезка [1;10] - C++
Создайте массив из 8 случайных целых чисел из отрезка . Выведите массив на экран в строку. Замените каждый элемент с нечётным индексом на...

Создать массив случайных чисел в с++, используя rand - C++
как это сделать ? вот объявляем массив ,например: int mas ,как сделать так , чтоб он заполнялся случайными числами ? помогите пожалуйста


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

Или воспользуйтесь поиском по форуму:
Kant
33 / 33 / 9
Регистрация: 15.05.2013
Сообщений: 233
20.07.2013, 04:01     Массив случайных чисел #17
Вот так можно заполнить двумерный массив и узнать сколько времени ушло на его заполнение.
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
#include <iostream>
#include <time.h>
#include <windows.h>
 
using  std::cout;
using  std::endl;
 
int main() {
 
    setlocale(LC_ALL,"Russian");
    srand(time(NULL));
 
    int matrix[100][100];
    int val;
 
    double start = GetTickCount();
 
    for(int i=0; i<100; ++i) {
        for(int j=0; j<100; ++j) {
            val = rand() % 100;
            matrix[i][j] = val;
            cout << matrix[i][j] << "\t";
        }
    }
 
 
    double finish = GetTickCount();
 
    finish -= start; 
 
    cout << "\n\tЦикл заполнился за " << finish/1000 << " секунд" << endl;
 
 
    system("pause");
    return 0;
}
Yandex
Объявления
20.07.2013, 04:01     Массив случайных чисел
Ответ Создать тему
Опции темы

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