Kezdőoldal » Számítástechnika » Programozás » Mit ronthatok el a következő...

Mit ronthatok el a következő C++ kódnál? Van egy megoldásom, de szerettem volna másképp megcsinálni, de valami nem stimmel. Szerintetek?

Figyelt kérdés

int main(){


char szo[20];

cin >> szo;


int db = 0;

db = strlen(szo);


bool tukorkep = false;


for (int i = 0; i<=db/2; i++){

for (int j = db; j >= db/2; j--){

if (szo[i] == szo[j]){

tukorkep=true;

}

else{

tukorkep = false;

}

}

}


if (tukorkep){

cout << "tukorkepe"<<endl;

}

else{

cout << "nem tukorkepe"<<endl;

}


system("pause");

return 0;

}


2018. febr. 4. 18:34
 1/6 anonim ***** válasza:
100%

Több mindent.


- a tömbök 0-tól indulnak, így pl. egy 4 hosszúságú tömb 0-3-ig tart, tehát nem a 4. indexű az utolsó karakter, hanem a 3.


- két for ciklus helyett elég egy, ahol az i. elemet hasonlítod össze a hossz-i-1. elemmel.

2018. febr. 4. 19:00
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:
Ühm, igen a másik példában (ami működik is), így van megoldva tomb[i]==tomb[hossz-1-i], de szerettem volna másképp megoldani... Köszönöm
2018. febr. 4. 19:15
 3/6 anonim ***** válasza:
Logikailag is teljesen rossz az egész, mert nem csinálsz mást csak a középső 2 (vagy rosszabb esetben 1) karakter egyenlőségét vizsgálod csak.
2018. febr. 4. 21:40
Hasznos számodra ez a válasz?
 4/6 tabaki ***** válasza:

@#2:

Az csak másképp van, de nem megoldás, ha a programod egészen mást művel, mint a példa. Szerintem egyáltalán nem gondoltad át, hogy mit csinálsz a j-ciklussal. Ha mindenáron bele akarsz erőltetni egy j változót, azt elég beállítani a szó végére, és az i-ciklusban már csak csökkentgetni. És igen, mi a csudának ide-oda állítgatni a tukorkep értékét? Nem, mintha átlátnám, hogy pontosan mi történik, de ez jóra nem vezethet. Már eleve nem értem a kezdeti false-ra állítását sem. Nem egyszerűbb lett volna, ha eleve feltételezed, hogy tükörszóról van szó, és akkor vált false-ra, amikor a betűpár két tagja nem azonos -- akár már az első összehasonlításnál? És azzal aztán kész, abban a pillanatban vége is a vizsgálatnak. A ciklusnak csak akkor kéne végigfutnia, ha tényleg minden stimmel, és ki lehet írni boldogan a változatlanul maradt true értéket.

2018. febr. 5. 11:55
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:

Ez egy klasszikus eldöntés, amire programozási tétel is van:

1. Feltételezzük, hogy igaz az állítás.

2. Végigmegyünk az elemeken és ha találunk ellenpéldát, akkor az állítás hamis (rögtön kilépünk)

3. Ha végigértünk kilépés nélkül, akkor valóban igaz volt az állítás.

2018. febr. 5. 13:01
Hasznos számodra ez a válasz?
 6/6 tabaki ***** válasza:
Hm? Hogy állsz?
2018. febr. 5. 20:14
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!