Problema vettore ...

di il
2 risposte

Problema vettore ...

Devo scvivere un metodo numeriPerfetti che riceve in ingresso un intero x e un vettore v1, e restituisce un vettore v2, che
conterrà tutti i divisori di x che sono multipli di almeno un numero in v1.
Ad esempio, se x = 12 e v1= [9 , 8 , 2 ] , allora il vettore restituito è v2 = [2, 4]. Infatti, i divisori di 12 sono 1, 2, 3, 4, 6,
12; tra questi, 2 e 4 sono multipli di 2, mentre 1, 3,4, 6 non sono multipli di nessun elemento in v1.
Come posso procedere?
In particolare come posso assegnare la dimensione al vettore che la funzione mid eve restituire alla fine?
Grazie in anticipo per le risposte!!

2 Risposte

  • Re: Problema vettore ...

    Allora Credo che prima di tutto dovresti creare un nuovo vettore nel quale vai a mettere tutti i divisori del tuo numero (seguendo il tuo esempio x=12) per fare ciò occorre un ciclo simile:
    
    k=0;
    for(i=x;i>0;i--){
    
    if(x%i==0){
    VettoreMultipli[k]=i;
    k++;
    }
    }
    
    una volta fatto questo otteremo tutti i divisori di 12 ossia 12 6 4 3 2 1 in un vettore
    adesso non resta che confrontarlo con il vettore assegnato in precedenza [9,8,2] in questo modo
    chiamo il vettore dei divisori V2 con lunghezza lung2 e l'altro V1 lung1 e creo un terzo vettore V3
    
    j=0;
    for(i=0;i<lung2;i++){
    for(k=0;k<lung1;k++){
    if(V2[i]%V1[k]==0){
    V3[j]=V2[i];
    j++
    }
    }
    }
    
    suppongo che così debba funzionare , attenzione che però credo il programma stampi i multipli di un dato numero più volte ad esempio se nel vettore inserito ci sono 4 e 8 e x=16 il vettore finale sarà costituito da [4,8,16,8,16]
    io non l'ho provato fammi sapere se ti trovi e se non funziona!
  • Re: Problema vettore ...

    Ah dimenticavo per poi stampare il terzo vettore inserisci una variabile contatore che incrementi se V2%V1[k]==0, inoltre ti ho scritto il codice in c++ non so se ti serviva in C (che non conosco), in ogni caso credo sia abbastanza simile. Ciao!
Devi accedere o registrarti per scrivere nel forum
2 risposte