[C]Rownanie kwadratowe ze wskaznikami

vaneq
Użytkownik
Użytkownik
Posty: 8
Rejestracja: 18 paź 2011, o 12:13
Płeć: Mężczyzna
Lokalizacja: Kraśnik

[C]Rownanie kwadratowe ze wskaznikami

Post 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
Awatar użytkownika
mortan517
Użytkownik
Użytkownik
Posty: 3359
Rejestracja: 6 lis 2011, o 15:38
Płeć: Mężczyzna
Lokalizacja: Krk
Podziękował: 112 razy
Pomógł: 662 razy

[C]Rownanie kwadratowe ze wskaznikami

Post autor: mortan517 »

Linijka 15 oraz 20: powinno być:

Kod: Zaznacz cały

printf("x1=%.2lf	x2=%.2lf
",*x1,*x2);
printf("x12=%.2lf
",*x12);
vaneq
Użytkownik
Użytkownik
Posty: 8
Rejestracja: 18 paź 2011, o 12:13
Płeć: Mężczyzna
Lokalizacja: Kraśnik

[C]Rownanie kwadratowe ze wskaznikami

Post autor: vaneq »

Wlasnie tak poprawialem i wtedy dzialało - ale czy w tym przypadku nie mija się z celem uzywanie wskazników?
Awatar użytkownika
mortan517
Użytkownik
Użytkownik
Posty: 3359
Rejestracja: 6 lis 2011, o 15:38
Płeć: Mężczyzna
Lokalizacja: Krk
Podziękował: 112 razy
Pomógł: 662 razy

[C]Rownanie kwadratowe ze wskaznikami

Post 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.
vaneq
Użytkownik
Użytkownik
Posty: 8
Rejestracja: 18 paź 2011, o 12:13
Płeć: Mężczyzna
Lokalizacja: Kraśnik

[C]Rownanie kwadratowe ze wskaznikami

Post autor: vaneq »

to język C
Awatar użytkownika
mortan517
Użytkownik
Użytkownik
Posty: 3359
Rejestracja: 6 lis 2011, o 15:38
Płeć: Mężczyzna
Lokalizacja: Krk
Podziękował: 112 razy
Pomógł: 662 razy

[C]Rownanie kwadratowe ze wskaznikami

Post autor: mortan517 »

W języku C jest referencja?
gryxon
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 30 gru 2011, o 02:21
Płeć: Mężczyzna
Lokalizacja: Puławy
Podziękował: 11 razy
Pomógł: 53 razy

[C]Rownanie kwadratowe ze wskaznikami

Post autor: gryxon »

mortan517 pisze:W języku C jest referencja?
Nie ma. Dlatego podpunkt związany z użyciem referencji jest bezsensu. ;p
Awatar użytkownika
Mariusz M
Użytkownik
Użytkownik
Posty: 6909
Rejestracja: 25 wrz 2007, o 01:03
Płeć: Mężczyzna
Lokalizacja: 53°02'N 18°35'E
Podziękował: 2 razy
Pomógł: 1246 razy

[C]Rownanie kwadratowe ze wskaznikami

Post 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
ODPOWIEDZ