dealer999
(Tomasz Gawron)
9 Grudzień 2010 22:01
#1
Witam, częścią projektu jaki mam przygotować jest obliczenie wartości cosinusa dla pewnych argumentów w podanym przez użytkownika przedziale i zapisanie ich do tablicy.
Tablica zatem ma mieć tyle wartości ile będzie tych wyników - tutaj pojawia się mój pierwszy problem ponieważ nie wiem jak poprawnie zadeklarować taką tablicę. W poniższym kodzie spróbowałem zrobić to za pomocą zmiennej ale nie wiem tez w jaki sposób jej wartość przyrównać do liczby naturalnej aby zadeklarować tablice poprawnie a następnie wpisać do niej wartości
#include
#include
int main()
{
double pp, kp, krok, eps, i, s, licznik;
s==0;
printf("Podaj poczatek przedzialu:");
scanf("%lf",&pp);
printf("Podaj koniec przedzialu:");
scanf("%lf",&kp);
printf("Podaj krok:");
scanf("%lf",&krok);
printf("Podaj dokladnosc:");
scanf("%lf",&eps);
licznik = ((kp-pp)/krok);
double tablica1[licznik];
for (i=pp; i<=kp; i=i+krok)
{
tablica1[s] = cos(i);
s=s+1;
}
system("PAUSE");
return 0;
}
Poza tymi problemami podczas próby kompilacji wyskakują mi następujące błędy:
L18 error C2143: syntax error : missing ‘;’ before ‘type’
L21 error C2065: ‘tablica1’ : undeclared identifier
L21 error C2109: subscript requires array or pointer type
Proszę o pomoc w zadeklarowaniu poprawnie tej tablicy
s==0;
to jest porównanie wartości. Tutaj chodziło Ci o przypisanie wartości (=).
Poczytaj:
http://pl.wikibooks.org/wiki/C/Tablice
K.S
(K.S.)
9 Grudzień 2010 22:41
#3
Dynamiczna alokacja pamięci
double *tab;
...
tab = malloc(ilosc_elementow * sizeof *tab);
dealer999
(Tomasz Gawron)
10 Grudzień 2010 14:13
#4
zmieniłem co nieco w kodzie - tablica jest już dobrze zadeklarowana ale przy próbie jej uzupełnienia i wypisania wartości mam następujące błędy:
L23 errorC2108: subscript is not of integral type
L28 errorC2108: subscript is not of integral type
gdy wstawię w miejsce “s” lub “i” jakieś konkretne wartości liczbowe (np. 0) to jest ok.
#include
#include
#include
int main()
{
double pp, kp, krok, eps, i, s, licznik;
double *tablica1;
s=0;
printf("Podaj poczatek przedzialu:");
scanf("%lf",&pp);
printf("Podaj koniec przedzialu:");
scanf("%lf",&kp);
printf("Podaj krok:");
scanf("%lf",&krok);
printf("Podaj dokladnosc:");
scanf("%lf",&eps);
licznik = ((kp-pp)/krok);
tablica1 = malloc(licznik * sizeof *tablica1);
for (i=pp; i<=kp; i=i+krok)
{
tablica1[s] = cos(i);
s=s+1;
}
for (i=0; i<=licznik; i=i+1)
{
printf("%lf\n", tablica1[i]);
}
system("PAUSE");
return 0;
}
nr47
(Sawyer47)
10 Grudzień 2010 14:21
#5
Zmienna s ma w Twoim kodzie typ double, a to nie jest typ całkowitoliczbowy - dokładnie to głosi komunikat błędu.
dealer999
(Tomasz Gawron)
10 Grudzień 2010 15:50
#6
po zmianie typu działa jak należy - dziękuję