Библиотека Math.h в c
Ошибка совсем другая:
Парни! У меня совершенно иная ошибка, я проверял руками, только выделяя память по 16 байт. Попробовав выделить 256кб при попытке записать нижележащим кодом, получил segmentation fault. В чем беда, все равно не знаю.
====
Первый текст:
Решил попробовать себя в простых задачках. Вот она http://acm.timus.ru/problem.aspx?space=1&num=1001
Накидал быстренько такой код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
// int mem = 256*1024; // input raw <256KB
int mem = 16; // for tests
double *arr;
arr = (double *)malloc(mem);
printf("%.4fl\n", sqrt((double)424));
int i = mem/sizeof(int);
while(i>0 && scanf("%lf", &arr[--i]))
;
printf("\n---------------------------------------\n\n");
for(; i<mem/sizeof(int) ;i++){
printf("%.4f\n", sqrt(arr[i]));
}
return 0;
}
По условиям необходимо компилировать со следующими директивами:
gcc -static -fno-strict-aliasing -DONLINE_JUDGE -lm -s
-Wl,--stack=67108864 -O2 -o %1.exe %1.
Но в таком случае компилятор кидает ошибку:
undefined reference to `sqrt'
Хотя -lm есть. Если сунуть в код просто printf("%lf", sqrt((double)1552423)) - то никаких ошибок нет и корень выдается.
Я как гордый предок макак скрутил директивы несколько иначе: gcc -static -fno-strict-aliasing -s -O2 -o execute src.c -lm - у меня на машине работает, а система тестирования кидает Runtime error (access violation).
Что делать?
п.с: какой способ был бы правильным для считывания неизвестного количества входных данных? Не городить же структуры руками.