Неожиданная проблема с math.h [rand() и abs()]

Модератор: Модераторы разделов

Andrey801
Сообщения: 17
ОС: windows хочу muilinux.

Неожиданная проблема с math.h [rand() и abs()]

Сообщение Andrey801 »

Здравствуйте.
У меня неожиданная проблема с вызовом функции rand();

Код: Выделить всё

#include "math.h"
using namespace std;
/*... ... ... */
int M = rand() % m;
int N = rand() % n;


make выдаёт ошибку:

Код: Выделить всё

src/main.cpp: In function ‘int main(int, char**)’:
src/main.cpp:35: ошибка: нет декларации ‘rand’ в этой области видимости


также ругается на abs(). Но воспринимает floor и ceil
система linux mint. компилирую g++ main.cpp -o output
Помогите пожалуйста.[code]
Спасибо сказали:
Аватара пользователя
AsMasteR
Сообщения: 93
ОС: GNU/Linux Ubuntu 9.04

Re: Неожиданная проблема с math.h [rand() и abs()]

Сообщение AsMasteR »

А почему
#include "math.h"
надо ведь:
#include <math.h> :)
Вот прям в этот самый момент я ЖИВУ, и радуюсь ЖИЗНИ и МИРУ на нашей маленькой планете. И ничто и никто не сможет переубедить меня в том, что я счастлив... Dont worry, be happy!!!! Жду друзей у себя на сайте WhiteHakeR
Спасибо сказали:
Andrey801
Сообщения: 17
ОС: windows хочу muilinux.

Re: Неожиданная проблема с math.h [rand() и abs()]

Сообщение Andrey801 »

AsMasteR писал(а):
01.04.2009 16:38
А почему
#include "math.h"
надо ведь:
#include <math.h> :)

Виноват, на самом деле в исходнике <math.h>
Спасибо сказали:
Аватара пользователя
AsMasteR
Сообщения: 93
ОС: GNU/Linux Ubuntu 9.04

Re: Неожиданная проблема с math.h [rand() и abs()]

Сообщение AsMasteR »

Вот сваял простейшую прогу... ранд работает так(можт поможет )

Код: Выделить всё

#include <stdio.h>
#include <math.h>
int main(void)
{
double i;
i=rand(100);
return 0;
}
Вот прям в этот самый момент я ЖИВУ, и радуюсь ЖИЗНИ и МИРУ на нашей маленькой планете. И ничто и никто не сможет переубедить меня в том, что я счастлив... Dont worry, be happy!!!! Жду друзей у себя на сайте WhiteHakeR
Спасибо сказали:
Andrey801
Сообщения: 17
ОС: windows хочу muilinux.

Re: Неожиданная проблема с math.h [rand() и abs()]

Сообщение Andrey801 »

AsMasteR писал(а):
01.04.2009 16:48
Вот сваял простейшую прогу... ранд работает так(можт поможет )

Код: Выделить всё

#include <stdio.h>
#include <math.h>
int main(void)
{
double i;
i=rand(100);
return 0;
}

увы =(. У вас какая система? Я до этого в кноппиксе сидел там всё нормально было. (с rand()) но там g++ был предустановленый, а здесь я его через apt ставил, видимо где то здесь причина, но не пойму в чём именно
Спасибо сказали:
Andrey801
Сообщения: 17
ОС: windows хочу muilinux.

Re: Неожиданная проблема с math.h [rand() и abs()]

Сообщение Andrey801 »

Как оказалось,

Код: Выделить всё

#include <stdlib.h>

решение моей проблемы.
Большое спасибо за отклик!
Спасибо сказали:
Аватара пользователя
AsMasteR
Сообщения: 93
ОС: GNU/Linux Ubuntu 9.04

Re: Неожиданная проблема с math.h [rand() и abs()]

Сообщение AsMasteR »

Продолжая тему работы с math.h......
Я слегка модернизел свой пример, и столкнулся с непотребством вот посмотрите:
test.c

Код: Выделить всё

#include <stdio.h>
#include <math.h>
int main(void)
{
double a=1.1;
double i;
i=exp(a);
printf("BUGAGA\n");
printf("I budet:%lf\n",i);
return 0;
}

собсна компиляция проходит гуд
(gcc -c test.c)
а вот со зборкой бинарника проблемкас
gcc -o test test.o

Код: Выделить всё

test.o: In function `main':
test.c:(.text+0x21): undefined reference to `exp'
collect2: ld returned 1 exit status

прям магия... exp(1.1) так работает, а так а=1.1, ехр(а) нет.....
И в чём секрет? баг? (система ubuntu 8.10)
Вот прям в этот самый момент я ЖИВУ, и радуюсь ЖИЗНИ и МИРУ на нашей маленькой планете. И ничто и никто не сможет переубедить меня в том, что я счастлив... Dont worry, be happy!!!! Жду друзей у себя на сайте WhiteHakeR
Спасибо сказали:
MiK13
Сообщения: 1281
ОС: Linux Debian

Re: Неожиданная проблема с math.h [rand() и abs()]

Сообщение MiK13 »

AsMasteR писал(а):
01.04.2009 19:30
а вот со зборкой бинарника проблемкас
gcc -o test test.o

Код: Выделить всё

test.o: In function `main':
test.c:(.text+0x21): undefined reference to `exp'
collect2: ld returned 1 exit status

прям магия... exp(1.1) так работает, а так а=1.1, ехр(а) нет.....
И в чём секрет? баг? (система ubuntu 8.10)

Естественно. Если используются функции типа exp то необходимо подключать соответствующую библиотеку. т.е.

Код: Выделить всё

gcc -o test test.c -lm

А что касается того, что проходит exp(1.1), так, видимо, компилятор вычисляет это выражение на этапе компиляции и не строит вызов функции exp, а просто ставит 3.004166024
Спасибо сказали:
Аватара пользователя
AsMasteR
Сообщения: 93
ОС: GNU/Linux Ubuntu 9.04

Re: Неожиданная проблема с math.h [rand() и abs()]

Сообщение AsMasteR »

Спасибо большое!! :)
Вот прям в этот самый момент я ЖИВУ, и радуюсь ЖИЗНИ и МИРУ на нашей маленькой планете. И ничто и никто не сможет переубедить меня в том, что я счастлив... Dont worry, be happy!!!! Жду друзей у себя на сайте WhiteHakeR
Спасибо сказали: