Problem z funkcjami. Napisz program ktory obliczy pierwiastek rownania kwadratowego.

0

Witam Mam zadanie Napisac program, który z wykorzystaniem instrukcji wyboru switch obliczy pierwiastki równania
kwadratowego ax2+bx+c = 0, gdzie zmienne a, b, c to liczby rzeczywiste wprowadzane z klawiatury.

Program powinien zawierać trzy funkcje:
a) czytaj_dane() - odpowiedzialną za wczytanie danych do programu i obsłużenie sytuacji kiedy a = 0;
b) przetworz_dane() - odpowiedzialną za wykonanie niezbędnych obliczeń;
c) wyswietl_wynik() - odpowiedzialną za pokazanie rezultatów na ekranie komputera.

Wiem ze kod jest bardzo sredni ale dopiero sie uczę. Chciałbym wiedzieć dlaczego wynik nie przenosi mi się do funkcji wyswietl_wynik. Jeśli dam żeby wynik wyświetlił się w funkcji przetworz_dane to wszystko działa.

#include <cmath>
using namespace std;

float a,b,c,x1,x2,x0;
int delta;



int czytaj_dane()
{
    cout<<"podaj a: ";
    cin>>a;
    cout<<"podaj b: ";
    cin>>b;
    cout<<"podaj c: ";
    cin>>c;


}
int przetworz_dane(float a,float b, float c,float x1,float x2, float x0,int delta)
{
    delta = b*b - 4*a*c;
switch(delta)
  {
  case 0:
      x0 = -b/(2*a);

  break;
  default:
      delta = sqrt(delta);
      x1 = (-b - delta)/(2*a);
      x2 = (-b + delta)/(2*a);
    break;
   }
}
int wyswietl_wynik()
{
cout<<x1<<x2<<x0;
}

int main()
{
czytaj_dane();
przetworz_dane(a,b,c,x1,x2,x0,delta);
wyswietl_wynik();
    return 0;
}```
0

Wcale nie modyfikujesz zmiennych wrzucanych do przetworz_dane() - przekazujesz je przez kopię (czyli wrzucasz jedynie wartość), a powinieneś przez referencję (czyli: typ& nazwa_argumentu).
Najlepiej zrezygnuj z użycia zmiennych globalnych i wykorzystaj referencje:

int przetworz_dane(float a,float b, float c, float& x1, float& x2, float& x0, int delta)
{
}

void wyswietl_wynik( const float x1, const float x2, const float x0 )
{
std::cout<<x1<<x2<<x0 << std::endl;
}

Zapoznaj się z różnicą między przekazywaniem przez wartość i przez referencję.

0

@Bartosz36: Bardzo bardzo ci dziękuję. Główkowałem nad tym od wczoraj. Wracam do nauki.

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