Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Discussione Chiusa
 
Strumenti
Old 12-02-2015, 15:51   #1
Squiddi
Bannato
 
Iscritto dal: May 2013
Messaggi: 18
[C]Non riesco a capire l'errore del mio programma

Ciao a tutti sto convertendo un programma da C++ a C, ecco qual'è il codice del programma in C++:
Codice:
#include <iostream>
#include <stdlib.h>
#include <string.h>

using namespace std;

const int numGruppi = 3;
const char *gruppoName[] = { "mila", "milioni" };
const char *irregular[] = { "mille", "unmilione" };

const char *cifre19[] = {
                        "zero",
                        "uno",
                        "due",
                        "tre",
                        "quattro",
                        "cinque",
                        "sei",
                        "sette",
                        "otto",
                        "nove",
                        "dieci",
                        "undici",
                        "dodici",
                        "tredici",
                        "quattordici",
                        "quindici",
                        "sedici",
                        "diciassette",
                        "diciotto",
                        "diciannove"
                        };

const char *decine[] = {
                        "venti",
                        "trenta",
                        "quaranta",
                        "cinquanta",
                        "sessanta",
                        "settanta",
                        "ottanta",
                        "novanta"
                       };



bool Cifra ( const char *ch );
int moveEfondo ( char array[], int size );
void ConvLetter ( const char cifreIn[], int size );

bool Cifra ( const char *str )
{

    for( ; *str != '\0'; str++)
    {
        if ((*str < 48) || (*str > 57))
            return false;
    }

    return true;


}

int moveEfondo ( char array[], int size )
{
    int lungChars = strlen ( array ),
        sposta = (size-1);

    if (lungChars < size)
    {
        for (int i=0; i < lungChars; i++)
        {
            array[sposta] = array[((lungChars-1)-i)];
            sposta--;
        }

        for (int j=0; j < (size-lungChars); j++)
            array[j] = 48;
    }

    if (size < 1)
        return -1;

    else return 0;
}


void ConvLetter ( const char cifreIn[], int size )
{


    void Centinaia ( int cifre[], int group );
    void Decine ( int cifre[], int group );
    void Gruppi ( int cifre[], int group );


    int gCifre [numGruppi] = { 0 };




    for (int gruppo=(numGruppi-1), copia=0; gruppo >= 0; gruppo--, copia += 3)
    {


        gCifre[gruppo] = ( (cifreIn[copia]-48)*100 +
                           (cifreIn[copia+1]-48)*10 +
                           (cifreIn[copia+2]-48) );
    }


    int zero = 0;


    for (int chkGroup=(numGruppi-1); chkGroup >= 0; chkGroup--)
    {

        if (gCifre[chkGroup] == 0)
            zero++;

        else
        {
            Centinaia ( gCifre, chkGroup );


            Decine ( gCifre, chkGroup );


            Gruppi ( gCifre, chkGroup );


        }

    }


    if (zero == numGruppi)
        cout << cifre19[0];


    cout << endl;

}

void Centinaia ( int cifre[], int group )
{


    if ((cifre[group]/100) > 1)
        cout << cifre19[ (cifre[group]/100) ];   // "due"..."nove"


    if ((cifre[group]/100) > 0)
    {
        if (((cifre[group]%100)/10) == 8 )
            cout << "cent";
        else cout << "cento";
    }

}



void Decine ( int cifre[], int group )
{


    if (((cifre[group]%100) < 20) && ((cifre[group]%100) > 0))
    {

        if ( (group == 0)
                || ((group > 0) && (cifre[group] != 1)) )
            cout << cifre19[ (cifre[group]%100) ];

    }
    else
    {

        if ( ((cifre[group]%100) > 20) &&
                (((cifre[group]%10) == 1) || ((cifre[group]%10) == 8)) )
        {
            char temp[9] = "";

            cout << strncpy ( temp,
                              decine[ (((cifre[group]%100)/10) - 2) ],
                              (strlen (decine[ (((cifre[group]%100)/10) - 2) ]) -1));
        }

        else if ((cifre[group]%100) >= 20)
            cout << decine[ (((cifre[group]%100)/10) - 2) ];

        if (((cifre[group]%100)%10) > 0)
            cout << cifre19 [ ((cifre[group]%100)%10) ];

    }

}




