Pytanie na temat funkcji

0

Witam, mam pytanie dotyczące tego kodu: https://ideone.com/FgNEAg.
A mianowicie skąd funkcja wyswietl_dane wie jaką wartość ma amount_of_elements i wie co wyswietlic? Z góry dzięki!!!

#include <iostream>
#include <iomanip>
#include <math.h>
 
void czytaj_dane();
void przetworz_dane();
void wyswietl_dane();
 
float a,b,c,x1,x2,x0;
char amount_of_elements;
 
 
int main()
{
	std::cout<<std::fixed<<std::setprecision(2);
	czytaj_dane();
	przetworz_dane();
	wyswietl_dane();
 
	return 0;
}
 
void czytaj_dane()
	{
		std::cout<<"Podaj dane rownania\n";
		std::cout<<"Podaj a: ";
		std::cin>>a;
		if(a==0)
		{
			std::cout<<"Niedozwolona wartosc!!! Nacisnij Enter";
			getchar();
			exit(1);
		}else
		{
		std::cout<<"b: ";
		std::cin>>b;
		std::cout<<"i c: ";
		std::cin>>c;
		}
	}
 
void przetworz_dane()
{
		float delta=b*b-4*a*c;
 
		if(delta<0) amount_of_elements=0;
		if(delta==0) amount_of_elements=1;
		if(delta>0) amount_of_elements=2;
 
 
		switch (amount_of_elements)
		{
 
 
			case 1:
			x0=-b/2*a;			
			break;
 
			case 2: {
 
			x1=(-b-sqrt(delta))/2*a;
			x2=(-b+sqrt(delta))/2*a;
 
		}break;
		}	
}
void wyswietl_dane()
{
	switch(amount_of_elements)
	{
	case 0:
	std::cout<<"Rownanie nie posiada pierwiastkow";
	break;
	case 1: 
 
	std::cout<<"Rownanie ma jeden pierwiastek rowny: "<<x0;
	break;
 
	case 2: {
	std::cout<<"Rownanie ma dwa pierwiastki\n";
	std::cout<<"x1: "<<x1;
	std::cout<<"\ni x2: "<<x2;
 
			}
	}
 
}
0

Tak to jest, jak się pisze spaghetti z zależnościami latającymi po całym module:). To jest zadeklarowan u góry zmienna globalna, którą wcześniej modyfikuje przetworz_dane.

0

No dobra dzięki!!! Jakaś porada co do tego spaghetti?

0

A więc lepiej w każdej pętli inicjować i i j niż inicjować je globalnie?

1

Aby skonsolidować ze sobą dane i zestaw funkcji jakie na tych danych operują wymyślono klasy. Zapoznaj się z koncepcją programowania obiektowego w C++ Bracie.

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