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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 41, средняя оценка - 5.00
Лёлик
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 8
#1

Проблемы с rand() в Dev-C++ - C++

09.10.2011, 07:10. Просмотров 7017. Ответов 12
Метки нет (Все метки)

Всем привет=))))Форумчане, нужна ваша помощь!!!!У меня не очень получается с программированием.Мне кажется у меня проблемы с функцией rand()О_о.Сначала числа в матрице генерировались нормально, но при вводе одной и той же размерности, сама матрица не менялась...Я нашла на форуме небольшой пример. После чего у меня начало выводить всякий мусор (т.е. матрица выводилась n-раз), а сейчас и вовсе не запускается...Привожу отрывок кода:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//присвоим значениt матрице а 
            for (int j=0;j<razmer;j++)
            {time_t temp = time(NULL);//получаем время
             srand(temp); //инициализируем генератор случайных чисел полученным временем
            a[i][j] = rand()%(-11)-5; //заполняем матрицу случайным образом от -5 до 5
        }
        }
        //вывод матрицы на экран
        cout<<"Сформированная матрица:\n";
        for(int i=0;i<razmer;i++)
        {
            for(int j=0;j<razmer;j++)
                cout<<setw(5)<<*(*(a+i)+j)<<ends;//setw(5)-ширина поля вывода з iomanip.h
            cout<<endl;
        }
Ещё в конце проги
C++
1
2
3
4
getch();
system("pause");//может из-за этого ошибка?????
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2011, 07:10
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Проблемы с rand() в Dev-C++ (C++):

rand - C++
srand(time(NULL)); int s = rand()%1000 +1; генерирует бред вроде 3,4,7,10,14,19,21,26,29... как сделать чтобы значения были...

Rand() - C++
metka: r1=rand()%2; r2=rand()%2; if(r1==a &amp;&amp; r2==b)goto metka; else arr=='O'; Собсно-это кусок кода...

Rand() - C++
Ребята срочно nомогите , как сгенерировать с nомощью функции rand() рандомные числа 0 или 1 ?

rand() - C++
генератор случайных чисел rand() подскажите пожелуста как работает ета штука. что означает %200, %200-100. какой принцип роботы

rand() - C++
начал учить си++, наткнулся на такую штуку... Накидал простую программку (консольную) и увидел что датчик случ. чисел выдает нифига...

rand()%(-20)%(20); - C++
Нужно сорт случ числа от -20 до 20 Делаю так rand()%(-20)%(20); получаю числа от 0 до 20, а мне нужно от -20 ;

12
aeshes
442 / 205 / 13
Регистрация: 07.10.2011
Сообщений: 462
09.10.2011, 15:33 #2
нет, ошибка не в rand() и не в system("PAUSE"), хотя зачем вам и getch(); и system("PAUSE");? Используйте что-то одно из них
Вот программа, которая генерирует матрицу случайных чисел и выводит ее на экран (1 раз). Массив статический
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
#include <iostream>
#include <iomanip>
#include<ctime>
using namespace std;
 
int main()
{
   setlocale(LC_ALL,"Russian");
   const int razmer_i=4, razmer_j=5;
   int a[razmer_i][razmer_j];
   srand(time(NULL)); //инициализируем генератор случайных чисел полученным временем
   for(int i=0;i<razmer_i;i++)
       for(int j=0;j<razmer_j;j++)
            a[i][j] = rand()%(-11)-5; //заполняем матрицу случайным образом от -5 до 5
 
    //вывод матрицы на экран
    cout<<"Сформированная матрица:\n";
    for(int i=0;i<razmer_i;i++)
    {
        for(int j=0;j<razmer_j;j++)
    cout<<setw(5)<<*(*(a+i)+j)<<ends;//setw(5)-ширина поля вывода з iomanip.h
        cout<<endl;
    }
    system("PAUSE");
}
1
kravam
быдлокодер
1705 / 892 / 45
Регистрация: 04.06.2008
Сообщений: 5,524
09.10.2011, 16:08 #3
Лёлик,ты матрицу неправильно формируещь,
C++
1
2
   time_t temp = time(NULL);
   srand(temp);
НАдо один раз делать то есть так примерно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
 
//это вся память выделяем
int** a= new int* [razmer];
 
 for (int i= 0; i< razmer; i++) {
  a[i]= new int [razmer];
 }
 
 //Один раз так написали 
srand(temp(0)); 
 
 for(int i= 0;i< razmer; i++) {
  for (int j= 0; j< razmer; j++) {
   a[i][j] = rand()%(-11)-5; 
   
   //Получаем случайные числап
   printf ("a[i][j]= %d\n", a[i][j]);
  }
  cout<<endl;
 }
1
Лёлик
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 8
09.10.2011, 17:35  [ТС] #4
Спасибо большое за подсказку...Обязательно учту=)))))))))Я уже и не думала, что мне кто-то поможет)))

Добавлено через 3 минуты
Ага...Вот почему у меня программа такую "краказябру" выводит...Спасибочки=)))

