Warunek ze stringiem

Warunek ze stringiem
0

Dlaczego to nie zadziała?

Kopiuj
 #include <iostream>
#include <string>

using namespace std;

int main()
{
	cout<<"Wpisz swoje imie z malych liter, bez polskich znakow...";
	string name;
	cin>>name;
	
	if ( name == mateusz )
	{
		cout<<"Wpisales dobrze";
		}
		
	if (name!=mateusz)
	{
		cout<<"Wpisales zle";
		}
		
	cin.get();
	return 0;
}

W końcu string, to ciąg znaków, np. liter... Dlaczego z liczbami działa, a ze słowami nie?

Endrju
  • Rejestracja:około 22 lata
  • Ostatnio:ponad rok
0

A dlaczego w cout używasz " ... " a potem nagle nie? Dlaczego nie napisałeś po prostu tego tekstu jaki ma się wyświetlić? Napis to napis, czy to cout czy w if. Dodaj " ... ".


"(...) otherwise, the behavior is undefined".
0

Nie bardzo rozumiem o co chodzi :/ Zauważyłem błędy w kodzie i poprawiłem. Nie jestem w stanie dostrzec gdzie jeszcze jest jakiś błąd...

Kopiuj
#include <iostream>
#include <string>

using namespace std;

int main()
{
	cout<<"Wpisz swoje imie z malych liter, bez polskich znakow...";
	string name;
	cin>>name;
	
	if ( name == "mateusz" );
	{
		cout<<"Wpisales dobrze";
		}
		
	if (name != "mateusz");
	{
		cout<<"Wpisales zle";
		}
		
	cin.get();
	return 0;
} 

Kompiluje normalnie, ale nie działa jak nalezy :(

twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
0
Kopiuj
if ( name == "mateusz" );

widzisz średnik na końcu? On sprawia, że cout zawsze się wykona, bo nie należy do ifa.

0

Dziękuję Wam, dobrzy Ludzie! :D

Craith
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:146
1

I jeszcze wypadałoby żebyś używał

Kopiuj
 if(...) 
     Cos;
else
niecos; 

Pisanie na telefonie takich rzeczy jest naprawdę uciążliwe

edytowany 2x, ostatnio: Craith
grzesiek51114
grzesiek51114
Kolega @Craith chciał pewnie zaznaczyć, że można pominąć klamry przy "jednolinkowych" instrukcjach :)
KA
jak to
Sopelek
albo to, że nie trzeba pisać przeciwnego warunku
Craith
Sopelek o to mi chodziło, Grzesiu a o tym nawet nie myślałem
grzesiek51114
grzesiek51114
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 4 lata
  • Postów:2442
0

@karolinaa No pewnie chodziło mu o to, że można zapisać:

Kopiuj
bool warunek = true;
if (warunek)
	cout << "Prawda" << endl;
else cout << "Falsz" << endl;

zamiast:

Kopiuj
bool warunek = true;
if (warunek) {
	cout << "Prawda" << endl;
}
else {
	cout << "Falsz" << endl;
}

że krócej w sensie ;)

edytowany 1x, ostatnio: grzesiek51114
L0
może chodziło o sam fakt użycia else, którego autor nie użył.
grzesiek51114
grzesiek51114
Oba :)
KA
mnie uczyli (a za PRLu to było vide stara szkoła) żeby klamry były zawsze. jak ktoś nie chce tutaj klamer to może zrobićstd::cout &lt;&lt; ((warunek) ? &quot;Prawda&quot; : &quot;Falsz&quot;); więc w zasadzie #zamykam_temat
Endrju
Wtf. Po if musi być coś, co nazywa się "statement". Tylko jedno. Żeby móc wykonać więcej "statement" po if, trzeba z nich jakoś zrobić jedno. Do tego używa się { } i takie coś nazywa się "compound statement". Jednak pomijanie klamr to niedobra praktyka.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.