Per favore potete aiutarmi a capire dove ho sbagliato in questo codice C?

di Anonimizzato24541 il
4 risposte
Ho realizzato un codice C che ha diverse richieste tra cui l'ultima che dovrebbe far traferire dal vettore 1 al vettore 3 tutti i numeri del vettore 1 che, divisi nelle loro singole cifre e successivamente sommate diano risultati pari, quindi il vettore 3 deve contenere soltanto questi numeri.
Il problema è che invece di trasferire nel vettore 3 solo i numeri la cui somma delle cifre da risultati pari, mi trasferisce anche numeri la cui somma delle cifre da risultati dispari.
Io ho provato a ragionarci su, ma non riesco a capire dove ho sbagliato, se per favore mi potete aiutare anche solo con un piccolo input mi fareste un enorme favore.
Ringrazio in anticipo per chi mi aiuterà.
void SpostaCifre (int vett1 [], int vett3 [], int dim, int * cn)
{
    int i, num, j = 0, quo, res, s = 0;
    for (i = 0; i < dim; i++)
    { 
        num = vett1 [i];
        while (num >= 10)
        {
            quo = num / 10;
            res = quo * 10;
            s = s + (num - res);
            num = quo;
        }
        if (s % 2 == 0)
        {
            vett3 [j] = vett1 [i];
            j = j + 1;
            *cn = *cn + 1;
        }
    }
}

4 Risposte

  • S=0

    deve stare all'interno del ciclo. Devi azzerarla prima di ogni somma.

    P.S. il titolo dei thread non ha senso...
  • La somma la devo azzerare nel ciclo for o nel ciclo while?
  • Scusa, se fai questa domanda non hai capito cosa fai nei due cicli.

    Se nel ciclo while stai calcolando la somma, ha senso azzerarla lì?
  • Hai ragione, non ho capito molto bene cosa si fa nei due cicli, comunque ti ringrazio molto per l'aiuto che mi hai dato
Devi accedere o registrarti per scrivere nel forum
4 risposte