Egy kérdés, azt szeretném kiíratni, hogy a bevitt szó tükörkép e. De mivel cikluson belül írattam ki hogy tükörkép e, ezért annyiszor írja ki (nyilván), ahányszor lefut a ciklus. A következő kódot írtam: Hogy lehet megoldani?
#include <iostream>
#include <cstring>
using namespace std;
int main ()
{
char in[20];
cin >> in;
int db=strlen(in);
for (int i=0; i<db/2; i++) {
if (in[i]==in[db-i-1]) {
cout <<"tükörkep";
}else{
cout <<"nem tükörkép";
}
}
}
Nem a leghatékonyabb de egyszerű.
#include <string>
int main()
{
std::string s;
std::cin >> s;
if (s == std::string{s.crbegin() , s.crend()})
{
std::cout << "tukorkep\n";
}
std::cin.get();
}
Ugye akkor tükörkép (palindorm) a szó, ha egyszer se lépett be az else ágba, minden betűre tükörkép volt. Tehát a ciklus végén azt kell tudni megmondani hogy volt e az else ágban vagy sem. A legegyszerűbb megoldás ha csinálsz egy boolean változót a ciklus előtt amit átállítasz ha belép az else ágba. Ha lefutott a ciklus akkor megnézed a változót hogy át lett e állítva. A programod ilyenre átírva így nézne ki:
#include <iostream>
#include <cstring>
using namespace std;
int main ()
{
char in[20];
cin >> in;
int db=strlen(in);
bool tukorkep = true;
for (int i=0; i<db/2; i++) {
if (in[i]!=in[db-i-1]) {
tukorkep = false;
break;
}
}
if(tukorkep)
cout <<"tükörkep";
else
cout <<"nem tükörkép";
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!