Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Еще одна ошибка: генератор случайных  (Прочитано 2780 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн F1asher_086

  • Автор темы
  • Любитель
  • *
  • Сообщений: 60
    • Просмотр профиля
Решил сделать отдельную тему, т.к. в предыдущей развернулся не маленький спор. Не буду мешать.

Так вот, у меня такая проблема: не каким боком не хочет генерировать число. В книге такой пример:
Код: (c) [Выделить]
#include <iostream>
#include <stdlib.h>
// Программа-игра "Угадай число"
using namespace std;
int main()
{ cout << "Задумано число от 1 до 1000." << endl;
cout << "Попробуйте угадать!" << endl;
cout << "Вам дается не более 10 попыток" << endl;
const int n = 10; // Максимальное число попыток
randomize();                            // Инициализация датчика случайных чисел
unsigned int number = random(1000) + 1; // Случайное число
unsigned getnum; // Получаемое число от пользователя
int i = 0;
while (i < n);
{ cout << "Какое число задумано?" << endl;
cin >> getnum;
++i; // Считаем количество попыток
if (number < getnum) cout << "Задуманное число меньше!\n";
if (number > getnum) cout << "Задуманное число больше!\n";
if (number == getnum)
{ cout << "Вы угадали!!!\n";
cout << "Сделано " << i << " попыток.\n";
return 0; // Завершение с успехом
}
}
cout << "Вы исчерпали все попытки! Жаль."<< number << endl;
return -1; // Завершение с неудачей
}
Компилятор говорит:
~$ g++ -o '/home/test/random_igra' '/home/test/random_igra.cpp'
/home/test/random_igra.cpp: В функции «int main()»:
/home/test/random_igra.cpp:8:12: ошибка: нет декларации «randomize» в этой области видимости
/home/test/random_igra.cpp:9:35: ошибка: too many arguments to function «long int random()»
/usr/include/stdlib.h:327:17: замечание: declared here

Перечитал много разных статей и тем на форумах,
(Нажмите, чтобы показать/скрыть)
но так и не нашел решения. с функцией rand() программа успешно компилируется, но когда доходит до ввода предполагаемого числа, программа его не проверяет и не выводит сообщений.
~$ /home/test/random_igraЗадумано число от 1 до 1000.
Попробуйте угадать!
Вам дается не более 10 попыток
500
Вот я ввожу число 500 и дальше ничего не происходит.

Что с этим делать?
« Последнее редактирование: 16 Мая 2012, 21:14:59 от yorik1984 »

Оффлайн Señor_Gaga

  • Забанен
  • Активист
  • *
  • Сообщений: 878
  • Ubuntu 12.04LTS & Linux Mint 13LTS "Maya"
    • Просмотр профиля
Re: Еще одна ошибка: генератор случайных
« Ответ #1 : 16 Мая 2012, 21:11:12 »
/home/test/random_igra.cpp:8:12: ошибка: нет декларации «randomize» в этой области видимости

Судя по этому сообщению не хватает библиотеки где прописана функция randomize()
Давно не писал, но возможно надо #include <math.h>

Оффлайн F1asher_086

  • Автор темы
  • Любитель
  • *
  • Сообщений: 60
    • Просмотр профиля
Re: Еще одна ошибка: генератор случайных
« Ответ #2 : 16 Мая 2012, 21:29:01 »
Señor_Gaga,
Не помогает, та же ошибка.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Wars ~.o

Оффлайн Zeka13

  • Старожил
  • *
  • Сообщений: 1177
  • 18.10 Gnome x64 GTX 970
    • Просмотр профиля
Re: Еще одна ошибка: генератор случайных
« Ответ #4 : 16 Мая 2012, 22:15:20 »
#include <ctime>
srand( (unsigned)time( NULL ) ); //рандомчик
вместо еретичного randomize !
Если Wine - это костыль , то  Punto Switcher - это протез , а Daemon Tools инвалидное кресло.

Оффлайн F1asher_086

  • Автор темы
  • Любитель
  • *
  • Сообщений: 60
    • Просмотр профиля
Re: Еще одна ошибка: генератор случайных
« Ответ #5 : 17 Мая 2012, 06:41:50 »
#include <ctime>
srand( (unsigned)time( NULL ) ); //рандомчик
вместо еретичного randomize !
А куда нужно писать srand( (unsigned)time( NULL ) ), сразу после включения ctime? Если так, то у меня выдает ошибку:
~$ g++ -o '/home/test/random_igra' '/home/test/random_igra.cpp'
/home/test/random_igra.cpp:5:7: ошибка: expected constructor, destructor, or type conversion before «(» token
/home/test/random_igra.cpp: В функции «int main()»:
/home/test/random_igra.cpp:13:35: ошибка: too many arguments to function «long int random()»
/usr/include/stdlib.h:327:17: замечание: declared here

Оффлайн Señor_Gaga

  • Забанен
  • Активист
  • *
  • Сообщений: 878
  • Ubuntu 12.04LTS & Linux Mint 13LTS "Maya"
    • Просмотр профиля
Re: Еще одна ошибка: генератор случайных
« Ответ #6 : 17 Мая 2012, 07:11:44 »
Уже давно было бы проще написать собственный генератор случайных чисел (3-4 строки кода).

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Еще одна ошибка: генератор случайных
« Ответ #7 : 17 Мая 2012, 07:29:04 »
Señor_Gaga,
расскажи это людям защищавшим диссертации по генерации случайных чисел =)
не самая тривиальная задача нынче воспринимаемая как должное

Оффлайн Señor_Gaga

  • Забанен
  • Активист
  • *
  • Сообщений: 878
  • Ubuntu 12.04LTS & Linux Mint 13LTS "Maya"
    • Просмотр профиля
Re: Еще одна ошибка: генератор случайных
« Ответ #8 : 17 Мая 2012, 09:56:33 »
Вот простейший генератор на C

 unsigned long next=1;
 
 int rand(void) { /* возвращает псевдослучайное число */
    next=next*1103515245+12345;
   return((unsigned int)(next/65536)%32768);
 }
 
 void srand(unsigned int seed) {  next=seed;  }
 
« Последнее редактирование: 17 Мая 2012, 10:20:17 от Señor_Gaga »

Оффлайн Zeka13

  • Старожил
  • *
  • Сообщений: 1177
  • 18.10 Gnome x64 GTX 970
    • Просмотр профиля
Re: Еще одна ошибка: генератор случайных
« Ответ #9 : 17 Мая 2012, 14:06:38 »
используйте google и книге, ну или мне в личку можно написать
Если Wine - это костыль , то  Punto Switcher - это протез , а Daemon Tools инвалидное кресло.

 

Страница сгенерирована за 0.112 секунд. Запросов: 25.