Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Invertire un numero con C

    Un esercizio dice: scrivete una funzione che prenda un valore intero e lo restituisca dopo aver invertito le sue cifre. Per esempio, dato il numero 7631, la funzione dovrà restituire 1367.

    Io saprei fare questo esercizio nel caso in cui il numero di cifre del numero fosse specificato, ma in questo caso non lo è. Ho scritto una bozza che per ora dovrebbe solo scrivere tutte le cifre del numero staccate di uno spazio, ma mi crea il ciclo infinito e non ho capito il motivo:

    #include<stdio.h>
    #include<stdlib.h>

    void invertire(int x);

    int main()
    {
    int valore, a, a1, i;

    printf("Inserire un valore intero di 4 cifre: ");
    scanf("%d", &valore);

    invertire(valore);

    system("pause");
    }

    void invertire(int x)
    {
    int i;

    for(i=x;i>=1;i=i%10){
    printf("%d ", i);
    }
    printf("\n");
    }

  2. #2
    Continuando ad applicare al numero l'operatore modulo con lo stesso valore non scenderai mai sotto l'uno, e per questo ottieni il ciclo infinito.
    Fai prima a continuare a dividere per 10 e a considerare ad ogni giro l'ultima cifra tramite l'operatore modulo.
    codice:
    #include <stdio.h>
    
    int main(void)
    {
        int numero;
        printf("%s","Inserire il numero: ");
        scanf("%d",&numero);
        while(numero)
        {
            printf("%d",numero%10);
            numero/=10;   
        }
        putchar('\n');
        return 0;
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.