Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Numeri al contrario
Forum - C/C++ - Numeri al contrario - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Giarados (Ex-Member)
Pro


Messaggi: 69
Iscritto: 25/07/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 21:49
Mercoledì, 08/12/2010
Testo quotato

Postato originariamente da Pitagora:

Prendere una striinga e stamparla al contrario vale? :rotfl:



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 :rofl:

PM
Avatar
Numa Pompilio (Ex-Member)
Pro


Messaggi: 66
Iscritto: 03/05/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 22:10
Mercoledì, 08/12/2010
Testo quotato

Postato originariamente da Giarados:

Testo quotato

Postato originariamente da Numa Pompilio:

Testo quotato

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 :rofl:



beh, in ogni linguaggio la posizione 0 è la prima da SX.....

PM
Avatar
Giarados (Ex-Member)
Pro


Messaggi: 69
Iscritto: 25/07/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 22:26
Mercoledì, 08/12/2010
Testo quotato

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

  1. char* numero = {'4', '5', '6', '7'};
  2. numero[0]=='4';
  3. numero[1]=='5';
  4. numero[2]=='6';
  5. numero[3]=='7';


Ultima modifica effettuata da Giarados il 08/12/2010 alle 22:27
PM
Avatar
VB.NET_Program_91 (Member)
Pro


Messaggi: 93
Iscritto: 10/02/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 12:36
Giovedì, 09/12/2010
Puoi fare semplicemente in questo modo:
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <string.h>
  3. int main(int argc, char **argv)
  4. {
  5.         int a[10],n,i;
  6.     printf("Il numero che vuoi inserire da quanti elementi è composto? (max 10 cifre): ");
  7.     scanf("%d",&n);
  8.    
  9.    for (i=1;i<=n;i++){
  10.             printf("Inserisci il %d numero: ",i);
  11.            scanf("%d",&a[i]);
  12.            }
  13.            printf("Il numero al contrario è:");
  14.            for (i=n;i>=1;i--){
  15.                    printf("%d",a[i]);
  16.                    }
  17.         return 0;
  18. }


Spero di esserti stato di aiuto :)

PM
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Up
0
Down
V
Segnala al moderatore
Postato alle 13:55
Giovedì, 09/12/2010
i vostri algoritmi però usano tutti un array...non è più comodo usare un intero?

Le due righe che ho buttato giù non fanno uso di alcun array! - Giarados - 09/12/10 14:35
PM
Avatar
VB.NET_Program_91 (Member)
Pro


Messaggi: 93
Iscritto: 10/02/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 10:39
Venerdì, 10/12/2010
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 :D ... cmq poi dipende dalle esigenze di chi chiede :)  

PM
Avatar
jegantms (Normal User)
Newbie


Messaggi: 1
Iscritto: 10/12/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 12:27
Venerdì, 10/12/2010
Salve a tutti... io ho risolto così!


Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.   int num,contr=0;
  7.   printf("Inserisci un intero:\n");
  8.   scanf("%d",&num);
  9.   do
  10.   {
  11.     contr=contr*10+num%10;
  12.   }
  13.   while(num/=10);
  14.   printf("Il numero invertito è:\n%d",contr);
  15.   return 0;
  16. }


Ultima modifica effettuata da jegantms il 10/12/2010 alle 12:31
PM
Pagine: [ 1 2 ] Precedente | Prossimo