program c, wskazniki

0

Witam , czy mogłby ktos madrzejszy popatrzec podpowiedziec co moze byc zle? program rozwiazuje rownanie kwadratowe, wartosci maja byc zwracane poprzez adres, zastosowalem wskazniki ale nie wiem czy dobrze

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

int  rownanie_kw(float a, float b, float c, float *x1, float *x2)
{
float delta=b*b-4*a*c;
printf("Delta wynosi: %f\n",delta);

 if(delta>0.000001) 
 { 
  *x1=(-b-sqrt(delta))/2/a;  
  *x2=(-b+sqrt(delta))/2/a;
 return 2;
 } 
  else if(delta> -0.000001)
 {
  *x1=-b/2/a;  
  return 1;
 }
  else
       return 0;
}

main(int argc,char *argv[])
{

float a,b,c,X1,X2;
  a=2, b=6, c=3.5;  // domyslne wspolczynniki rownania
  if (argc == 4)
  {
    a = atof(argv[1]); b = atof(argv[2]); c = atof(argv[3]);
  }else {
  printf("*******************************************\n");
  printf("Musisz podac dane jako argumenty programu.\nTeraz uzywam domyslnych.\n");
  printf("*******************************************\n");  }
  printf("\nRownanie kwadratowe: %.9gx2 + %.9gx + %.9g = 0\n", a, b, c);
  
 

 int ilosc_wynikow; 
 ilosc_wynikow=rownanie_kw(a,b,c,&X1,&X2);

switch(ilosc_wynikow){

case 1:
{
  printf ("Funkacja ma tylko jedno rozwiazanie\n") ;
  printf ("x = %f\n", X1);
} break; 

case 2:
{
 printf ("Funkcja ma dwa rozwiazania\n"); 
 printf ("x1 = %f, x2 = %f \n",X1,Xd2);
} break;

case 0:
printf ("Funkcja nie ma rozwiazan\n");

  }
 return 0;
}
0

Na oko wygląda ok, masz tylko literówkę tutaj

printf ("x1 = %f, x2 = %f \n",X1,Xd2);

bo jakieś "d" wkradło ci się pomiędzy X i 2 ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1