Προς το περιεχόμενο

Error σε επεξέργασία δισδιάστατου πίνακα, μέσα σε συνάρτηση


Amadeus7

Προτεινόμενες αναρτήσεις

Δημοσ.

Χαιρετώ όλους τους προγραμματισταράδες του insomnia. Θέλω λίγη help αν μπορεί κάποιος, με ένα σφάλμα π μου πετιέται όταν κάνω compile μία εργασία π έχω στη σχολή.

έχω την παρακάτω συναρτησούλα:

>
void computeAvgs(float *AvAge, float *AvWeight, float *AvEarLength, struct rabbit **A, int K, int N)

{

struct rabbit

{

      int MonthBirth;

      int YearBirth;

      float Weight;

      float EarLength;

      int Age;

      float WeightToAge;

};

void computeAvgs(float *AvAge, float *AvWeight, float *AvEarLength, struct rabbit **A, int K, int N)

{

    int i, j;
    *AvAge=0;

    *AvWeight=0;

    *AvEarLength=0;

    for(i=0; i<K; i++)

             for(j=0; j<N; j++)

             {

****                       *AvAge+=*(*(A+i)+j)->Age;

****                       *AvWeight+=*(*(A+i)+j)->Weight;

****                       *AvEarlength+=*(*(A+i)+j)->EarLength;

             }

    i=N*K;

    *AvAge=*AvAge/i;

    *AvWeight=*AvWeight/i;

    *AvEarLength=*AvEarLength/i;

}

 

(υπολογίζει τελοσπάντων τον μέσο όρο τριών μετρήσεων που έχουν περαστεί σε έναν δισδιάστατο struct πίνακα)

μου πετάει τρία errors εκεί π έχω τα **** και μ λέει:

 

το gcc μου πετάει τα εξής

>C_askis4.c:65: error: invalid type argument of ‘unary *’ (have ‘int’)
C_askis4.c:66: error: invalid type argument of ‘unary *’ (have ‘float’)
C_askis4.c:67: error: invalid type argument of ‘unary *’ (have ‘float’)

 

έως τώρα πάντα παρέδιδα τις εργασίες με το ίδιο πρόβλημα, επειδή δεν ξέρω ακόμα να περνάω σωστά δισδιάστατους πίνακες σε συναρτήσεις :P

ευχαριστώ για την όποια βοήθεια.

Δημοσ.

>
****                       *AvAge+=*(*(A+i)+j)->Age;

 

2 προβλήματα. Πρώτων ότι δεν καταλαβαίνω τι γυρεύουν τόσοι αστερίσκοι στην αρχή τις γραμμής (* *A είναι ίδιο με **A), και δεύτερον το rh του assignment είναι λάθος γραμματικά.

>
*(*(A + i) + j)->Age

simenei A[j]->Age. Όμως το A[j] είναι struct rabbit, και όχι pointer. To -> είναι syntactic sugar για

>
a->b
==
a[0].b

Αφού το [0] έρχεται πριν από το ., σημαίνει ότι παίρνει pointer/array. -> Χρησιμοποιείτε σε pointers και arrays από structure, αφού το . θέλει structure.

 

Διόρθωσε το έτσι,

>
(*(*(A+i)+j)).Age

Δημοσ.
>
****                       *AvAge+=*(*(A+i)+j)->Age;

no comment.

 

εγώ αλλιως το έγραφα αλλά είδα πως στις σημειώσεις του καθηγητή μου έτσι το χρησιμοποιούσε και είπα να το γράψω μήπως είναι σωστό.

 

---------- Το μήνυμα προστέθηκε στις 13:27 ----------

 

άκυρο guys, είχα χρησιμοποιήσει όλους τους ακροβατικούς συνδιασμούς και όχι τον ποιό απλό.

*AvAge+=Α[j].Age

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...