void Gruppi ( int cifre[], int group )
{
    if (group > 0)
    {
        if (cifre[group] > 1)
            cout << gruppoName[ group-1 ];

        else cout << irregular[ group-1 ];
    }

}





int main()
{

    char input[numGruppi*3];

    cout << "Digita un intero (max " << (numGruppi*3) << " cifre): ";
    cin >> input;

    if (Cifra ( input ) == true)
    {

        moveEfondo ( input, numGruppi*3 );

        cout << endl;


        ConvLetter ( input, numGruppi*3 );

    }

    else
    {
        cout << endl
             << "ERRORE: Input non valido!" << endl
             << "Riavviare il programma e digitare soltanto numeri."
             << endl << endl;
    }
    system("PAUSE");
    return 0;
}
E questo è quello che io ho fatto in C
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


const int numGruppi = 3;
const char *gruppoName[] = { "mila", "milioni" };
const char *irregular[] = { "mille", "unmilione" };

const char *cifre19[] = {
                        "zero",
                        "uno",
                        "due",
                        "tre",
                        "quattro",
                        "cinque",
                        "sei",
                        "sette",
                        "otto",
                        "nove",
                        "dieci",
                        "undici",
                        "dodici",
                        "tredici",
                        "quattordici",
                        "quindici",
                        "sedici",
                        "diciassette",
                        "diciotto",
                        "diciannove"
                        };

const char *decine[] = {
                        "venti",
                        "trenta",
                        "quaranta",
                        "cinquanta",
                        "sessanta",
                        "settanta",
                        "ottanta",
                        "novanta"
                       };



int Cifra ( const char *ch );
int moveEfondo ( char array[], int size );
void ConvLetter ( const char cifreIn[], int size );

int Cifra ( const char *str )
{

    for( ; *str != '\0'; str++)
    {
        if ((*str < 48) || (*str > 57))
            return 0;
    }

    return 1;


}

int moveEfondo ( char array[], int size )
{
    int i,j;
    int lungChars = strlen ( array ),
        sposta = (size-1);

    if (lungChars < size)
    {
        for (i=0; i < lungChars; i++)
        {
            array[sposta] = array[((lungChars-1)-i)];
            sposta--;
        }

        for (j=0; j < (size-lungChars); j++)
            array[j] = 48;
    }

    if (size < 1)
        return -1;

    else return 0;
}


void ConvLetter ( const char cifreIn[], int size )
{


    void Centinaia ( int cifre[], int group );
    void Decine ( int cifre[], int group );
    void Gruppi ( int cifre[], int group );


    int gCifre [numGruppi];



    int gruppo,copia;
    for (gruppo=(numGruppi-1), copia=0; gruppo >= 0; gruppo--, copia += 3)
    {


        gCifre[gruppo] = ( (cifreIn[copia]-48)*100 +
                           (cifreIn[copia+1]-48)*10 +
                           (cifreIn[copia+2]-48) );
    }


    int zero = 0;

    int chkGroup;
    for (chkGroup=(numGruppi-1); chkGroup >= 0; chkGroup--)
    {

        if (gCifre[chkGroup] == 0)
            zero++;

        else
        {
            Centinaia ( gCifre, chkGroup );


            Decine ( gCifre, chkGroup );


            Gruppi ( gCifre, chkGroup );


        }

    }


    if (zero == numGruppi)
        printf("%c",cifre19[0]);


   // cout << endl;

}

void Centinaia ( int cifre[], int group )
{


    if ((cifre[group]/100) > 1)
        printf("%c",cifre19[ (cifre[group]/100) ]);   // "due"..."nove"


    if ((cifre[group]/100) > 0)
    {
        if (((cifre[group]%100)/10) == 8 )
            printf("cent");
        else printf("cento");
    }

}



