Dubbio Struct[C]

di il
15 risposte

Dubbio Struct[C]

Se ho una struct con due vettori di int,come faccio a stamparli ?

cosi mi stampa strani valori,il dubbio è:per stampare un array di struct che a sua volta contiene due vettori di int,come devo fare?

typedef struct studente{
int indiceriga[12];
int indicecolonna[12];		
}studente ;
void stampa(struct studente v[],int n,int size);
int main(){
studente v[1];

printf("Stampa il vettore di struct:\n");

stampa(v,n,size);


}

void stampa(struct studente v[],int n,int size){
int i;
int k=0;
printf("\n");
for(i=0;i<n;i++){	
for(k=0;k<size;k++)
printf("Indiceriga:%d\n",v[i].indiceriga[k]);	
printf("Indicecolonna:%d\n",v[i].indicecolonna[k]);	

}
}





15 Risposte

  • Re: Dubbio Struct[C]

    Che senso ha un vettore di un elemento v[1] ?

    Quando chiami la funzione stampa, n e size quanto valgono?

    Nella for in stampa, le due for sono all'interno del ciclo ?
  • Re: Dubbio Struct[C]

    oregon ha scritto:


    Che senso ha un vettore di un elemento v[1] ?

    Quando chiami la funzione stampa, n e size quanto valgono?

    Nella for in stampa, le due for sono all'interno del ciclo ?
    size vale 12,ehm non so quanti elementi mettere al vettore,e l'ultima penso di si
  • Re: Dubbio Struct[C]

    N deve essere 1 altrimenti perché avresti scritto v[1] ?

    Comunque, cosa non va, passando 1 e 12 e mettendo le due printf dentro il ciclo for (attualmente non ci stanno ...) ?
  • Re: Dubbio Struct[C]

    oregon ha scritto:


    N deve essere 1 altrimenti perché avresti scritto v[1] ?

    Comunque, cosa non va, passando 1 e 12 e mettendo le due printf dentro il ciclo for (attualmente non ci stanno ...) ?
    stampa numeri a caso,ma non è che perchè la dimensione della struct non è 1 ?
  • Re: Dubbio Struct[C]

    No ... i valori casuali sono corretti. Cosa ti aspettavi? Se non determini il loro valore iniziale da programma, il valore è casuale.
  • Re: Dubbio Struct[C]

    oregon ha scritto:


    No ... i valori casuali sono corretti. Cosa ti aspettavi? Se non determini il loro valore iniziale da programma, il valore è casuale.
    no,quei vettori di int li ho assegnati nella funzione (qui non li ho messi perchè non lo ritenevo opportuno)
  • Re: Dubbio Struct[C]

    kyrgios92 ha scritto:


    oregon ha scritto:


    No ... i valori casuali sono corretti. Cosa ti aspettavi? Se non determini il loro valore iniziale da programma, il valore è casuale.
    no,quei vettori di int li ho assegnati nella funzione (qui non li ho messi perchè non lo ritenevo opportuno)
    poi ho provato a stampare una variabile di tipo studente e i valori li stampa correttamente...con l'array di struct non so perchè non vada
  • Re: Dubbio Struct[C]

    kyrgios92 ha scritto:


    no,quei vettori di int li ho assegnati nella funzione (qui non li ho messi perchè non lo ritenevo opportuno)
    poi ho provato a stampare una variabile di tipo studente e i valori li stampa correttamente...con l'array di struct non so perchè non vada
    Posta il codice COMPLETO con tutto quello che fai e quello che non va.

    Se mostri del codice incompleto e che non è quello che ti dà problemi, si perde tempo ...
  • Re: Dubbio Struct[C]

    oregon ha scritto:


    kyrgios92 ha scritto:


    no,quei vettori di int li ho assegnati nella funzione (qui non li ho messi perchè non lo ritenevo opportuno)
    poi ho provato a stampare una variabile di tipo studente e i valori li stampa correttamente...con l'array di struct non so perchè non vada
    Posta il codice COMPLETO con tutto quello che fai e quello che non va.

    Se mostri del codice incompleto e che non è quello che ti dà problemi, si perde tempo ...
    Non so perchè ma forse la dimensione dell'array di struct non deve essere 1,non mi spiego altrimenti..
    
    #include <stdio.h>
    #define DIMR 50
    #define DIMC 30
    #include <string.h>
    #include <stdlib.h>
    
    typedef struct studente{
    int indiceriga[12];
    int indicecolonna[12];		
    }studente ;
    
    
    int main(){
    studente s;//variabile di tipo studente	
    studente v[1];
    int n=1;
    int r=4;
    int c=3;
    int vettriga[DIMR];
    int vettcolonna[DIMR];
    int vettempr[DIMR];
    int righefinali[DIMR];
    int colonnefinali[DIMR];
    int vettempc[DIMR];
    int size=r*c;
    char mat[DIMR][DIMC];
    int i ;
    int k;
    int j;
    int mat2[r][c];
    for(i=0;i<r;i++)
    {
    for(j=0;j<c;j++)	
    mat2[i][j]=0;	
    }
    printf("Altra matrice \n");
    //matrice di tutti 0
    for(i=0;i<r;i++){
    for(j=0;j<c;j++)	
    printf("%3d",mat2[i][j]);
    printf("\n");	
    }
    
    //per i numeri che mi servono
    for(i=0;i<r;i++)
    vettempr[i]=i;
    
    printf("Numeri del vettore righe:\n");
    for(i=0;i<r;i++)
    printf("%d",vettempr[i]);
    
    for(i=0;i<c;i++)
    vettempc[i]=i;
    printf("\n");
    
    
    printf("Numeri del vettore colonne:\n");//012
    for(i=0;i<c;i++)
    printf("%d",vettempc[i]);
    printf("\n");
    
    //vedi bene
    for(i=0;i<r;i++){
    for(j=0;j<c;j++)
    mat2[i][j]=vettempr[i];
    
    }
    printf("Matrice modificata\n");
    for(i=0;i<r;i++){
    for(j=0;j<c;j++)	
    printf("%3d",mat2[i][j]);
    printf("\n");	
    }
    
    //riempimento vettore righe
    k=0;
    while(k<r*c){
    for(i=0;i<r;i++)	
    for(j=0;j<c;j++){   //ATTENTO ALLA PARENTESI!
    righefinali[k]=mat2[i][j];
    k++;
    }
    }
    
    //mmh
    printf("Vettore righe finali \n");
    for(k=0;k<r*c;k++)
    printf("%d",righefinali[k]);
    
    //modifica ulteriore
    for(i=0;i<r;i++){
    for(j=0;j<c;j++)
    mat2[i][j]=vettempc[j];
    
    }
    printf("\n");
    printf("Matrice modificata ulteriormente\n");
    for(i=0;i<r;i++){
    for(j=0;j<c;j++)	
    printf("%3d",mat2[i][j]);
    printf("\n");	
    }
    
    //riempimento vettore colonne
    k=0;
    while(k<r*c){
    for(i=0;i<r;i++)	
    for(j=0;j<c;j++){   //ATTENTO ALLA PARENTESI!
    colonnefinali[k]=mat2[i][j];
    k++;
    }
    }
    printf("\n");
    printf("Vettore colonne finali \n");
    for(k=0;k<r*c;k++)
    printf("%d",colonnefinali[k]);
    //ora i vettori righefinali e colonnefinali sono quelli che mi interessano!// 
    
    //assegnazione indiceriga e indicecolonna i valori dei vettori
    for(i=0;i<r*c;i++)
    s.indiceriga[i]=righefinali[i];
    
    for(i=0;i<r*c;i++)
    s.indicecolonna[i]=colonnefinali[i];	
    printf("\n");
    	
    //da qui la parte del programma di prima..
    //stampo variabile s(funziona)
    printf("Stampa corretta\n");
    for(k=0;k<size;k++)
    printf("%d",s.indiceriga[k]);
    printf("\n");	
    //stampo vettore di struct(numeri strani)
    printf("Dove sbaglio?\n");
    for(i=0;i<n;i++){
    for(k=0;k<size;k++){
    printf("%d",v[i].indiceriga[k]);		
    }
    }
    
    
    }
    
    
    
    
    
    
    
    
    
    
    
    
  • Re: Dubbio Struct[C]

    Ok, ma qui il problema dove sta? Devi essere un po' più preciso quando crei una discussione ... Chi ti risponde non sa cosa vuoi fare, cosa hai fatto e cosa non va ...
  • Re: Dubbio Struct[C]

    oregon ha scritto:


    Ok, ma qui il problema dove sta? Devi essere un po' più preciso quando crei una discussione ... Chi ti risponde non sa cosa vuoi fare, cosa hai fatto e cosa non va ...
    semplicemente l'ultimo passaggio(che ho scritto quello che stampa numeri a caso) non mi stampa il vettore 0000111122223333 ma dei numeri a caso !
  • Re: Dubbio Struct[C]

    Come ti ho detto, i valori sono random se non inizializzi o modifichi gli elementi ... il vettore v[] non è MAI stato utilizzato prima ...
  • Re: Dubbio Struct[C]

    Ma forse volevi visualizzare il contenuto di s e non di v[ ] ?
  • Re: Dubbio Struct[C]

    oregon ha scritto:


    Come ti ho detto, i valori sono random se non inizializzi o modifichi gli elementi ... il vettore v[] non è MAI stato utilizzato prima ...
    non ho capito scusa,io vorrei stampare il vettore v che ha come campi i due vettori che ho riempito.perchè mi stampa valori random?
Devi accedere o registrarti per scrivere nel forum
15 risposte