Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

funzione conversione numero in lettere

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[21] Re: funzione conversione numero in lettere

Messaggioda Foto UtentePietroBaima » 20 feb 2023, 12:58

chatgpt.jpg

e il programma di output è questo:
Codice: Seleziona tutto
#include <stdio.h>

// Funzione per convertire un numero in lettere
void converti_in_lettere(long int numero) {
    // Definisci gli array di stringhe per i numeri e le unità
    char *numeri[] = {"zero", "uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto", "nove", "dieci", "undici", "dodici", "tredici", "quattordici", "quindici", "sedici", "diciassette", "diciotto", "diciannove"};
    char *decine[] = {"venti", "trenta", "quaranta", "cinquanta", "sessanta", "settanta", "ottanta", "novanta"};
    char *unita[] = {"", "mila", "milioni", "miliardi", "bilioni"};

    // Controlla se il numero è uguale a zero
    if (numero == 0) {
        printf("%s\n", numeri[0]);
        return;
    }

    // Definisci un array di lunghezza massima 5 per contenere ogni gruppo di tre cifre
    int gruppi[5] = {0};

    // Divide il numero in gruppi di tre cifre e salvali nell'array
    int i = 0;
    while (numero > 0) {
        gruppi[i] = numero % 1000;
        numero /= 1000;
        i++;
    }

    // Loop attraverso ogni gruppo di tre cifre e convertilo in lettere
    int j;
    for (j = 4; j >= 0; j--) {
        if (gruppi[j] == 0) {
            continue;
        }
        int c = gruppi[j] / 100;
        int d = (gruppi[j] % 100) / 10;
        int u = gruppi[j] % 10;
        if (c > 0) {
            printf("%scento ", numeri[c]);
        }
        if (d == 1) {
            printf("%s ", numeri[10 + u]);
        } else if (d > 1) {
            printf("%s", decine[d-2]);
            if (u > 0) {
                printf("%s", numeri[u]);
            }
        } else if (u > 0) {
            printf("%s", numeri[u]);
        }
        if (j > 0) {
            printf("%s ", unita[j]);
        }
    }
    printf("\n");
}

// Funzione principale
int main() {
    long int numero;
    printf("Inserisci un numero intero positivo: ");
    scanf("%ld", &numero);
    printf("Il numero %ld in lettere è: ", numero);
    converti_in_lettere(numero);
    return 0;
}
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[22] Re: funzione conversione numero in lettere

Messaggioda Foto Utentedadduni » 20 feb 2023, 15:22

Ci ho pensato pure io a chiederlo a ChatGPT. La sua soluzione ci si avvicina ma e' sbagliata purtroppo per delle imperfezioni della lingua :lol:
Per esempio 1121 lo scrive come "UNOmila UNOcento VENTIuno"
Se si prende il suo codice e si aggiunge qualche eccezione per gli 1mila e qualche undici qui e li' puo' funzionare: close enough!
Avatar utente
Foto Utentedadduni
2.073 2 7 12
Expert EY
Expert EY
 
Messaggi: 1370
Iscritto il: 23 mag 2014, 16:26

Precedente

Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 19 ospiti