Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2009, 17:56   #1
Junk1E
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 28
По умолчанию Не рандомный рандом )))))

В общем задачу к зачету делаю... Задание "тетрадный лист. На нем расположены n-ое кол-во прямоугольников, которые не наложены жруг на друга , не соприкосаются сторонами или углами. Найти собственно n" В общем начал делать, первый прямоугольник решил задать отдельно, а остальные в цыкл с проверкой, но вот рандом, при компиляции одно и то же число, соответственно прямоугольник один и тот же, что как то не интересно )))


Код:
#include <iostream>
#include <ctime>
using namespace std;

struct pryamoygilnik{int dl; int shr;int str; int st;};

int main(){
    int x,y,kol;
    char exit;
    cout<<"Vvedite wirinu lista"<<endl;
    cin>>x;
    cout<<"Vvedite dlinnu lista"<<endl;
    cin>>y;
    int lst[x][y];
    for(int i=0;i<y;i++){                      
            cout<<endl;                        
            for(int j=0;j<x;j++){             
                    lst[i][j]=0;               
                    cout<<lst[i][j];           
                    }
            }
    kol=1+(rand()%50);                           
    struct pryamoygilnik pr[kol];
    pr[1].dl=rand()%30;                                       
    pr[1].shr=rand()%30;
    pr[1].str=rand()%(x-pr[1].dl);
    pr[1].st=rand()%(y-pr[1].shr)
    for(int q=pr[1].str ; q<(pr[1].str+pr[1].dl) ; q++){
            cout<<endl;
            for(int p=pr[1].st ; p<(pr[1].st+pr[1].shr) ; p++){
                    lst[q][p]=1;
                    }
            }
     for(int i1=0;i1<y;i1++){                       
            cout<<endl;                        
            for(int j1=0;j1<x;j1++){             
                    cout<<lst[i1][j1];           
                    }
            }                   
                      
                    
}
З.Ы. Тут тока первый прямоугольник описан, с остальными пока не разбираюсь )

Последний раз редактировалось Junk1E; 09.12.2009 в 17:58. Причина: код без тегов был и П.С. надо было вставить )
Junk1E вне форума Ответить с цитированием
Старый 09.12.2009, 18:05   #2
Junk1E
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 28
По умолчанию

Всем спасибо за помощ, решил ... )
вместо :

Код:
    pr[1].dl=rand()%30;
    pr[1].shr=rand()%30;
поставил:

Код:
    pr[1].dl=rand()%int(x/2);
    pr[1].shr=rand()%int(y/2);
Стало работать нормально, но не прочь узнать почему все таки не совсем случайно получался прямоугольник ))

З.Ы. Dev-C++ компилятор )))
Junk1E вне форума Ответить с цитированием
Старый 09.12.2009, 18:25   #3
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 534
По умолчанию

что бы числа были разные при каждом запуске нужен метод srand() где-то перед ранд()
записать его полностью можно например так: srand((unsigned)time(NULL) );

это srand() который получает в аргументы секунды из time(), т.е постоянно разное число
m0nax вне форума Ответить с цитированием
Старый 09.12.2009, 18:29   #4
Junk1E
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 28
По умолчанию

спасибо ))) возму на заметку )
Junk1E вне форума Ответить с цитированием
Старый 09.12.2009, 18:31   #5
Junk1E
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 28
По умолчанию

Цитата:
Сообщение от m0nax Посмотреть сообщение
что бы числа были разные при каждом запуске нужен метод srand() где-то перед ранд()
записать его полностью можно например так: srand((unsigned)time(NULL) );

это srand() который получает в аргументы секунды из time(), т.е постоянно разное число
и не могли бы Вы показать на примере хотя бы одной строчки, как он должен быть в коде, а то что не оч понятно )))) ща конечн у гугли спрошу, но всетаки ... )
Junk1E вне форума Ответить с цитированием
Старый 09.12.2009, 18:44   #6
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 534
По умолчанию

ну дык так и пишется 1 раз в начале кода srand((unsigned)time(NULL) );

но лучше конечно гугла спросить, писать можно не только так, да и его точное(научное) описание я уж забыл как-то..
m0nax вне форума Ответить с цитированием
Старый 09.12.2009, 18:51   #7
Junk1E
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 28
По умолчанию

Цитата:
Сообщение от m0nax Посмотреть сообщение
ну дык так и пишется 1 раз в начале кода srand((unsigned)time(NULL) );

но лучше конечно гугла спросить, писать можно не только так, да и его точное(научное) описание я уж забыл как-то..
Спасибо еще раз, без .h чет не хотел библиотечку подключать ))))
Junk1E вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
рандом Arcueid1691 Общие вопросы C/C++ 7 18.06.2009 00:58
создать в файле рандомный двумерный массив loon Помощь студентам 2 25.06.2008 08:32
рандом benjaminfran Помощь студентам 3 14.02.2008 23:53
Рандомный вывод Forrest Gamp Общие вопросы C/C++ 6 10.02.2008 15:03
Рандом символов Xandr Общие вопросы Delphi 8 25.10.2007 16:50