Strona 1 z 1

[C]Rownanie kwadratowe ze wskaznikami

: 23 gru 2015, o 19:32
autor: vaneq
Witam. Mam problem ze znalezieniem błędu w kodzie, nie jestem zbyt dobry z programowania. Mam zadanie
Napisz funkcję, która rozwiąże równanie kwadratowe (przy danych współczyn-
nikach a, b, c) i zwróci oba rozwiązania. Napisz dwa warianty tej funkcji
- jeden, który dokona tego przez referencję; drugi - który dokona tego przez
wskaźniki. Odpowiednio dostosuj funkcję main do każdego z wariantów.
Program wyswietla zawsze wyniki zerowe, nie wiem dlaczego. Dotyczy to etapu zadania ze wskaznikami.

Oto mój kod

Kod: Zaznacz cały

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

void RozwiazRownanieKwadratowe(double a, double b, double c, double *x1, double *x2, double *x12)
{
	double delta;
	delta=b*b-4*a*c;
	if (delta<0) printf("Brak rozwiazan
");
	else if (delta>0)
	{
		*x1=(-b+sqrt(delta))/(2*a);
		*x2=(-b-sqrt(delta))/(2*a);
		printf("x1=%.2lf	x2=%.2lf
",x1,x2);
	}
	else 
	{
		*x12=b/(-2*a);
		printf("x12=%.2lf
",x12);
		}
}
void main()
{
	double a=1,b=2,c=1;
	double x1,x2,x12;
	RozwiazRownanieKwadratowe(a,b,c,&x1,&x2,&x12);

}
Pozdrawiam

[C]Rownanie kwadratowe ze wskaznikami

: 23 gru 2015, o 19:47
autor: mortan517
Linijka 15 oraz 20: powinno być:

Kod: Zaznacz cały

printf("x1=%.2lf	x2=%.2lf
",*x1,*x2);
printf("x12=%.2lf
",*x12);

[C]Rownanie kwadratowe ze wskaznikami

: 23 gru 2015, o 19:49
autor: vaneq
Wlasnie tak poprawialem i wtedy dzialało - ale czy w tym przypadku nie mija się z celem uzywanie wskazników?

[C]Rownanie kwadratowe ze wskaznikami

: 23 gru 2015, o 19:51
autor: mortan517
Ty jesteś w innej funkcji, dla której x1 oraz x2 to są adresy, więc musisz dać operator wyłuskania. Ogólnie w C++ nie używa się wskaźników żeby przekazać wartości double.

[C]Rownanie kwadratowe ze wskaznikami

: 23 gru 2015, o 20:01
autor: vaneq
to język C

[C]Rownanie kwadratowe ze wskaznikami

: 23 gru 2015, o 21:09
autor: mortan517
W języku C jest referencja?

[C]Rownanie kwadratowe ze wskaznikami

: 23 gru 2015, o 23:05
autor: gryxon
mortan517 pisze:W języku C jest referencja?
Nie ma. Dlatego podpunkt związany z użyciem referencji jest bezsensu. ;p

[C]Rownanie kwadratowe ze wskaznikami

: 26 gru 2015, o 13:37
autor: Mariusz M
Ja widzę dwie możliwości

1. Wywal wypisywanie wyników na zewnątrz funkcji RozwiazRownanieKwadratowe
(Tutaj przydałoby się wepchać deltę na listę parametrów funkcji)
2. W funkcji printf daj wskaźnik na zmienną którą wypisujesz