problem język C

Rraaffkkaa
Użytkownik
Użytkownik
Posty: 28
Rejestracja: 29 lis 2010, o 00:13
Płeć: Mężczyzna
Lokalizacja: Krk/Pionki
Pomógł: 3 razy

problem język C

Post autor: Rraaffkkaa »

witam,
mam problem, iż jestem początkującym "programistą"(hehe) toteż chciałbym wiedzieć co jest nie tak w moim programie.Z góry dzięki za odpowiedz.
błąd to : syntax error before '{' token

Kod: Zaznacz cały

#include<stdio.h>
#include<math.h>

double rowkwad()
{
float a,b,c,x1,x2,delta;
printf("Rozwiazuje rownanie kwadratowe\nPodaj wspolczynniki rowanania");
scanf("%f %f %f",&a,&b,&c);
printf("Wybrales nastepujace wspolczynniki\na=%.2f\nb=%.2f\nc=%.2f\n",a,b,c);
delta=b*b-4*a*c;
if(a==0)
{
     printf("Jest to rownanie liniowe,podaj nowe a\n");
     scanf("%f",&a);
}
else
{
 if(delta==0)
 {
 printf("Delta to %.2f\nRozwiazanie to %.2f",delta,(-b)/(2*a));
 }
 if(delta>0)
 {
 x1=(-b-sqrt(delta)/2/a);
 x2=(-b+sqrt(delta)/2/a);
 printf("Rownanie ma 2 rozwiazania x1=%.2f i x2=%.2f\n",x1,x2);
 }
 else printf("Brak rozwiazan rzeczywistych\n");
 return 0;
}

main()
{
 return rowkwad();
}
Ostatnio zmieniony 2 gru 2010, o 21:12 przez scyth, łącznie zmieniany 1 raz.
Powód: Kod umieszczaj w tagach [code].
Luke160
Użytkownik
Użytkownik
Posty: 61
Rejestracja: 9 wrz 2006, o 21:00
Płeć: Mężczyzna
Lokalizacja: Ustroń
Podziękował: 33 razy
Pomógł: 2 razy

problem język C

Post autor: Luke160 »

hmm jak dołożyłem jeden nawias } i int przed main to kompilator przepuścił:

Kod: Zaznacz cały

#include<stdio.h>
#include<math.h>

double rowkwad()
{
	float a,b,c,x1,x2,delta;
	printf("Rozwiazuje rownanie kwadratowe
Podaj wspolczynniki rowanania");
	scanf("%f %f %f",&a,&b,&c);
	printf("Wybrales nastepujace wspolczynniki
a=%.2f
b=%.2f
c=%.2f
",a,b,c);
	delta=b*b-4*a*c;
	if(a==0)
	{
		printf("Jest to rownanie liniowe,podaj nowe a
");
		scanf("%f",&a);
	}
	else
	{
	if(delta==0)
	{
		printf("Delta to %.2f
Rozwiazanie to %.2f",delta,(-b)/(2*a));
	}
	if(delta>0)
	{
		x1=(-b-sqrt(delta)/2/a);
		x2=(-b+sqrt(delta)/2/a);
		printf("Rownanie ma 2 rozwiazania x1=%.2f i x2=%.2f
",x1,x2);
	}
	
	else printf("Brak rozwiazan rzeczywistych
");
	}
	return 0;
}

int main()
{
	return rowkwad();
}
Ostatnio zmieniony 2 gru 2010, o 21:11 przez scyth, łącznie zmieniany 1 raz.
Powód: Kod umieszczaj w tagach [code].
Rraaffkkaa
Użytkownik
Użytkownik
Posty: 28
Rejestracja: 29 lis 2010, o 00:13
Płeć: Mężczyzna
Lokalizacja: Krk/Pionki
Pomógł: 3 razy

problem język C

Post autor: Rraaffkkaa »

dzieki ,ale jeszcze poprawiłem jedną rzecz mianowicie dołożyłem if zamiast else bo np przy podaniu współczynników 2 4 2 to mi wyświetlał dwie odp że pierwiastek to -1 i jeszcze brak rozw
a swoją drogą to int main() nie potrzebne chodziło chyba o te klamry

Kod: Zaznacz cały

#include<stdio.h>
#include<math.h>

double rowkwad()
{
float a,b,c,x1,x2,delta;
printf("Rozwiazuje rownanie kwadratowe
Podaj wspolczynniki rowanania");
scanf("%f %f %f",&a,&b,&c);
printf("Wybrales nastepujace wspolczynniki
a=%.2f
b=%.2f
c=%.2f
",a,b,c);
delta=b*b-4*a*c;
if(a==0)
{
printf("Jest to rownanie liniowe,podaj nowe a
");
scanf("%f",&a);
}
else
{
if(delta==0)
{
printf("Delta to %.2f
Rozwiazanie to %.2f",delta,(-b)/(2*a));
}
if(delta>0)
{
x1=(-b-sqrt(delta)/2/a);
x2=(-b+sqrt(delta)/2/a);
printf("Rownanie ma 2 rozwiazania x1=%.2f i x2=%.2f
",x1,x2);
}

if(delta<0) printf("Brak rozwiazan rzeczywistych
");
}
return 0;
}

main()
{
return rowkwad();
}
Ostatnio zmieniony 2 gru 2010, o 21:11 przez scyth, łącznie zmieniany 1 raz.
Powód: Kod umieszczaj w tagach [code].
Luke160
Użytkownik
Użytkownik
Posty: 61
Rejestracja: 9 wrz 2006, o 21:00
Płeć: Mężczyzna
Lokalizacja: Ustroń
Podziękował: 33 razy
Pomógł: 2 razy

problem język C

Post autor: Luke160 »

Tak jakoś z przyzwyczajenia wrzuciłem ten int przed main'a ale racja, nie jest to konieczne :)
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

problem język C

Post autor: wawek91 »

Czemu Twoja funkcja ma zwracać coś będące double? Jak widzę Twoja funkcja głównie wyświetla czy są 2 rozwiazania czy 1 czy ich wogóle nie ma więc nie lepiej zrobić ją w void ? Wtedy nie będzie nic zwracać a nadal będzie wyświetlać tak jak Twoja (oczywiście wtedy trzeba delikatnie kod zmodyfikować).
ODPOWIEDZ