void Decine ( int cifre[], int group )
{


    if (((cifre[group]%100) < 20) && ((cifre[group]%100) > 0))
    {

        if ( (group == 0)
                || ((group > 0) && (cifre[group] != 1)) )
            printf("%c",cifre19[ (cifre[group]/100) ]);

    }
    else
    {

        if ( ((cifre[group]%100) > 20) &&
                (((cifre[group]%10) == 1) || ((cifre[group]%10) == 8)) )
        {
            char temp[9] = "";

            printf("%c",temp,decine[ (((cifre[group]%100)/10) - 2) ],(strlen (decine[ (((cifre[group]%100)/10) - 2) ]) -1));
            //cout << strncpy ( temp,
            //                  decine[ (((cifre[group]%100)/10) - 2) ],
            //                  (strlen (decine[ (((cifre[group]%100)/10) - 2) ]) -1));
        }

        else if ((cifre[group]%100) >= 20)
            printf("%c",decine[ (((cifre[group]%100)/10) - 2) ]);
            //cout << decine[ (((cifre[group]%100)/10) - 2) ];

        if (((cifre[group]%100)%10) > 0)
            printf("%c",cifre19 [ ((cifre[group]%100)%10) ]);
            //cout << cifre19 [ ((cifre[group]%100)%10) ];

    }

}




void Gruppi ( int cifre[], int group )
{
    if (group > 0)
    {
        if (cifre[group] > 1)
            printf("%c",gruppoName[ group-1 ]);

        else printf("%c",irregular[ group-1 ]);
    }
}





int main()
{

    char input[numGruppi*3];
    int a = numGruppi*3;
    printf("Digita un intero max %d cifre: ",a);

    scanf("%c",&input);
    if (Cifra ( input ) == 1)
    {

        moveEfondo ( input, numGruppi*3 );

        printf("\n");

        ConvLetter ( input, numGruppi*3 );

    }

    else
    {
        printf("ERRORE: Input non valido! \nRiavviare il programma e digitare soltanto numeri.");
    }
    system("PAUSE");
    return 0;
}
Solo che il codice in C parte ma non converte i numeri in lettere come dovrebbe, potreste dirmi dove ho sbagliato ? Grazie in anticipo
Squiddi è offline  
Old 12-02-2015, 17:57   #2
Squiddi
Bannato
 
Iscritto dal: May 2013
Messaggi: 18
UPP
Per favore, è importantissimo
Squiddi è offline  
Old 12-02-2015, 20:47   #3
FreeMan
Senior Member
 
L'Avatar di FreeMan
 
Iscritto dal: Jul 1999
Città: Black Mesa
Messaggi: 72457
Ti credi furbo vero?

http://www.hwupgrade.it/forum/showthread.php?t=2700321

Bannato

CLOSED!!

>bYeZ<
__________________
REGOLAMENTO & update1/update2 | IO C'ERO | Realme X3 SZ 12/256 - History | GTi is BACK

"Non sorridete.......gli spari sopra.....sono per VOI!"
FreeMan è offline  
 Discussione Chiusa


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Home Assistant su uno schermo touch econ...
L'IA entra nei negozi Unieuro con Google...
"What Holds Us", la nuova most...
La Formula 1 divide sui motori, ma il su...
Un computer a DNA esegue moltiplicazioni...
Ibride cinesi, l'Europa fissa il tetto a...
iPhone Duo potrebbe dar vita a una gamma...
Denza Z9S: la berlina elettrica con il r...
Valve abilita i driver e il supporto all...
Terafab, il progetto di Musk finisce in ...
Il meglio di Amazon in 42 articoli: sono...
ECOVACS WINBOT W2 PRO OMNI a 349€: ecco ...
Samsung Gallery Cloud Sync introduce il ...
Dyson V8 Cyclone a 249€: scopa elettrica...
Rifiuti elettronici, l'altra faccia dell...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:05.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v