• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
June 19, 2025, 00:52:44 am

Login with username, password and session length
Links
  Thmmy.gr portal
   Forum
   Downloads
   Ενεργ. Λογαριασμού
   Επικοινωνία
  
  Χρήσιμα links
   Σελίδα τμήματος
   Βιβλιοθήκη Τμήματος
   Elearning
   Φοιτητικά fora
   Πρόγραμμα Λέσχης
   Πρακτική Άσκηση
   Ηλεκτρονική Εξυπηρέτηση Φοιτητών
   Διανομή Συγγραμμάτων
   Ψηφιακό Καταθετήριο Διπλωματικών
   Πληροφορίες Καθηγητών
   Instagram @thmmy.gr
   mTHMMY
  
  Φοιτητικές Ομάδες
   ACM
   Aristurtle
   ART
   ASAT
   BEAM
   BEST Thessaloniki
   EESTEC LC Thessaloniki
   EΜΒ Auth
   IAESTE Thessaloniki
   IEEE φοιτητικό παράρτημα ΑΠΘ
   SpaceDot
   VROOM
   Panther
  
Πίνακας Ελέγχου
Welcome, Guest. Please login or register.
June 19, 2025, 00:52:44 am

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
H Στοά των Off Topic
by Katarameno
[June 18, 2025, 20:28:39 pm]

Ισραήλ - Ιράν: Πόλεμος στ...
by Katarameno
[June 18, 2025, 19:40:47 pm]

[ΣΗΕ ΙΙ] Γενικές απορίες ...
by chatzikys
[June 18, 2025, 19:26:00 pm]

Σιδηροδρομικό Δυστύχημα σ...
by Katarameno
[June 18, 2025, 18:22:39 pm]

[Μεταφορά και Διανομή ΗΕ]...
by tzortzis
[June 18, 2025, 07:55:05 am]

Πρακτική Άσκηση ΤΗΜΜΥ 201...
by chris_p30
[June 18, 2025, 00:45:33 am]

