Leggere un numero da destra verso sinistra in c

di il
8 risposte

Leggere un numero da destra verso sinistra in c

Salve ragazzi, devo fare un problema: dato un numero, il programma (in c) lo deve leggere all'inverso (esempio: 65453 diventa 35456).. non so davvero dove cominciare e cerco aiuto.. ringrazio in anticipo!

8 Risposte

  • Re: Leggere un numero da destra verso sinistra in c

    Vedi il numero come una stringa poi prendi l'ultimo carattere e lo fai diventare il primo di una stringa destinazione, poi prendi il carattere di posizione penultimo e lo aggiungi alla nuova stringa e così via fino ad aver girato tutti i caratteri
  • Re: Leggere un numero da destra verso sinistra in c

    Senza usare stringhe ... più semplicemente ... prendi il resto della divisione per 10 e scrivilo, poi dividi per 10 e ripeti ...
  • Re: Leggere un numero da destra verso sinistra in c

    So che devo usare un ciclo ma come faccio a prendere il resto di una divisione e assegnarla a una variabile se non so neanche quanti variabili usare? Scusate ma non so davvero come farlo.
  • Re: Leggere un numero da destra verso sinistra in c

    Scorpion1010 ha scritto:


    So che devo usare un ciclo ma come faccio a prendere il resto di una divisione e assegnarla a una variabile se non so neanche quanti variabili usare? Scusate ma non so davvero come farlo.
    Il resto della divisione lo salvi in una variabile usando l'operatore '%'. Il ciclo lo fermi, ad esempio, quando la parte intera del risultato della divisione diventa zero. E' molto semplice se ci pensi. Puoi usare anche la soluzione con le stringhe, ma quella che ti ha suggerito oregon, a mio avviso, è più "bella".
  • Re: Leggere un numero da destra verso sinistra in c

    Il resto della divisione per 10 si fa così

    resto = numero % 10;
  • Re: Leggere un numero da destra verso sinistra in c

    Scorpion1010 ha scritto:


    Salve ragazzi, devo fare un problema: dato un numero, il programma (in c) lo deve leggere all'inverso (esempio: 65453 diventa 35456).. non so davvero dove cominciare e cerco aiuto.. ringrazio in anticipo!
    Bhe forse non ho capito bene! ma se io mi trovo davanti una richiesta del genere cioè leggere all'inverso un vettore scriverei l'algoritmo nel seguente modo!
    Tenendo conto anche del tempo d'esecuzione dell algoritmo! (in questo caso il tempo d'esecuzione e dell ordine di n)

    #include <stdio.h>
    #include <stdlib.h>
    
    #define N 4
    
    void inserisciVettore(int arrayGenerico[]);
    void visualizzaVettore(int arrayGenerico[]);
    void vettoreInverso(int arrayGenerico[]);
    
    int main(){
    	int vettore[N];
    	inserisciVettore(vettore);
    	visualizzaVettore(vettore);
    	vettoreInverso(vettore);
    	return 0;
    }
    
    
    void inserisciVettore(int arrayGenerico[]){
    	printf("========| Inserisci il vettore! |========\n");
    	int i;
    	for(i = 0; i < N; i++){
    		scanf("%d", &arrayGenerico[i]);
    	}
    	return;
    }
    
    void visualizzaVettore(int arrayGenerico[]){
    	printf("Vettore : [ ");
    	int i;
    	for(i = 0; i < N; i++){
    		//printf("******* %d\n", arrayGenerico[i]);
    		if(i > N - 2){
    			printf("%d", arrayGenerico[i]);
    			break;
    		}
    		printf("%d, ", arrayGenerico[i]);
    	}
    	printf(" ] \n");
    	return;
    }
    
    void vettoreInverso(int arrayGenerico[]){
    	printf("Vettore : [ ");
    	int i;
    	for(i = N - 1; i >= 0; i--){
    		//printf("******* %d\n", arrayGenerico[i]);
    		if(i < 1){
    			//printf("*** if ***\n");
    			printf("%d", arrayGenerico[i]);
    			break;
    		}
    		printf("%d, ", arrayGenerico[i]);
    	}
    	printf(" ] \n");
    	return;
    }
    Forse Avrò risposto in un modo non idoneo alla domanda! Mi scuso in anticipo
  • Re: Leggere un numero da destra verso sinistra in c

    @cazyjoker96 in realtà non richiedeva di invertire un vettore, ma leggere un numero in maniera inversa.

    Tra l'altro, a proposito di complessità computazionale, anche la soluzione con i resti ha complessità lineare. Quindi proprio non vedo il motivo, o il vantaggio, di passare per i vettori.
  • Re: Leggere un numero da destra verso sinistra in c

    CarDeFusco ha scritto:


    @cazyjoker96 in realtà non richiedeva di invertire un vettore, ma leggere un numero in maniera inversa.

    Tra l'altro, a proposito di complessità computazionale, anche la soluzione con i resti ha complessità lineare. Quindi proprio non vedo il motivo, o il vantaggio, di passare per i vettori.
    Mi scuso! non volevo dire che la mia soluzione è quella corretta perchè non ho nè i mezzi necessaria e nè l'esperienza necessaria!
    Ho risposto su come lo avrei fatto io!
    l'ho fatto sopratutto perchè volevo imparare qualcosa! mi scuso se è sembrato che proponevo la soluzione più corretta e dal costo computazionale più basso! Sorry
Devi accedere o registrarti per scrivere nel forum
8 risposte