ďťż

Ładny brzuch

Jestem baaaardzo początkującym studentem informatyki i uczę się dopiero języka C. Tak więc naskrobałem programik, który ma liczyć miejsca zerowe funkcji kwadratowej, ale za chiny nie chce się skompilować. Czy ktoś obeznany może powiedzieć, co zrobiłem nie tak?

#include<stdio.h> #include<math.h> int main(void) { float a, b, c, delta, x0, x1, x2, sdelta; printf("Wpisz wspolczynnik a\n"); scanf("%f", a); printf("Wpisz wspolczynnik b\n"); scanf("%f", B); printf("Wpisz wspolczynnik c\n"); scanf("%f", c); delta = b * b - 4 * a *c if (delta < 0) { printf("Ta funkcja nie ma miejsc zerowych\n"); return 0; } if (delta = 0) { x0 = (-B)/2*a; printf("Rownanie ma 1 miejsce zerowe i jest nim %.2f\n", x0); return 0; } if (delta > 0) { sdelta = sqrt(delta); x1 = (-B) - sdelta /2*a; x2 = (-B) + sdelta /2*a; printf("Rownanie ma 2 miejsca zerowe: x1 = %.2f\n, x2= %.2f\n", x1, x2); return 0; } }

A teraz pytanko z innej beczki. Co to właściwie oznacza "%.2f"?
Użytkownik Nitrox edytował ten post 30 październik 2007, 18:34


Ponieważ język C/C++ w porówaniu do Pascala rozróżnia wielkość liter.
A Ty zadeklarowałeś małe b, a używałeś duże B. Dla kompilatora to inna zmienna która nie była wcześniej zadeklarowana.

A co do obliczania miejsc zerowych to chyba trzeba dać 2*a w nawias: x0 = -b / (2*a);
Bo inaczej najpierw -b podzieli przez 2, a potem wynik tego dzielenia pomnoży przez a
Użytkownik wasmaro edytował ten post 30 październik 2007, 18:33
Nie wiem czemu tu się wkleiło z dużymi literami. W Dev-C++ jest normalnie, z małymi a i tak nie chce się skompilować. Dodałem nawiasy, nadal nie działa.
Użytkownik Nitrox edytował ten post 30 październik 2007, 18:34
A masz średnik na końcu tej instrukcji
delta = b * b - 4 * a *c;

W instrukcjach warunkowych mają być dwa znaki równości
if (delta == 0)
Użytkownik wasmaro edytował ten post 30 październik 2007, 18:41



A teraz pytanko z innej beczki. Co to właściwie oznacza "%.2f"?

oznacza to ze wartosc zmiennej wyswietli Ci sie z dokladnoscia do dwoch miejsc po przecinku..

nietrzeba zadnych znakow rownosci :P
if( !delta ) :)
Użytkownik fernandez edytował ten post 31 październik 2007, 00:17
w scanf 2 parametr to adres zmiennej, a nie zmienna. czyli ma byc &a, a nie a

Najlepiej wklej błąd z kompilatora.

Już sobie poradziłem. Śmiga pięknie :D . Dodałem śrenik po obliczeniu delty i te znaki & w funkcji scanf (o których niewiedzieć czemu zapomniałem wcześniej). Wtedy już program działał, ale po podaniu a, b, c po prostu się kończył. Wtedy dodałem przy pętli if (delta == 0) (te 2 znaki równości "==") i wtedy zaczął śmigać elegancko. Dzięki za pomoc :)
Użytkownik Nitrox edytował ten post 31 październik 2007, 08:31
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •