Cześć wszystkim :)
Mój problem wygląda następująco:
Mam napisać funkcję, która w tablicy np. 100 wartości znajduje wartość najbliższą zadanej przez użytkownika.
Wartości mają być liczbami losowymi z przedziału [0;1]
Napisałam coś takiego, lecz kompilator wyrzuca błąd.
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>
#define SIZE 100
int najblizsza(float val, float *tab);
int main(void){
float tab[1000], val;
int i;
srand(time(NULL));
//losowanie el tablicy
for(i=0;i<SIZE;i++)
tab[i]=(float)(rand()/(RAND_MAX+1.0));
for(i=0;i<SIZE;i++)
printf("%.2f ", tab[i]);
printf("\nPodaj wartosc z przedzialu [0;1]\n");
scanf("%f", val);
i=najblizsza(val, tab);
printf("\nWartosc najblizsza wpisanej to: %f\n", i);
}
int najblizsza(float val, float *tab){
int i;
float x;
x=5.0;
for(i-0;i<SIZE;i++)
if((fabsf(*(tab+i)-val))<(fabsf(*(tab(i+1))-val))){
if(*(tab+i)<x)
x=*(tab+i);
}
else{
if(*(tab(i+1))<x)
x=*(tab(i+1));
}
return x;
}
Czas na pytania:
- Czy można w ten sposób używać funkcji fabsf, a jeśli nie to w jaki?
- Czy można napisać to w inny, prostszy sposób?
- Dlaczego kompilator wyrzuca mi błąd
called object 'tab' is not a function
?