|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2005
Città: Cavallino (LE)
Messaggi: 335
|
[C++]Parere sul listato
Eccomi di nuovo per un vostro parere
![]() Codice:
#include<iostream> using std::cout; using std::cin; using std::endl; int main() { int a = 0; int n1 = 0; int n2 = 0; int n3 = 0; int n4 = 0; int n5 = 0; cout << "Inserire un numero a 5 cifre (-1 per uscire): "; cin >> a; while (a != -1) { if (a > 99999) { cout << "\nIL NUMERO SUPERA LE 5 CIFRE\n"<< endl; } else { n1 = ( a / 10000); n2 = ( a % 10000) / 1000; n3 = ( a % 1000) / 100; n4 = ( a % 100) / 10; n5 = ( a % 10); } if (n1 == n5) { if (n2 == n4) cout << "\nIl numero e' palindromo\n" << endl; else cout << "\nIl numero non e' palindromo\n" << endl; } else cout << "\nIl numero non e' palindromo\n" << endl; cout << "Inserire un numero a 5 cifre (-1 per uscire): "; cin >> a; } system("PAUSE"); return 0; } Non mi dispiacerebbe nemmeno un giudizio sul listato... ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2005
Città: San Marino
Messaggi: 309
|
Eviterei anche di ripetere le stesse istruzioni più volte
![]() Ho anche sistemato la parte per quanto riguarda il numero maggiore di 99999, nel tuo caso il programma ti stampava che il numero era sempre palindromo se maggiore di 99999, questo perché n1 n2 n3 n4 n5 erano inizializzati tutti a 0 e con numero maggiore di 5 cifre il controllo di n1 n2 n3 n4 n5 veniva svolto uguale ![]() Codice PHP:
__________________
![]() ![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2005
Città: Cavallino (LE)
Messaggi: 335
|
Possibilmente senza operatori logici
![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2005
Città: Cavallino (LE)
Messaggi: 335
|
Sto studiando il libro della deitel c++ fondamenti di programmazione 2 ed.
Perciò devo seguirne " le lezioni " .Comunque grazie a tutti ![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Non era meglio una stringa controllata tramite for?
Oltre ad essere più elastico sarebbe anche più facile da fare. Oltre che terribilmente più corto. Codice:
while( true ) { cout << "inserisci un numero/parola qualsiasi - exit per uscire." << endl; std::string n; cin >> n; if( n == "exit" ) break; bool palindromo = true; size_t length = n.length(); for(unsigned int i = 0; i < (int)length/2; ++i) { if( n[i] != n[ length - i - 1 ] ) { palindromo = false; break; } } cout << "La stringa immessa" << (palindromo ? " non" : " ") << " e' palindroma!" << endl; } ![]() OT E' tanto brutto while(true)? Lo uso spesso ma non l'ho visto da nessun'altra parte. ![]() Ultima modifica di Tommo : 12-10-2008 alle 12:28. |
![]() |
![]() |
![]() |
#6 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
io francamente "while(true)" in C non l'ho mai visto e mi sa tanto che mai lo vedrò
![]() |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Bhe, io lo uso perchè trovo comodo non dover assegnare una varabile solo al while; per esempio, se avessi dovuto modificare n, sarei dovuto stare attento a ricreare alla fine un valore sensato per il prossimo controllo.
Invece così esco quando mi aggrada... però ammetto che così è difficile capire qual'è la condizione di uscita... ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:54.