Добавлено через 54 минуты
kravam, Что-то в представленной задаче компилятор ругается на библиотеку "cstdlib"
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
#include <iostream>
#include<ctime>
#include <cstdlib>//Г± ýòîé áèáëèîòåêîé ГЄГ*ГЄГіГѕ- ГІГ® îøèáêó âûáèâГ*ГҐГІ
using namespace std;
int main(){
 cout<<"Ââåäèòå Г°Г*çìåðГ*îñòü Г¬Г*òðèöû ГЊГЂ:\n";
cin>>razmer;
 
//ГЅГІГ® ГўГ±Гї ГЇГ*ìÿòü âûäåëÿåì
int** a= new int* [razmer];
 
 for (int i= 0; i< razmer; i++) {
  a[i]= new int [razmer];
 }
 
 //ÎäèГ* Г°Г*Г§ ГІГ*ГЄ Г*Г*ГЇГЁГ±Г*ëè 
srand(temp(0)); 
 
 for(int i= 0;i< razmer; i++) {
  for (int j= 0; j< razmer; j++) {
   a[i][j] = rand()%(-11)-5; 
   
   //Ïîëó÷Г*ГҐГ¬ ñëó÷Г*Г©Г*ûå Г·ГЁГ±Г«Г*ГЇ
   printf ("a[i][j]= %d\n", a[i][j]);
  }
  cout<<endl;
 }getch();
 return 0;
 }
Добавлено через 4 минуты
Ой, забыла добавить int razmer; - но результат тот же.

Добавлено через 15 секунд
Ой, забыла добавить int razmer; - но результат тот же.
0
kravam
быдлокодер
1705 / 892 / 45
Регистрация: 04.06.2008
Сообщений: 5,524
09.10.2011, 17:44 #5
А та библиотека зачем? Не пойму.
Вот так надо, но надо ещё и аамять освобождат delete, это ты сама сделай.

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
#include <windows.h>
#include <iostream>
#include <string>
#include <iomanip>
 
#define razmer 5
 
using namespace std;
 
 
 
int main() {
 SetConsoleCP (1251);
 SetConsoleOutputCP (1251);
 
 
 
 int** a= new int* [razmer];
 
 for (int i= 0; i< razmer; i++) {
  a[i]= new int [razmer];
 }
 
   time_t temp = time(NULL);//получаем время
   srand(temp); //инициализируем генератор случайных чисел полученным временем
 
//присвоим значениt матрице а
 for(int i= 0;i< razmer; i++) {
  for (int j= 0; j< razmer; j++) {
   a[i][j] = rand()%(-11)-5; //заполняем матрицу случайным образом от -5 до 5
   printf ("a[i][j]= %d\n", a[i][j]);
  }
  cout<<endl;
 }
 //вывод матрицы на экран
 cout<<"Сформированная матрица:\n";
 for(int i=0;i<razmer;i++) {
  for(int j=0;j<razmer;j++)
   cout<<setw(5)<<*(*(a+i)+j)<<ends;//setw(5)-ширина поля вывода з iomanip.h
  cout<<endl;
 }
 
 getchar ();
 
 
 
 return 0;
}
Добавлено через 45 секунд
Ну под себя подгони типа там размерность матрицы вводи с консоли и прочая.
1
Лёлик
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 8
09.10.2011, 17:54  [ТС] #6
Я читала в Интернете, что в этой библиотеке cstdlib- хранятся rand (), srand ():/
0
kravam
быдлокодер
1705 / 892 / 45
Регистрация: 04.06.2008
Сообщений: 5,524
09.10.2011, 18:17 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main () {
 srand (time(0));
 while (1) {
  rand();
  printf ("%d\n  ",  rand ());
  getchar ();
 }
 return 0;
}
Ошибку написала бы...
1
Лёлик
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 8
09.10.2011, 18:26  [ТС] #8
К большому сожалению...У меня не отображается журнал компиляции...Но компилятор просто перебрасывает меня на строку #include <cstdlib> в новом окошке под названием stl_algobase.h

Добавлено через 5 минут
И вот тоже...Перекинул на строку в новой программе(ту что кинул ты мне) =>srand (time(0)); Извени,я тебе уже наверное надоела=)))
0
kravam
быдлокодер
1705 / 892 / 45
Регистрация: 04.06.2008
Сообщений: 5,524
09.10.2011, 18:30 #9
Попытаемся разобраться или так оставим?

Добавлено через 53 секунды
Ошибки надо. Не дело работать с ненастроенной IDE.

Добавлено через 55 секунд
Дай скриншот Dev- Cpp когда он перекидывает
"на строку в новой программе(ту что кинул ты мне) =>srand (time(0));"
0
Лёлик
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 8
09.10.2011, 18:41  [ТС] #10
Воттт...
0
Миниатюры
Проблемы с rand() в Dev-C++  
Лёлик
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 8
09.10.2011, 18:42  [ТС] #11
/////////
0
Миниатюры
Проблемы с rand() в Dev-C++  
kravam
быдлокодер
1705 / 892 / 45
Регистрация: 04.06.2008
Сообщений: 5,524
09.10.2011, 18:57 #12
Старо, даже не возьмусь. А мой тебе совет: скачай стабильную версию 4.9.9.2, она стабильна аж с 2004 года. И учись себе помаленьку. По ней хоть что-то посоветовать можно.
1
Лёлик
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 8
09.10.2011, 19:05  [ТС] #13
Нет...менять пока не буду...мне просто курсак по потока писать....здесь уже всё настроено под pthread....
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2011, 19:05
Привет! Вот еще темы с ответами:

rand() - C++
Как записать чтобы rand() возвращало true и false. Или подскажите другой способ. Мне нужно заполнить 3-х мерный массив.

rand - C++
всем привет) что означает вот это строка double value = (rand()%1000)/100.0 - 5.0; и чем она отличается от этой double value =...

rand от 1 до 16 - C++
Вопрос в том как в функции rand() на c++ задать диапазон чисел от 1 до 16

rand - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstdlib&gt; // гениратор случайных чисел using namespace std; ...


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

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

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