Daco sa pokazilo v kode

Programovacie jazyky, rady, poradňa...
Žmocho
Novice
Novice
Príspevky: 7
Registrovaný: 09 aug 2019, 11:43

Daco sa pokazilo v kode

Príspevok od používateľa Žmocho »

Zdravím, prosím vysvetlí mi niekto preco tento jednoduchy kod nefunguje? Ide tam o zadanie mena a veku no ale hlavne mi islo o to aby sa dal ukoncit ked je spusteny a skusil som vela moznosti a nakoniec som skoncil pri bool a vznikol s toho takyto gulas :(

Kód: Vybrať všetko

[size=85]#include <iostream>
#include <string>
using namespace std;
bool Tor1(char*);
bool Tor2(char*);
struct Nomis
{
	bool K1;
	bool K2;
	bool koniec = false;
	char znak,zz;
	string meno;
	int vek;
};
int main()
{
	Nomis a1;
	cout<<"chces zadat informacie o sebe A/N? "<<"\n";
	cin>>a1.zz;
	cin.ignore();
	if (a1.zz == 'N')
a1.K2 = Tor2(&a1.znak);
else
a1.K1 = Tor1(&a1.znak);
{
if (a1.K1=false)
 {
	cout<<"zadaj meno: "<<endl;
	getline(cin,a1.meno);
    cout<<"zadaj vek: "<<endl;
    cin>>a1.vek;
    cin.ignore();
    cout<<"tvoje meno: "<<a1.meno<<endl;
    cout<<"tvoj vek: "<<a1.vek<<endl;
   cout<<"----------koniec---------"<<endl;
   return 0;
 }
   else 
  cout<<"koniec";
}

   return 0;
}
bool Tor1(char*znak)
{
	    Nomis f1;
		cout<<"A = vratit sa k zadavaniu udajov: ";
		
		cin.get(f1.znak);
		cin.ignore();
		
	    if (f1.znak=='A')
		{
	     f1.koniec = false;
	     return f1.koniec;
		}
		
		 	     
}
bool Tor2(char*znak)
{
	 Nomis f2;
	 cout<<"K = koniec zadavania"<<endl;
		cin.get(f2.znak);
		cin.ignore();
		if (f2.znak=='K')
	{

	f2.koniec = true;
	return f2.koniec;
	
	}

}[/size]
Za skoru radu dakujem a nehejtujte ma ja viem ze mi to nejde... :(
aacid
Hardcore addict
Hardcore addict
Príspevky: 8135
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Daco sa pokazilo v kode

Príspevok od používateľa aacid »

napis co ti tam nejde. nejde zkompilovat? aky error to hadze?

minimalne co vidim takto tak if (a1.K1=false), v ife pravdepodobne chces 2 hodnoty porovnat, nie hodnotu priradit do premennej.
Žmocho
Novice
Novice
Príspevky: 7
Registrovaný: 09 aug 2019, 11:43

Re: Daco sa pokazilo v kode

Príspevok od používateľa Žmocho »

ide spustit no funguje zle a pise to ze non static data member initializers only avaible with -std=c++11or -std=gnu++11
Na preklad puzivam dev c++
Oblak
Light Expert
Light Expert
Príspevky: 60
Registrovaný: 27 máj 2015, 15:40

Re: Daco sa pokazilo v kode

Príspevok od používateľa Oblak »

čo som na rýchlo pozeral a zisťoval, tak máš dve možnosti na výber
tam kde máš

Kód: Vybrať všetko

bool koniec = false; // odstráň = false;
a potom by ti to malo ísť bez "non static data member initia..." upozornenia, alebo si zapni C++ 11, žiaľ v dev c++ nerobím tak v tomto ti neviem poradiť.
možno skús toto https://stackoverflow.com/questions/169 ... ts-c0x-ran

tu máš viac info o tom ak by ťa to zaujímalo, aspoň myslím, že je to aj tvoj prípad (pozri príspevok označený za odpoveď)
https://stackoverflow.com/questions/408 ... ing-memory
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8215
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Daco sa pokazilo v kode

Príspevok od používateľa harrison314 »

Plus este vyzera, ze v metodach bool Tor1(char*znak) a bool Tor2(char*znak) ti chyba return mimo podmienok.
A celkovo mi pride, ze robis nieco jednoduche velmi komplikovanym sposobom.
Žmocho
Novice
Novice
Príspevky: 7
Registrovaný: 09 aug 2019, 11:43

Re: Daco sa pokazilo v kode

Príspevok od používateľa Žmocho »

Oblak diky za radu uz mi to nepise to upozornenie a harrison kod som daako prerobil a uz funguje ako ma :)
#include <iostream>
#include <string>
using namespace std;
bool Tor2(char*);
struct Nomis
{
bool K2;
bool koniec;
char znak,zz;
string meno;
int vek;
};
int main()
{
Nomis a1;
cout<<"chces zadat informacie o sebe A/N? "<<"\n";
cin>>a1.zz;
cin.ignore();
if (a1.zz == 'N')
a1.K2 = Tor2(&a1.znak);
if (a1.K2 == false)
{
cout<<"zadaj meno: "<<endl;
getline(cin,a1.meno);
cout<<"zadaj vek: "<<endl;
cin>>a1.vek;
cin.ignore();
cout<<"tvoje meno: "<<a1.meno<<endl;
cout<<"tvoj vek: "<<a1.vek<<endl;
cout<<"----------koniec---------"<<endl;
return 0;
}
cout<<"koniec";
return 0;
}

bool Tor2(char*znak)
{
Nomis f2;
cout<<"K = koniec zadavania | A=naspat k zadavniu"<<endl;
cin.get(f2.znak);
cin.ignore();
if (f2.znak=='K')
{

f2.koniec = true;
return f2.koniec;
}
else if (f2.znak=='A')
{
f2.koniec = false;
return f2.koniec;
}
}
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8215
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Daco sa pokazilo v kode

Príspevok od používateľa harrison314 »

Stale ti tam chyba return

Skus to takto:

Kód: Vybrať všetko

bool Tor2(char *znak)
{
 char c;

 cout << "K = koniec zadavania | A=naspat k zadavniu" << endl;
 cin.get(c);
 cin.ignore();

 return c == 'K';
}
Napísať odpoveď