Problema Vettore Struct in C

di il
1 risposte

Problema Vettore Struct in C

Buongiorno a tutti
ho un compito per le vacanze sui triangoli usando le struct e i vettori, di cui non metto la consegna completa perchè non serve a risolvere il mio problema. Prima di spiegare il mio problema vi pongo un esempio, altrimenti risulterebbe incomprensibile il mio problema. Quando noi dobbiamo inserire 10 valori in input e salvarli in un vettore non scriviamo 10 printf e scanf dove nella prima mettiamo vet[0] nella seconda vet[1] ecc ma creiamo un ciclo che va da 0 a 9 e ripete le printf e scanf 10 volte modificando ogni volta la posizione del vettore, tramite l'indice, così da rendere piu leggibile e compatto il codice. Ora, io devo inserire 3 valori in input per ogni triangolo, suppondendo che ho solo 1 triangolo, che definisco come costante. Sotto vi metto x ora il mio codice (senza librerie):

#define LUNG 1

struct triangolo{
float l1,l2,l3;
};

int main(){
struct triangolo lato[LUNG];
//in teoria così ho definito un vettore con struttura triangolo, quindi ogni parte del vettore sarà suddivisa in 3 parti (l1,l2,l3)
int n_lati;
n_lati=3;
//n_lati contiene il numero di lati del triangolo definiti nella struct (l1,l2,l3)
inserimento_valori(lato,LUNG,n_lati);
}

void inserimento_valori(struct triangolo lato[],int l,int n_lati){
int i;
i=0;
printf("\nInserisci il valore del 1 lato: ");
scanf("%f",lato.l1);
printf("\nInserisci il valore del 2 lato: ");
scanf("%f",lato.l2);
printf("\nInserisci il valore del 3 lato: ");
scanf("%f",lato.l3);
}

Ora, quello che volgio fare io è ripetere per 3 volte, il numero di lati da inserire, le printf e le scanf scrivendole solo una volta. Togliere le printf non è difficle, basta che quando stampo 1 2 o 3 anziche scriverlo metto un %d e stampo la variabile che uso per il ciclo sommata di 1, così stampa 1 2 e poi 3, il problema è la scanf, c'è un metodo con cui dopo aver inserito il valore in lato[0].l1 posso modificare quell'l1 in l2 e dopo in l3, come facciamo nei vettori con gli indici?

void inserimento_valori(struct triangolo lato[],int l,int n_lati){
int i,k;
i=0;
for(k=0;k<n_lati;k++)
{
printf("\nInserisci il valore del %d lato: ",k+1);
scanf("%f",lato.l1);
//qua vorrei modificare quell'l1 dopo l'inserimento, in l2, e poi in l3
}
}

durante la stesura del codice nel sito ho indentato tutto molto bene in modo da renderlo più comprensibile ma nella pubblicazione mi toglie tutti gli spazi usati per l'indentatura. scusate ma non so come metterlo apposto spero capiate qualcosa lo stesso

grazie a tutti spero si possa fare qualcosa e che riusciate ad aiutarmi vi ringrazio in anticipo perchè sto impazzendo

1 Risposte

  • Re: Problema Vettore Struct in C

    Ciao,
    per prima cosa per inserire il codice in maniera corretta sul forum è sufficiente utilizzare i tag CODE.

    Passando al tuo problema, nella struct dichiari i lati come
    float l1, l2, l3;
    Basterebbe dichiararli come
    float lati[3];
    e potresti utilizzare il metodo di cui parlavi prima, cioè un ciclo for che va a riempire un array.
Devi accedere o registrarti per scrivere nel forum
1 risposte