Title: Ergasia F Post by: CyberCaesar on May 23, 2006, 14:42:06 pm xairetai
ksekinhse kaneis na asxoleitai me th nea ergasia?giati den vghke topic neritera?tespa... xreiazomai voitheia:ston eksis kwdika #include<stdio.h> #include<stdlib.h> void main() { int i,*n_syn; for(i=0;i<3;i++){ printf("Dwse arithmo syndialeksewn gia thn %d hmera\n",i+1); scanf("%d",n_syn+i); printf("%d\n",*n_syn+i); } } otan dwse sthn prwth thesh enan arithmo px 12 tote automata stis alles theseis mpainoun oi arithmoi 13,14 akoma k an egw dwsw alles times.mhpws kserei kaneis giati? Title: Απ: Ergasia F Post by: meltemi on May 23, 2006, 14:53:12 pm printf("%d\n",*n_syn+i); printf("%d\n",*(n_syn+i)); Title: Re: Ergasia F Post by: CyberCaesar on May 23, 2006, 17:46:12 pm euxaristw melteFox
Title: Απ: Ergasia F Post by: meltemi on May 23, 2006, 17:56:32 pm Title: Re: Ergasia F Post by: CyberCaesar on May 23, 2006, 19:35:22 pm avatar?what's this????????
Title: Re: Ergasia F Post by: Verminoz on May 23, 2006, 20:29:38 pm Η εικόνα που έχεις κάτω από το όνομα σου...
Title: Re: Ergasia F Post by: CyberCaesar on May 24, 2006, 13:53:21 pm θα χρειαστω κ αλλη βοηθεια
στον κωδικα void main() { int i,j,n_day,*n_syn,*max,*a,siz; void *b; printf("Dwse twn aritmo twn hmerwn\n"); scanf("%d",&n_day); siz=((n_day*sizeof(int))+(n_day*sizeof(int))); if ((b=malloc(siz))==NULL){ printf("Den yparxei arketh mnhmh gia katanomh\n"); exit(1); } n_syn=b; max=b+n_day; μου λεει size of the type is unknown or zero για την τελευταια γραμμη. Αν καποιος ξερει τι παιζει ας μου πει κ με. Title: Re: Ergasia F Post by: Tonia on May 24, 2006, 18:50:25 pm i metabliti b einai void kai i n_day einai integer. ara prostheteis diaforetika pragmata. prepei na baleis nomizw
max=(int)b+n_day Title: Re: Ergasia F Post by: CyberCaesar on May 25, 2006, 00:25:00 am thanks tonia
Title: Re: Ergasia F Post by: Tonia on May 25, 2006, 18:04:02 pm na rwtisw ki egw kati.. pali teleutaia stigmi.
otan kaloume tin synartisi kai theloume mesa sta orismata tis na baloume tis stiles enos 2x2 pinaka.pws to kanoume? exoume ton 'a' pou oi grammes tou einai oi meres kai oi stiles tou oi xronoi pou dihrkese i kathe syndialexi. profanws kati den exw katalabei me tous pointers giati de to programma mou kollaei. parathetw ena tmima tou kwdika void main(){ ........ for(i=0;i<days;i++){ call_mean(*(a+i+j),*(lim+i),*(num+i)); printf("Gia tin mera %d o mesos xronos einai %f kai o arithmos pou i diarkeia xeperase to orio einai %d.\n",i+1,mean,over_sum); } } void call_mean(float *p,float limit,int num_syn){ int k,over_sum=0; float mean=0; for(k=0;k<num_syn;k++){ mean+=*(p+k); } mean/=num_syn; for(k=0;k<num_syn;k++){ if(*(p+k)>limit) over_sum++; } } to problima mou pisteuw einai sta bold. euxaristw gia opoia boitheia. Title: Re: Ergasia F Post by: CyberCaesar on May 25, 2006, 18:25:03 pm basika otan thn kaleis nomizw vazeis & anti gia *,stelneis dld th dieuthunsh,
egw to evala se mia allh metavlhth to *(a+i+j) k esteila th dieuthunsh. gia sigoura den kserw kiolas na se pw Title: Re: Ergasia F Post by: lambros on May 25, 2006, 18:29:41 pm Το πρόβλημα είναι ότι πρέπει να χρησιμοποιήσεις δείκτη σε δείκτη για να ορίσεις το πολυδιάστατο πίνακα.Δηλαδή ένας πίνακας 2x2 αποτελείται στην ουσία από 2 πίνακες με 2 στοιχεία ο καθένας.Αν έχεις το πίνακα a[ i ][ j ] 2x2 το a είναι δείκτης ενός πίνακα που περιέχει 2 άλλους δείκτες(α[1] και 1][j] και α[2][j] .Δηλαδή το a είναι δείκτης σε δείκτη.
Άρα στη συνάρτηση βάζεις float **p και όταν την καλείς απλώς βάζεις σαν όρισμα τον πίνακα a. Πάντως το *(p+k) είναι ίδιο με το p[k] ,που είναι πολύ πιο βολικό. πχ void cal(float **p){ p[1][1]=0; \\που σημαίνει *(p + 1 + 1)=0 p[1][2]=0; } και αν έχεις στο κυρίως πρόγραμμα float a[2][2]; .... cal(a); Title: Re: Ergasia F Post by: Tonia on May 25, 2006, 18:40:25 pm thanks pou asxolithikate..
labros me auto pou mou les error de mou bgazei alla kai pali ta apotelesmata einai lathos. isws exw lathos allou ston kwdika (ston algorithmo dld). episis, omws, stin ergasia leei oti i synartisi void call_mean diabazei ena monodiastato pinaka, opote logika apagoreuetai na balw **p. ti les? Title: Re: Ergasia F Post by: lambros on May 25, 2006, 18:56:49 pm Ναι , δική μου απροσεξία .Αυτό που είπα παραπάνω είναι όταν θές να περάσεις όλο το πίνακα στη συνάρτηση.Εσύ προφανώς θές να καλέσεις τη συνάρτηση για τη μια στήλη , έτσι δεν είναι ?
Νομίζω είναι void cal(float *p){ p[1]=0; κτλ Δηλαδή δουλεύεις σαν η στήλη να είναι ένας απλός πίνακας } και αν έχεις στο κυρίως πρόγραμμα float a[2][2]; .... cal(a[1]); \\για τη πρώτη στήλη cal(a[2]); \\ για τη δεύτερη Title: Re: Ergasia F Post by: Tonia on May 25, 2006, 19:03:20 pm nai ok, auto ebala kai trexei to programma, alla sta apotelesmata gia kapoio logo mou bgazei panta meso oro 0.000000 kai arithmo klisewn pou xeperasan to orio: 134. lete na exei sxesi me to palio noumero tou 11888??? eleos pia. 3 meres auto blepw brosta mou.
thanks anyway! Title: Re: Ergasia F Post by: elisabeth on May 25, 2006, 20:21:53 pm tonia ετσι όπως το βλέπω πρεπει:
void main(){ ........ for(i=0;i<days;i++){ call_mean(a+i+j,*(lim+i),*(num+i)); printf("Gia tin mera %d o mesos xronos einai %f kai o arithmos pou i diarkeia xeperase to orio einai %d.\n",i+1,mean,over_sum); } } (αυτό βέβαια αν ο a είναι pointer και οχι pointer σε pointer) τώρα στη call_mean μέσα έτσι όπως το είχες είναι οκ.με a[] και εμένα μου τα έβγαζε όλα μηδεν. Title: Re: Ergasia F Post by: lambros on May 25, 2006, 20:39:26 pm Το a+i+j που δείχνει όμως?
Title: Re: Ergasia F Post by: Valantis on May 25, 2006, 23:33:12 pm Εγώ εχω το εξής πρόβλημα:Οι αριθμός κλήσεων που ξεπερνουν το όριο
(*klhseis_panw ==> klhseis_anw) βγαινει παντα μηδεν. Ορίστε το "ένοχο" σημείο του κωδικα: . . . for(i=0;i<N;i++) { M=call_amount; if((p=(float*)malloc(M*sizeof(float)))==NULL) { printf("\nDen yparxei arketh mnhmh gia katanomh.\n"); exit(1); } for(j=0;j<M;j++) p[j]=a[j]; call_mean(&*p,&call_limit,&meso,&klhseis_anw,&M); printf("O mesos oros twn syndiale3ewn ths %dhs hmeras einai: %f lepta,\n",i+1,meso); printf("enw oi syndiale3eis poy ypervainoyn to orio einai: %d \n\n",klhseis_anw); free((void*)p); } } void call_mean(float*P,float*limit,float*mesos,int*klhseis_panw,int*m) { int j; float sum=0; for(j=0;j<*m;j++) { sum+=P[j]; if(P[j]>*limit) *klhseis_panw++; } *mesos=sum/(*m); sum=0; } που ναι το λαθος? οεο? Title: Re: Ergasia F Post by: Valantis on May 26, 2006, 00:20:15 am Την έστειλα την εργασία αν και ανολοκλήρωτη αλλα αν καποιος θέλει και μπορεί να βοηθήσει δε με χαλάει! ;)
Title: Re: Ergasia F Post by: Tonia on May 26, 2006, 00:23:00 am labros kai elizabeth thanks gia tis apantiseis alla eprepe na fygw kai ekana upload tin ergasia stis 19:30.. gi auto den hmoun edw na apantisw.. pame gia alla twra (ergasia G..).
Kalinyxta! |