[Ψηφιακά Ολοκληρωμένα Κυκ...
by tzortzis
[June 17, 2025, 21:25:42 pm]

[Εφ.Θερμοδυναμική] Γενικέ...
by PAPARI69
[June 17, 2025, 20:59:13 pm]

[Γραφική] Λυμένα θέματα
by okanpala
[June 17, 2025, 18:56:22 pm]

Τι ακούτε αυτήν τη στιγμή...
by Katarameno
[June 17, 2025, 14:25:00 pm]

Αντικατάστασης πυκνωτή σε...
by george14
[June 17, 2025, 13:58:20 pm]

Πότε θα βγει το μάθημα; -...
by tzortzis
[June 17, 2025, 13:19:53 pm]

Αποτελέσματα Εξεταστικής ...
by george14
[June 17, 2025, 12:08:25 pm]

[ΨEE] Γενικές απορίες και...
by Juror8
[June 17, 2025, 12:06:57 pm]

[Οργάνωση Υπολογιστών] Γε...
by RAFI
[June 16, 2025, 22:46:54 pm]

[Σ.Π.Η.Ε.] Γενικές απορίε...
by Nikos_313
[June 16, 2025, 19:49:00 pm]

[ΘΤΠΑ] Γενικές απορίες κα...
by Nikos_313
[June 16, 2025, 16:56:56 pm]

[Αρχές Οικονομίας] Να επι...
by _Trob
[June 16, 2025, 13:28:21 pm]

[Σ.Α.Π.Γ.] Εργασία 2025
by Nikos_313
[June 16, 2025, 12:13:45 pm]

[Διανεμημένη Παραγωγή] Γε...
by Διάλεξις
[June 16, 2025, 01:56:37 am]
Στατιστικά
Members
Total Members: 9965
Latest: Poli
Stats
Total Posts: 1426723
Total Topics: 31711
Online Today: 187
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 53
Guests: 135
Total: 188
Papalamprous humor
evax
Captain
apapagd
AODON
aurora
Maria Golia
stefanoskal
soktas
chris_p30
Denisivo
Billyskotsikas
sterxz
Thanoskask
coyg
rikos4
Giorgosklin
kalantzopoulos
alexlabis
chriskazakos
geftihiakos
Mr Watson
Ma8hths Indou
mitsos753905
apos34
pdiamantis
eleftheria
kofius
antreassv
_Stef
estoimea
Giannis Masterio
tasos gourd
faidonchatz
spoun
aafroditi
kostas1507
unreasonable
vasilis saitis
Stelios Leivas
Εμφάνιση

Νέα για πρωτοετείς
Είσαι πρωτοετής;... Καλώς ήρθες! Μπορείς να βρεις πληροφορίες εδώ. Βοήθεια για τους καινούργιους μέσω χάρτη.
Κατεβάστε εδώ το Android Application για εύκολη πρόσβαση στο forum.
Ανεβάζετε τα θέματα των εξετάσεων στον τομέα Downloads με προσοχή στα ονόματα των αρχείων!

Νέα!
Για οποιοδήποτε πρόβλημα με register/login, στείλτε email στο contact@thmmy.gr.
THMMY.gr > Forum > Μαθήματα Βασικού Κύκλου > 1ο Εξάμηνο > Δομημένος Προγραμματισμός (Moderators: Tasos Bot, tzortzis, Nekt) > [Δομ. Προγρ.] Εργασία F
0 Members and 1 Guest are viewing this topic.
Pages: 1 2 3 [4] 5 6 ... 9 Go Down Print
Author Topic: [Δομ. Προγρ.] Εργασία F  (Read 11628 times)
Merlin
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1377


The Phantom Blot


View Profile
Re: [Δομ. Προγρ.] Εργασία F
« Reply #45 on: May 29, 2009, 21:54:25 pm »

Quote from: xarxarias on May 29, 2009, 21:46:59 pm
Ειπα μπας και θεωρουσε στανταρ οτι έχει κατανεμημένη μια θέση στη μνήμη..Βλακεία όντος..Αλλά το ΄πρόβλημα δε το γλίτωσα..

Έχοντας με τι malloc δώσει μόνο μιά θέση στη result,έτσι ώστε να υπάρχει μια αρχική κατανόμή, και ενώ είμαι ήδη στην επανάληψη για i=0;i<n;i++ (γραμμές τou temp)  κάνω το εξής:
Code:
           if (sum1!=0 || sum2!=0)
           {
            k+=1;
            if (realloc(result,(u++)*sizeof(int*))==NULL)
            {
             printf("Den iparxei diathesimi mnimi gia tin ektelesi tou programmatos");
             getch();
             exit(1);
            }
            result=(int**)realloc(result,(u++)*sizeof(int*));
            printf("%d",sum1);
            getch();

όπου sum1 sum2 το πλήθος των μεγαλυτερων και μικρότερων των ορίων θερμοκρασιών στη i γραμμή του πίνακα temp.
΄
Δυστυχώς, η realloc επιστρέφει NULL..καμιά ιδέα?
Μάλλον φταίει ο u++.Nα υποθέσω ότι είναι pointer?Περίπλοκο τρόπο βρήκες για να εκφράσεις το μέγεθος.Άκου μια ιδέα: κάνε ένα sum κάθε φορά που βρίσκεις ότι ενας σταθμός έχει αισθητήρες που ξεπερνάν τα όρια(
Code:
int n=0;
for(...)
for(...)
if (temp[i][j]>max)n+=1;
if (temp[i][j]<min) n+=1;
)
Και μετά να κάνεις realloc με το n.Αν το n==0 τότε επιστρέφεις τον pointer της malloc.Αλλίως επιστρέφεις τον pointer της realloc(αφού αν το n==0,μόνο τότε θα γίνεται ανακατανομή)
Logged
xarxarias
Καταξιωμένος/Καταξιωμένη
***
Posts: 268



View Profile
Re: [Δομ. Προγρ.] Εργασία F
« Reply #46 on: May 29, 2009, 22:07:47 pm »

O u είναι ένας απλός integer. Η λογική μου είναι η εξής..:

Αν στον i σταθμό έχουμε τιμές που ξεπερνάν ή τα πάνω ή τα κάτω όρια(δηλαδή sum1,sum2!=0)
τότε με χρήση της realloc πρόσθεσε στην result μια γραμμή.
Στη συνέχεια στη νέα γραμμή,δημιούργησε τις στήλες...Παραθέτω ολόκληρο τον κώδικα της συνάρτησης:           

m o πίνακας με το πλήθος των θερμοκρασιών των σταθμών,κ ένας μετρητής...


Code:
void extrem(int **temp,int **result,int n,int *m,int tempmin,int tempmax,int k)
{
         int i=0,j=0,sum1,sum2,u=0;
         k=0;
         if (malloc(sizeof(int*))==NULL)
         {
         printf("Den iparxei diathesimi mnimi gia tin ektelesi tou programmatos");
         exit(1);
         }
         result=(int**)malloc(sizeof(int*));
         for (i=0;i<n;i++)
         {
             sum1=0;
             sum2=0;

             for (j=0;j<m[i];j++)
             {
                 if (temp[i][j]>tempmax)
                 sum1+=1;
                 if (temp[i][j]<tempmin)
                 sum2+=1;
             }
            printf("%d",sum1);
            getch();
           if (sum1!=0 || sum2!=0)
           {
            k+=1;
            if (realloc(result,(u++)*sizeof(int*))==NULL)
            {
             printf("Den iparxei diathesimi mnimi gia tin ektelesi tou programmatos");
             getch();
             exit(1);
            }
            result=(int**)realloc(result,(u++)*sizeof(int*));
            printf("%d",sum1);
            getch();
           
            if (malloc(3*sizeof(int))==NULL)
            {
             printf("Den iparxei diathesimi mnimi gia tin ektelesi tou programmatos");
             exit(1);
            }
            *(result+k-1)=(int*)malloc(3*sizeof(int));
            result[i][0]=i+1;
            printf("%d",result[i][0]);
            getch();
            result[i][1]=sum2;
            result[i][2]=sum1;
           }
         }
}

Logged
Emfanever
Καταστραμμένος
********
Gender: Male
Posts: 5284


Πολίτης


View Profile
Re: [Δομ. Προγρ.] Εργασία F
« Reply #47 on: May 29, 2009, 22:12:53 pm »

Quote from: xarxarias on May 29, 2009, 21:46:59 pm
Ειπα μπας και θεωρουσε στανταρ οτι έχει κατανεμημένη μια θέση στη μνήμη..Βλακεία όντος..Αλλά το ΄πρόβλημα δε το γλίτωσα..

Έχοντας με τι malloc δώσει μόνο μιά θέση στη result
Code:
         if (malloc(sizeof(int*))==NULL)
         {
         printf("Den iparxei diathesimi mnimi gia tin ektelesi tou programmatos");
         exit(1);
          result=(int**)malloc(sizeof(int*));
         }
,έτσι ώστε να υπάρχει μια αρχική κατανόμή, και ενώ είμαι ήδη στην επανάληψη για i=0;i<n;i++ (γραμμές τou temp)  κάνω το εξής:
Code:
           if (sum1!=0 || sum2!=0)
           {
            k+=1;
            if (realloc(result,(u++)*sizeof(int*))==NULL)
            {
             printf("Den iparxei diathesimi mnimi gia tin ektelesi tou programmatos");
             getch();
             exit(1);
            }
            result=(int**)realloc(result,(u++)*sizeof(int*));

όπου sum1 sum2 το πλήθος των μεγαλυτερων και μικρότερων των ορίων θερμοκρασιών στη i γραμμή του πίνακα temp.
Το k ειναι ενας ασχετος μετρητης ενώ το u έχει την αρχική τιμή 0..
Δυστυχώς, η realloc επιστρέφει NULL..καμιά ιδέα?

Υπάρχει μια μικρή πιθανότητα να φταίει το u++  και συγκεκριμένα ότι το ++ είναι μετά το u. Δοκίμασε το ++u . Τι τιμή έχει αρχικά το u?
Logged
xarxarias
Καταξιωμένος/Καταξιωμένη
***
Posts: 268



View Profile
Re: [Δομ. Προγρ.] Εργασία F
« Reply #48 on: May 29, 2009, 22:14:17 pm »

Aπό τα ορίσματα έχει τιμη 0..
Logged
xarxarias
Καταξιωμένος/Καταξιωμένη
***
Posts: 268



View Profile
Re: [Δομ. Προγρ.] Εργασία F
« Reply #49 on: May 29, 2009, 22:17:41 pm »

Ναι.. Αυτό έφτεγε..!Ωραίος!!Και τώρα που ξεπεράσαμε αυτο το εμπόδιο....Crashaρει!!!Αυτο θα το παλέψω μόνος μου..λογικά είναι στην επιστροφή απ τη συνάρτηση στη  main...
Logged
Emfanever
Καταστραμμένος
********
Gender: Male
Posts: 5284


Πολίτης


View Profile
Re: [Δομ. Προγρ.] Εργασία F
« Reply #50 on: May 29, 2009, 22:21:14 pm »

Quote from: xarxarias on May 29, 2009, 22:14:17 pm
Aπό τα ορίσματα έχει τιμη 0..

Δλδ , όταν για πρώτη φορά κάνει u++ στη realloc έχει τιμή 0?

αν είναι έτσι    

realloc(result,(u++)*sizeof(int*))      

τότε ,την πρώτη φορά γίνεται ουσιαστικά realloc(result,0*sizeof(int*), επειδή το u++ σημαίνει ότι η αύξηση στο u θα γίνει μετά από την πράξη στην οποία χρησιμοποιείται το u.

αν βάλεις ++u τότε θα γίνει realloc(result,1*sizeof(int*)

αλλά και πάλι δεν έχει νόημα γιατί το μέγεθος είναι ίδιο με το μέγεθος που έχει ήδη ο result (δλδ 1*sizeof(int*))

καλύτερα ξεκίνα με u =1 και κάντο ++u
Logged
Merlin
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1377


The Phantom Blot


View Profile
Re: [Δομ. Προγρ.] Εργασία F
« Reply #51 on: May 29, 2009, 22:26:29 pm »

subscripted value is neither array nor pointer:
Code:
if(j==1) printf("\nArithmos aisthhthrwn me megalh thermokrasia tou %d STATHMOU : %d",i,extrem[i][1]);
Ξέρει κανείς τι παίζει?Emfa? Tongue
Logged
xarxarias
Καταξιωμένος/Καταξιωμένη
***
Posts: 268



View Profile
Re: [Δομ. Προγρ.] Εργασία F
« Reply #52 on: May 29, 2009, 22:28:21 pm »

Δεν βγάζω απ έξω την πρώτη επανάληψη, οπότε είναι προτιμότερο να κάνω την ίδια κατανομή της μνήμης δυο φορές, παρά να γράφω 15 γραμμές κώδικα..

Πάντος, σχεδόν δουλεύει!!
Logged
Emfanever
Καταστραμμένος
********
Gender: Male
Posts: 5284


Πολίτης


View Profile
Re: [Δομ. Προγρ.] Εργασία F
« Reply #53 on: May 29, 2009, 22:29:24 pm »

Quote from: Merlin on May 29, 2009, 22:26:29 pm
subscripted value is neither array nor pointer:
Code:
if(j==1) printf("\nArithmos aisthhthrwn me megalh thermokrasia tou %d STATHMOU : %d",i,extrem[i][1]);
Ξέρει κανείς τι παίζει?Emfa? Tongue
σε αυτή τη γραμμή δε βλέπω λάθος... ίσως είναι κάπου αλλού... μπορεί το σφάλμα να είναι 1-2 γράμμες πάνω κάτω

edit: το extrem συνάρτηση δεν πρέπει να είναι (σύμφωνα με την εκφώνηση)?
« Last Edit: May 29, 2009, 22:31:44 pm by Emfanever » Logged
Emfanever
Καταστραμμένος
********
Gender: Male
Posts: 5284


Πολίτης


View Profile
Re: [Δομ. Προγρ.] Εργασία F
« Reply #54 on: May 29, 2009, 22:52:26 pm »

από τη στιγμή που η extrem είναι συνάρτηση , γιατί γράφεις extrem [i ][1] σαν να είναι pointer to pointer?

ίσως κάτι της μορφής (extrem(ορίσματα...)) [i ][1]  να δούλευε

αλλά καλύτερα γράψε πχ

int ** temp;

temp= extrem (ορίσματα )

και μετά στην printf βάλε temp[i ][1]
Logged
Merlin
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1377


The Phantom Blot


View Profile
Re: [Δομ. Προγρ.] Εργασία F
« Reply #55 on: May 29, 2009, 22:55:03 pm »

Ok ρε φίλε,είσαι μεγάλος τελικά Smiley
« Last Edit: May 29, 2009, 22:59:38 pm by Merlin » Logged
xarxarias
Καταξιωμένος/Καταξιωμένη
***
Posts: 268



View Profile
Re: [Δομ. Προγρ.] Εργασία F
« Reply #56 on: May 29, 2009, 23:27:44 pm »

Ρε παιδιά, μήπως ο πίνακας result πρεπει να ειναι τριπλός και όχι διπλός pointer?Για κάποιο λόγω, όλα δουλεύουν άψογα, αλλά το return[j] όταν πάω να το τυπώσω απο τη main,κάνει το πρόγραμμα να σταματάει τη λειτουργία του(απλά να κλείνει χωρίς να βγάλει error αλλά και δεν τρέχει ότι εντολές ακολουθούν την return...)Tι μπορεί να παίζει?
Logged
gate4
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Posts: 1996


View Profile
Re: [Δομ. Προγρ.] Εργασία F
« Reply #57 on: May 30, 2009, 15:40:52 pm »

καλω p=extrem(......)
t:temp
m:arithmos stathmwn
a:pinakas me ton arithmo aisthitirwn

Code:
int** extrem(float min,float max,float **t,int m,int *a) {

int i,j,pla,plb,q,u=1,c=0;
int **result;
result=(int**)malloc(sizeof(int*)*1);
result[0]=(int*)malloc(sizeof(int)*3);
for(i=0;i<m;i++) {
pla=0;
plb=0;
q=0; 
for(j=0;j<a[i];j++) {
if(t[i][j]<min) {
pla=pla+1;
q=1;}
if(t[i][j]>max) {
plb=plb+1;
q=1;}
}
if(q==1) {                  //q=1 :brethike stathmos poy yperbainei ta oria thermokrasias 
if (realloc(result,(u+1)*sizeof(int*))==NULL)
{
printf("\n Den iparxei diathesimi mnimi");
getch();
exit(1);
}
result=(int**)realloc(result,(u+1)*sizeof(int*)); //prosthiki mias epipleon grammis
if (malloc(3*sizeof(int))==NULL){
printf("Den iparxei diathesimi mnimi");
getch();
exit(1);}
u=u+1;
result[c+1]=(int*)malloc(3*sizeof(int));
result[c][0]=i+1;                                  
result[c][1]=pla;
result[c][2]=plb;
c=c+1;
result[c][0]=-100;    // gemizei thn parapanw grammi me -100,teleutaia grammi tou result
result[c][1]=-100;
result[c][2]=-100;                                                                                                    
}
}
return result;
}

crash....pou einai to lathos?
Logged

Διαμαντοπουλου: Οι καταλήψεις είναι μια μορφή πάλης και θα έλεγα ότι είναι η ανώτατη μορφή πάλης. Στην Ελλάδα ξεκίνησαν και αυτή τη φορά με την ανώτατη μορφή πάλης που είναι οι καταλήψεις, όμως όταν κάποιος επιλέγει να αγωνιστεί με τέτοιες μορφές έχει και ένα κόστος.



我學會并且講仅中文,因為沒人明白我,當我講希臘語時
Sonic
Καταξιωμένος/Καταξιωμένη
***
Gender: Male
Posts: 148


View Profile
Re: [Δομ. Προγρ.] Εργασία F
« Reply #58 on: May 30, 2009, 19:38:27 pm »

σε καποια  σημεια απλα καλεις τη (m/re)alloc χωρις να εκχωρεις αυτο που θα σου επιστρεψει σε μια μεταβλητη. ενω σε αλλα καλεις τη (m/re)alloc χωρις συνθηκη ελεγχου,δηλ. ακομα και αν η malloc δεν καταφερει να βρει μημη εσυ συνεχιζεις απτοητος..! επισης στη realloc η προηγουμενη θεση μνημης (pointer) μπαινει ως δευτρερο ορισμα.
« Last Edit: May 30, 2009, 19:41:13 pm by Sonic » Logged
Merlin
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1377


The Phantom Blot


View Profile
Re: [Δομ. Προγρ.] Εργασία F
« Reply #59 on: May 30, 2009, 19:55:22 pm »


Quote from: Sonic on May 30, 2009, 19:38:27 pm
σε καποια  σημεια απλα καλεις τη (m/re)alloc χωρις να εκχωρεις αυτο που θα σου επιστρεψει σε μια μεταβλητη. ενω σε αλλα καλεις τη (m/re)alloc χωρις συνθηκη ελεγχου,δηλ. ακομα και αν η malloc δεν καταφερει να βρει μημη εσυ συνεχιζεις απτοητος..! επισης στη realloc η προηγουμενη θεση μνημης (pointer) μπαινει ως δευτρερο ορισμα.
Πρώτο όρισμα,το δεύτερο είναι για το νέο μέγεθος
Logged
Pages: 1 2 3 [4] 5 6 ... 9 Go Up Print
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Scribbles2 | TinyPortal © Bloc | XHTML | CSS
Loading...