#include <iostream>
#include <cmath>
using namespace std; 

//funkce zjistuje zda lze ze vstupu dopocitat popripade zda je to potreba
int lze_dopocitat(double celek,double cast,double procenta) {
	int pocet_nezadanych = 0;
	if (celek<=0) pocet_nezadanych++;
	if (cast<=0) pocet_nezadanych++;
	if (procenta<=0) pocet_nezadanych++;

	switch (pocet_nezadanych) {
		case 0: return 0;
		case 1: return 1;
		default: return 3;
		}
}

//funkce zjistuje zda zadane hodnoty vyhovuji vzorci
bool vyhovuje_vzorci(double celek,double cast,double procenta) {
	double prava_strana = celek*procenta/100;
	if (fabs(cast-prava_strana)>=(celek/1000000)) {return false;}
	return true;
}

//funkce dopocitava chybejici hodnotu
double dopocitej(double celek,double cast,double procenta) {
	double dopocitana_hodnota;
	if (celek<=0) {dopocitana_hodnota=cast*100/procenta;}
	if (cast<=0) {dopocitana_hodnota=celek*procenta/100;}
	if (procenta<=0) {dopocitana_hodnota=cast*100/celek;}
	return dopocitana_hodnota;
}

int main(void) {
double celek,cast,procenta = 0;

//Nacteni vstupnich udaju
cout << "Zadej postupne velikost celku, jeho casti a pocet procent.\n"
	"Jeden z udaju muze byt zadan jako 0, dopocita se z ostatnich.\n" 
	<< "Zadej celek: ";
cin >> celek;
if (celek<=0)
	{cout << "Celek = Nezadan" << endl << "Zadej cast: ";}
	else {cout << "Celek = " << celek << endl << "Zadej cast: ";}
cin >> cast;
if (cast<=0)
	{cout << "Cast = Nezadana" << endl << "Zadej pocet procent: ";}
	else {cout << "Cast = " << cast << endl << "Zadej pocet procent: ";}
cin >> procenta;
if (procenta<=0)
	{cout << "Procenta = Nezadana" << endl;}
	else {cout << "Procenta = " << procenta << endl;}

//Vyhodnoceni 
switch (lze_dopocitat(celek,cast,procenta)) {
	case 0: {if (vyhovuje_vzorci(celek,cast,procenta)) 
			{cout << "Data si odpovidaji" << endl;}
			else {cout << "Prectena data nevyhovuji vzorci" 
			<< endl;}
		break;}
	case 1: {if (celek<=0) cout << "Dopocitany celek = ";
		 if (cast<=0) cout << "Dopocitana cast = ";
		 if (procenta<=0) cout << "Dopocitana procenta = ";
		 cout << dopocitej(celek,cast,procenta) << endl; 
		break;} 
	case 3: {cout << "Nelze dopocitavat vice nez jedno cislo" << 
		endl; return 2;}  
	}
return 0;
}