Giarados (Ex-Member)
Pro
Messaggi: 69
Iscritto: 25/07/2010
|
Postato originariamente da Pitagora:
Prendere una striinga e stamparla al contrario vale? |
L'algoritmo che avevo originariamente pensato era esattamente questo però per alcune ragioni ho deciso di deviare:
1- Non sai quanto è lunga la stringa in input
2- E' poco elegante usare un array statico di char
3- Anche usando un array dinamico rimane poco elegante chiedere all'utente la lunghezza in cifre dell'input
4- Ho approfittato dell'occasione per scrivere 2 funzioni che mi potrebbero tornare utili in futuro |
|
Numa Pompilio (Ex-Member)
Pro
Messaggi: 66
Iscritto: 03/05/2010
|
Postato originariamente da Giarados:
Postato originariamente da Numa Pompilio:
Postato originariamente da Giarados:
Basta stampare per prima la cifra 0, poi la cifra 1, poi la cifra 2, sino alla cifra n-1.
|
In questo modo le stampa in ordine.........o sbaglio?
Dovrebbe partire da n-1 per finire a 0 |
Dipende se le vedi da DX verso SX o al contrario |
beh, in ogni linguaggio la posizione 0 è la prima da SX..... |
|
Giarados (Ex-Member)
Pro
Messaggi: 69
Iscritto: 25/07/2010
|
beh, in ogni linguaggio la posizione 0 è la prima da SX..... |
Se prendi in input un valore int:
4567
Secondo me è più conveniente vederlo come
4*10^3 + 5*10^2 + 6*10^1 + 7*10^0
Anche perchè non essendo una stringa non abbiamo modo di manipolare singolarmente le cifre tramite un indice. Se fosse stata una stringa, ergo un'array, allora naturalmente:
Codice sorgente - presumibilmente Plain Text |
char* numero = {'4', '5', '6', '7'};
numero[0]=='4';
numero[1]=='5';
numero[2]=='6';
numero[3]=='7';
|
Ultima modifica effettuata da Giarados il 08/12/2010 alle 22:27 |
|
VB.NET_Program_91 (Member)
Pro
Messaggi: 93
Iscritto: 10/02/2008
|
Puoi fare semplicemente in questo modo:
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <string.h> int main(int argc, char **argv) { int a[10],n,i; printf("Il numero che vuoi inserire da quanti elementi è composto? (max 10 cifre): "); scanf("%d",&n); for (i=1;i<=n;i++){ printf("Inserisci il %d numero: ",i); scanf("%d",&a[i]); } printf("Il numero al contrario è:"); for (i=n;i>=1;i--){ printf("%d",a[i]); } return 0; }
|
Spero di esserti stato di aiuto
|
|
Alex (Ex-Member)
Expert
Messaggi: 441
Iscritto: 15/08/2005
|
i vostri algoritmi però usano tutti un array...non è più comodo usare un intero?
|
|
VB.NET_Program_91 (Member)
Pro
Messaggi: 93
Iscritto: 10/02/2008
|
Guarda io penso che usando un array l' algoritmo risulti meno statico, + funzionale e soprattutto il programmatore non si complica ulteriormente la vita oltre al fatto di non dover dichiarare funzioni temp o contatore ... cmq poi dipende dalle esigenze di chi chiede
|
|
jegantms (Normal User)
Newbie
Messaggi: 1
Iscritto: 10/12/2010
|
Salve a tutti... io ho risolto così!
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <stdlib.h> int main() { int num,contr=0; printf("Inserisci un intero:\n"); scanf("%d",&num); do { contr=contr*10+num%10; } while(num/=10); printf("Il numero invertito è:\n%d",contr); return 0; }
|
Ultima modifica effettuata da jegantms il 10/12/2010 alle 12:31 |
|