Witam,
Jeśli zrobiłem, że miejsca zerowe oblicza mi z funkcji to co w niej zwracać ? Bo funkcja powinna coś zwracać prawdą ? Jako parametry podaje liczby a,b,c.
Witam,
Jeśli zrobiłem, że miejsca zerowe oblicza mi z funkcji to co w niej zwracać ? Bo funkcja powinna coś zwracać prawdą ? Jako parametry podaje liczby a,b,c.
Nie jest prawdą, że funkcja musi coś zwracać - może nic nie zwracać (wtedy piszesz void). W Twoim przypadku możesz w niej wypisać te miejsca zerowe i wtedy będziesz miał void, zwrócić ich liczbę albo zwrócić wartości tych miejsc zerowych. Sam zdecyduj co Ci najbardziej odpowiada.
scanf("%f,&c");
zamiana znacznika <quote> na <code class="c">
- @furious programming
Bo wczytujesz tak:
scanf("%f,&c");
zamiast tak:
scanf("%f", &c);
A jeśli chciałbym ten program napisać za pomocą wskaźników. To co jest tu nie tak:
#include <stdio.h>
#include <math.h>
void rownanie(float *a, float *b, float *c);
int main()
{
float *a,*b,*c;
printf("Podaj wartosc a: ");
scanf("%f",&a);
printf("Podaj wartosc b: ");
scanf("%f",&b);
printf("Podaj wartosc c: ");
scanf("%f",&c);
rownanie(a,b,c);
return 0;
}
void rownanie(float *a, float *b, float *c)
{
float x0,x1,x2,delta;
if(a == 0)
{
if(b == 0)
{
if(c == 0)
{
printf("Nieskonczenie wiele rozwiazan");
}
else
{
printf("Popraw dane\n");
}
}
else
{
x0 = -(*c)/ (*b);
printf("Rownanie to ma jedno miejsce zerowe: %f",x0);
}
}
else
{
delta = (*b) * (*b) - 4 * (*a) * (*c);
printf("delta = %f\n",delta);
if(delta == 0)
{
x0 = -(*b) / 2 * (*a);
printf("Rownanie ma jedno rozwiazanie x0 = %f",x0);
}
if(delta < 0)
{
printf("Rownanie nie ma rozwiazan");
}
if(delta > 0)
{
x1 = -(*b) - sqrt(delta) / 2*(*a);
x2 = -(*b) - sqrt(delta) / 2*(*a);
printf("Rownanie ma dwa miejsca zerowe x1 = %f i x2 = %f",x1,x2);
}
}
}
float *a;
- zmienna wskazuje na nie przydzieloną pamięć.scanf("%f",&a);
- niepoprawne użycie wskaźnika, wpisujesz liczbę fłoat
jako adres w pamięci - śmiecitrzeba zmodyfikować początek programu w taki sposób: ?
float aa,bb,cc;
float *a = &aa,*b = &bb,*c = &cc;
printf("Podaj wartosc a: ");
scanf("%f",&aa);
printf("Podaj wartosc b: ");
scanf("%f",&bb);
printf("Podaj wartosc c: ");
scanf("%f",&cc);
może być, ale wywal ten drugi wiersz.
float aa,bb,cc;
float *a = &aa,*b = &bb,*c = &cc;
printf("Podaj wartosc a: ");
scanf("%f",a);
printf("Podaj wartosc b: ");
scanf("%f",b);
printf("Podaj wartosc c: ");
scanf("%f",c);
tak
dalej korzystasz z aa,bb,cc
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.