PDA

Visualizza la versione completa : [C] problema con array


LadyTime
06-02-2014, 12:49
salve
stavo facendo questo programma con gli array ma non funziona, non riesco a capire qual' l'errore, mi potete aiutare?? Grazie in anticipo :ciauz:


// letta in imput una sequenza di interi positivi, memorizzarla in un array. Eliminare dall'array tutti i multipli di 3.


#include<stdlib.h>
#include<stdio.h>

#define n 4

int main(){
int a, b, i;
int A[n];
a=1;
i=0;
while (a<=n){
printf("inserisci il %d numero ", a);
scanf("%d", &A[i]);
a++;
i++;
}
i=0;
while (i<n){
printf("%d", A[i]);
i++;
}
i=0;
while (i<n){
if((i/3)*3==i){
i=0;
i++;
}
else{
i++;
}
}
i=0;
while (i<n){
printf("%d",i);
i++;
}
}

MItaly
06-02-2014, 13:08
if((i/3)*3==i){
Al di l del fatto che per vedere se un numero multiplo di un altro normalmente si usa l'operatore % (restituisce il resto della divisione intera tra due numeri, che zero nel caso in cui il primo sia multiplo del secondo), qui stai controllando se l'indice multiplo di tre, quando dovresti controllare il valore contenuto in quella posizione.

i=0;
Questo non ha senso - stai impostando l'indice con cui stai ciclando sull'array a zero, per cui non fai altro che ricominciare il ciclo dall'inizio.
Tra l'altro, in C non c' un "vero" modo per cancellare un elemento da un array, se va bene impostare l'elemento a zero allora puoi correggere facilmente, in alternativa dovrai "shiftare" indietro tutti gli elementi facendogli "ricoprire" le posizioni degli elementi cancellati, e segnarti la nuova "lunghezza logica" del vettore, per stampare solo gli elementi che ti interessano.

LadyTime
06-02-2014, 16:28
ok grazie mille!!! ho capito dove sbagliavo e ora funziona :love:

Loading