Funzione malloc e array

di il
1 risposte

Funzione malloc e array

QUALCUNO SA SVOLGERE QUESTO ESERCIZIO:
Si scriva un programma in linguaggio C che sia in grado di dare il risultato del seguente criterio di divisibilità per 7:
Qualsiasi numero è divisibile per 7 se la differenza di quel numero escludendo la cifra delle unità e il doppio della cifra delle unità è 0, 7 o un multiplo di 7 (in qualche caso, come 14 o 119, il risultato potrebbe essere negativo). La procedura può essere reiterata.
Esempio: 455 è divisibile per 7 perché 45 - 5×2 = 35 che è divisibile per 7.
Esempio: 68089; calcoliamo 6808 - 9×2 = 6790; non sapendo se 6790 sia divisibile per 7 basta ripetere la procedura. 679 - 0×2 = 679. Anche qui si ripete la procedura: 67 - 9×2 = 49, cioè 7×7. Pertanto 68089 è multiplo di 7.
Il programma deve chiedere all’utente di inserire un numero intero e deve mostrare a video un messaggio che indica se il numero inserito è divisibile per 7 o no poi deve chiedere se si vuole inserire un altro numero e nel caso di risposta affermativa deve iterare il procedimento. Il programma deve inoltre produrre la prova che il risultato sia corretto dividendo il numero dato per 7 e verificando che il resto sia 0 e deve poi produrre, se la prova è andata a buon fine, un messaggio di conferma.
#include <stdio.h>
#include <stdlib.h>

int main(){
    int dim, *vett;
    int i,valore,y;
    printf(" quanti numeri  vuoi inserire\n");
    scanf("%d",&dim);
    vett=malloc (dim*sizeof(int));
    
    
    for (i=0; i<dim; i++) {
        printf("inserisci il valore di posizione %d(uno alla volta) \n",i);
        scanf("%d",&vett[i]);
       }
    for (y=0; y<dim-1; y++) {
        printf("%d",vett[y]);
        }
    printf("due%d\n",vett[dim-1]);                       MI SONO FERMATO PERCHE NN RIESCO A CAPIRE IL 
    valore=vett[y]-(vett[dim]*2);                        NON FUNZIONAMENTO IN QUESTA PARTE..SE 
    printf("il primo valore è %d",valore);             QUALCUNO SA SPIEGARMI IL DA FARMI E PERCHE 
/code]]                                                            NN FUNZIONA QUESTO

1 Risposte

  • Re: Funzione malloc e array

    Qualsiasi numero è divisibile per 7 se la differenza di quel numero escludendo la cifra delle unità e il doppio della cifra delle unità è 0, 7 o un multiplo di 7 (in qualche caso, come 14 o 119, il risultato potrebbe essere negativo). La procedura può essere reiterata.
    while(num>7){
            unita = num%10;   //cifra delle unita'
            num = (num/10);   //numero "senza" unita'
            num = num-(2*unita);    //sottrazione di 2unita' da num
    
            if(num<0)    //per evitare cicli infiniti di continue sottrazioni
                num=(-num);
    
            printf("\n unità = %d", unita);    //controllo visivo passaggi
            printf("\n num = %d\n", num);
        }

    In base al valore di num capisci se il numero di partenza era divisibile o no.
    Sta' a te capire come...


    PS: num e' il numero di cui vuoi verificare la divisibilita'
Devi accedere o registrarti per scrivere nel forum
1 risposte