• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
June 17, 2025, 05:07:47 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 17, 2025, 05:07:47 am

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
Ισραήλ - Ιράν: Πόλεμος στ...
by okan
[Today at 02:33:21]

Τι ακούτε αυτήν τη στιγμή...
by Katarameno
[Today at 02:29:21]

[Οργάνωση Υπολογιστών] Γε...
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 Λαμπτήρας
[June 16, 2025, 15:55:08 pm]

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

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

Αποτελέσματα Εξεταστικής ...
by Nikos_313
[June 16, 2025, 12:01:53 pm]

Πρακτική Άσκηση ΤΗΜΜΥ 201...
by George_RT
[June 16, 2025, 10:22:18 am]

[Διανεμημένη Παραγωγή] Γε...
by Διάλεξις
[June 16, 2025, 01:56:37 am]

Αντικατάστασης πυκνωτή σε...
by nmpampal
[June 15, 2025, 16:25:56 pm]

[Σ.Π.Η.Ε.] Παλιά θέματα -...
by nmpampal
[June 15, 2025, 06:43:15 am]

Το thmmy.gr στο instagram...
by Mr Watson
[June 15, 2025, 00:50:23 am]

[Λογισμός ΙΙ] Απορίες σε...
by el mariachi
[June 14, 2025, 20:47:07 pm]

ΠΡΟΣΟΧΗ στο ανέβασμα θεμά...
by tzortzis
[June 14, 2025, 16:54:08 pm]

Ρυθμίσεις Θεμάτων της Ανώ...
by el mariachi
[June 14, 2025, 11:56:45 am]

Πότε θα βγει το μάθημα; -...
by Nikos_313
[June 14, 2025, 10:00:55 am]

Αρχείο Ανακοινώσεων [Arch...
by Nikos_313
[June 14, 2025, 09:58:14 am]

Αλέξης Τσίπρας, η επιστρο...
by Yamal
[June 14, 2025, 04:42:23 am]
Στατιστικά
Members
Total Members: 9960
Latest: valco08
Stats
Total Posts: 1426680
Total Topics: 31710
Online Today: 169
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 6
Guests: 112
Total: 118
Akis Papanikolaou
Kenedy
zaroumaria
apapamichail
Yamal
Εμφάνιση

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

Νέα!
Η γραμματεία είναι ανοιχτή καθημερινά 12:00-13:30 Tongue
THMMY.gr > Forum > Μαθήματα Βασικού Κύκλου > 1ο Εξάμηνο > Δομημένος Προγραμματισμός (Moderators: Tasos Bot, tzortzis, Nekt) > ΕΡΓΑΣΙΑ vol E
0 Members and 1 Guest are viewing this topic.
Pages: 1 2 [3] 4 Go Down Print
Author Topic: ΕΡΓΑΣΙΑ vol E  (Read 9113 times)
poly1
Guest
Re: ΕΡΓΑΣΙΑ vol E
« Reply #30 on: May 16, 2006, 22:29:43 pm »

Quote from: onar on May 16, 2006, 11:17:32 am
Quote from: NinjaFOX on May 14, 2006, 15:44:47 pm
fabsf
Για την συναρτησση fabsf πρεπει να κανουμε #include ποιο header file?
Εγώ εβαλα το math.h.Την συναρτηση την αναγνωρισε ο compiler αλλα μου εκτυπώνει ο,τι να ναι.......
Δωσε μερικες διευκρινυσεις..TNX

ναι τυπικα στο math.h αλλα οντως δε δουλευει...

αλλα τι σε νοιαζει αφου υπαρχει η fabs σκετο?

κανει την ιδια δουλεια
Logged
Verminoz
Veteran
Καταστραμμένος
******
Gender: Male
Posts: 8236


I smoke my friends down to the filter


View Profile WWW
Re: ΕΡΓΑΣΙΑ vol E
« Reply #31 on: May 17, 2006, 11:10:02 am »

Συμπέρασμα: OpenSource rules NotWorthy NotWorthy NotWorthy

Tongue
Logged



Englab - Open source scientific/engineering platform
Rebetologion - Contemporary/Experimental


Κακούργα ύπαρξις!
elisabeth
Καταξιωμένος/Καταξιωμένη
***
Gender: Female
Posts: 177


View Profile
Re: ΕΡΓΑΣΙΑ vol E
« Reply #32 on: May 17, 2006, 18:36:37 pm »

να ρωτήσω και εγώ κάτι:
1)αν μία απο τις ελάχιστες διαφορές είναι 0 και η άλλη αρνητική?τότε ο πίνακας είναι διαδωνίως υπερτερών ή οχι?

2)if((a=(float *)(malloc(size_a)))==NULL){
        printf("den iparxei arketi mnimi gia katanomi");
        exit(1);
     }

όταν βάλω Ν=10000000000000000000000000000000000000000000000000000
κανονικά θα πρέπει να γραφει "den iparxei arketi mnimi gia katanomi" και να κάνει exit
αλλά μου εκτυπώνει κατι ΄πού έχω στο μέσο του προγράμματος(πηδάει ένα τμημα κώδικα και πάει προς το τέλος).
κατα τα άλλα δουλεύει κανονικά.
καμια ιδέα γιατι το κάνει αυτό?
Logged

Άγιε μου Βασίλη κάνε τη μέρα να έχει 30 ώρες!<br /><br />Pleaaaaase...δε ζητάω πολλά,ε????????
Verminoz
Veteran
Καταστραμμένος
******
Gender: Male
Posts: 8236


I smoke my friends down to the filter


View Profile WWW
Re: ΕΡΓΑΣΙΑ vol E
« Reply #33 on: May 17, 2006, 18:40:22 pm »

Πως συμπέρανες ότι πηδάει ένα τμήμα του κώδικα και ποιο είναι αυτό??
Logged



Englab - Open source scientific/engineering platform
Rebetologion - Contemporary/Experimental


Κακούργα ύπαρξις!
elisabeth
Καταξιωμένος/Καταξιωμένη
***
Gender: Female
Posts: 177


View Profile
Re: ΕΡΓΑΣΙΑ vol E
« Reply #34 on: May 17, 2006, 18:45:01 pm »

void main()
{
     int N,i,j,size_a;
     float *a,row_min,column_min;
     printf("dose ti diastasi N tou pinaka");
     scanf("%d",&N);
     size_a=(int)(pow(N,2))*sizeof(float);
     if((a=(float *)(malloc(size_a)))==NULL){
        printf("den iparxei arketi mnimi gia katanomi");
        exit(1);
     }
     for(i=0;i<N;i++){
         for(j=0;j<N;j++){
             printf("dose to stoixeio %d,%d tou pinaka",i+1,j+1);
             scanf("%f",a+i*N+j);
         }
     }
     d_matrix(a,N,&row_min,&column_min);
     if(row_min>0||column_min>0)
        printf("o pinakas einai diagwniws yperterwn");
     else
        printf("o pinakas den einai diagwniws yperterwn");
     free((void *)a);


      system("PAUSE");
}
δε μου ζητάει να είσαγω δεδομένα οπότε προφανώς πηδάει τουλάχιστον τη scanf
και μετά μου εκτυπώνει:

o pinakas einai diagwniws yperterwn
Logged

Άγιε μου Βασίλη κάνε τη μέρα να έχει 30 ώρες!<br /><br />Pleaaaaase...δε ζητάω πολλά,ε????????
Verminoz
Veteran
Καταστραμμένος
******
Gender: Male
Posts: 8236


I smoke my friends down to the filter


View Profile WWW
Re: ΕΡΓΑΣΙΑ vol E
« Reply #35 on: May 17, 2006, 19:00:41 pm »

Προφανώς τρώει κόλλημα αλλά όχι αρκετό για να κρασάρει το πρόγραμμα. Δεν νομίζω ότι συντρέχει σοβαρός λόγος να κάνεις κάτι γι αυτό. Ούτως ή άλλως τέτοιου αριθμοί είναι εκτός τόπου και χρόνου... Wink
Logged



Englab - Open source scientific/engineering platform
Rebetologion - Contemporary/Experimental


Κακούργα ύπαρξις!
Nosferatu
Guest
Re: ΕΡΓΑΣΙΑ vol E
« Reply #36 on: May 18, 2006, 00:52:34 am »

θελω να στειλω πινακα 2 διαστασεων(τον matrix ΝxN) σε συναρτηση void και να τον επεξεργαζετε αυτη και αντιμετωπιζω προβλημα,παραθετω μερος του κωδικα για να καταλαβετε

void d_matrix( float **matrix,*N........)
{
(εστω θελω να προσθεσω το 1 σε ολα τα στοιχεια του)
   for(i = 0; i < *N; i++)
   {
      for(j = 0; j < *N; j++)
      {
       **matrix[j]= (**matrix[j])+1;
      }
      
   }
}

void main()
{
........................
d_matrix(&matrix..........);
.............
}

και μου βγαζει  τo warning στη σειρα της main που καλω την d_matrix
---warning C4047: 'function' : 'float ** ' differs in levels of indirection from 'float ***  '--
Logged
Nosferatu
Guest
Re: ΕΡΓΑΣΙΑ vol E
« Reply #37 on: May 18, 2006, 00:56:51 am »

για οποιν ασχοληθει,εννοειται οτι στο post που εκανα ηθελα να γραψω matrix[j] και οχι matrix[j],sorry μου ξεφυγε
Logged
elmaya
Guest
Re: ΕΡΓΑΣΙΑ vol E
« Reply #38 on: May 18, 2006, 01:41:12 am »

Quote from: elisabeth on May 17, 2006, 18:45:01 pm
void main()
{
     int N,i,j,size_a;
     float *a,row_min,column_min;
     printf("dose ti diastasi N tou pinaka");
     scanf("%d",&N);
     size_a=(int)(pow(N,2))*sizeof(float);
     if((a=(float *)(malloc(size_a)))==NULL){
        printf("den iparxei arketi mnimi gia katanomi");
        exit(1);
     }
     for(i=0;i<N;i++){
         for(j=0;j<N;j++){
             printf("dose to stoixeio %d,%d tou pinaka",i+1,j+1);
             scanf("%f",a+i*N+j);
         }
     }
     d_matrix(a,N,&row_min,&column_min);
     if(row_min>0||column_min>0)
        printf("o pinakas einai diagwniws yperterwn");
     else
        printf("o pinakas den einai diagwniws yperterwn");
     free((void *)a);


      system("PAUSE");
}
δε μου ζητάει να είσαγω δεδομένα οπότε προφανώς πηδάει τουλάχιστον τη scanf
και μετά μου εκτυπώνει:

o pinakas einai diagwniws yperterwn

elisabeth σου παραθέτω τις διορθώσεις:

#include <stdio.h>
#include <stdlib.h>

void main()
{
     unsigned int N,i,j;
     //int i,j,size_a;
     float *a,row_min,column_min;
     printf("dose ti diastasi N tou pinaka\n");
     printf("N: %u\n",N);
     printf("4294967296\n");
     scanf("%u",&N);
     printf("N: %u\n",N);
     //int: 4294967295 kai unsigned int: 2147483647
     
     register void *mem = (malloc (pow (N, 2)*sizeof (float)));
     if (mem == NULL) {
        printf("oops!");
        system("PAUSE");
        exit (1);
     }
     /*
     size_a=(int)(pow(N,2))*sizeof(float);
     printf("N = %d",N);
     
     if ((a = (float *)malloc(size_a) ) == NULL) {
        printf("den iparxei arketi mnimi gia katanomi");
        exit(1);
     }
     */
     
     for(i=0;i<N;i++){
         for(j=0;j<N;j++){
             printf("dose to stoixeio %d,%d tou pinaka",i+1,j+1);
             scanf("%f",a+i*N+j);
         }
     }
     //d_matrix(a,N,&row_min,&column_min);
     if(row_min>0||column_min>0)
        printf("o pinakas einai diagwniws yperterwn");
     else
        printf("o pinakas den einai diagwniws yperterwn");
     free((void *)a);

      system("PAUSE");
}


Λοιπόν, το ζήτημα που θέτεις έχει να κάνει με την αριθμητική που καταλαβαίνει ο υπολογιστής.
Στους σύγχρονους compilers o int είναι 4 bytes οπότε και η μέγιστη τιμή που μπορεί να πάρει είναι 2^31-1. Αντίστοιχα η μέγιστη τιμή ενός unsigned int είναι 2^32-1. Συνεπώς κάπου εκεί το χάνει το προγραμματάκι σου. Όταν του βάλεις 4294967296 θα καταλάβει μηδέν γιατί έτσι γίνεται για το δυαδικό σύστημα με συμπλήρωμα του 2. Οπότε αρχικοποιεί μηδενική μνήμη και όλα πάνε κατ' ευχήν και χωρίς λάθη για τον compiler, αλλά με φυτεμένα bugs από τη μεριά σου. Το ίδιο συμβαίνει και αν ξεπεράσεις αυτόν τον αριθμό. Το πρόγραμμα θα αρχίσει να συμπεριφέρεται περίεργα...

Επίσης όταν βάζεις έναν μεγάλο αριθμό που τελειώνει με πολλά μηδενικά υποψιάζομαι ότι ο buffer εισόδου κρατάει τα τελευταία 32 bits που τον ενδιαφέρουν. Για την τελευταία πρόταση δεν είμαι απόλυτα σίγουρος. Ψάξτο ή ρώτα για να το επιβεβαιώσεις.

Τέλος, σου σημείωσα πώς θα έκανα memory allocation πιο γρήγορα και πιο κατανοητά όσον αφορά τη συγγραφή του κώδικα. Καλό είναι να μάθετε να γράφεται με ένα συγκεκριμένο τρόπο αφού ψάξετε για το θέμα αυτό στο δίκτυο. Δεν είναι τυχαίο ότι υπάρχουν διάφορα standards για το θέμα αυτό.
Παραθέτω:
http://www.gnu.org/prep/standards/
http://en.wikipedia.org/wiki/Programming_style

Ελπίζω να βοήθησα.
« Last Edit: May 18, 2006, 01:50:05 am by elmaya » Logged
CyberCaesar
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 2493



View Profile
Re: ΕΡΓΑΣΙΑ vol E
« Reply #39 on: May 18, 2006, 02:45:31 am »

Γεια σας παιδια!
Μπορει κανεις να μου πει πως βρισκεις το αθροισμα των στηλων?Εχω κολλησει....
Logged

Brain the size of a planet and I'm studying THMMY... You call that job satisfaction? Cause I don't.

"What's life? Life's easy. A quirk of matter. Nature's way of keeping meat fresh."
elisabeth
Καταξιωμένος/Καταξιωμένη
***
Gender: Female
Posts: 177


View Profile
Re: ΕΡΓΑΣΙΑ vol E
« Reply #40 on: May 18, 2006, 17:14:04 pm »

Quote from: elmaya on May 18, 2006, 01:41:12 am

Ελπίζω να βοήθησα.

Ήσουν πολύ κατατοπιστικός.Ευχαριστώ.




Quote from: Nosferatu on May 18, 2006, 00:52:34 am
θελω να στειλω πινακα 2 διαστασεων(τον matrix ΝxN) σε συναρτηση void και να τον επεξεργαζετε αυτη και αντιμετωπιζω προβλημα,παραθετω μερος του κωδικα για να καταλαβετε

void d_matrix( float **matrix,*N........)
{
(εστω θελω να προσθεσω το 1 σε ολα τα στοιχεια του)
   for(i = 0; i < *N; i++)
   {
      for(j = 0; j < *N; j++)
      {
       **matrix[j]= (**matrix[j])+1;
      }
      
   }
}

void main()
{
........................
d_matrix(&matrix..........);
.............
}

και μου βγαζει  τo warning στη σειρα της main που καλω την d_matrix
---warning C4047: 'function' : 'float ** ' differs in levels of indirection from 'float ***  '--


έτσι όπως το βλέπω μάλλον πρέπει αντι για:
void main()
{
........................
d_matrix(&matrix..........);
.............
}

να βάλεις:
void main()
{
........................
d_matrix(matrix..........);
.............
}
η μεταβλητή matrix είναι pointer σε pointer(**).
βάζοντας το & είναι σαν να λες οτι η matrix θα πάρει ως είσοδο ένανα pointer σε pointer σε pointer(***).
οπότε δεν υπάρχει συμφωνία στον τύπο των ορισμάτων που δέχεται η d_matrix.
(περιμένει ** και την καλείς δίνοντας αντί αυτού ***.
Logged

Άγιε μου Βασίλη κάνε τη μέρα να έχει 30 ώρες!<br /><br />Pleaaaaase...δε ζητάω πολλά,ε????????
Nosferatu
Guest
Re: ΕΡΓΑΣΙΑ vol E
« Reply #41 on: May 18, 2006, 17:22:11 pm »

εχεις δικιο το δοκιμασα και τρεχει,thanx elisabeth!!!!
Logged
Tonia
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Posts: 643


Spiral out! Keep going..


View Profile
Re: ΕΡΓΑΣΙΑ vol E
« Reply #42 on: May 18, 2006, 18:22:04 pm »

Γεια σας και από μένα, μπορεί κανείς να με βοηθήσει στο εξής;
για τον υπολογισμό των διαφορών και κατόπιν των ελαχίστων διαφορών θα χρειαστούμε πάλι πίνακες ή αλλιώς pointers(διορθώστε με αν κάνω λάθος). Άρα δε θα πρέπει μέσα στην d_matrix να κάνουμε πάλι δυναμική κατανομή μνήμης 1ον για τη διαφορά των γραμμών και 2ον για τη διαφορά των στηλών? Εγώ κάτι τέτοιο έχω κάνει, αλλά κάπου κολλάει.Αν αυτό που λέω δεν είναι τελείως βλακεία και ενδιαφέρεται κάποιος να με βοηθήσει στέλνω τον κώδικα.ΤΗΑΝΚΣ
Logged

Tonia
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Posts: 643


Spiral out! Keep going..


View Profile
Re: ΕΡΓΑΣΙΑ vol E
« Reply #43 on: May 18, 2006, 18:31:24 pm »

Quote from: CyberCaesar on May 18, 2006, 02:45:31 am
Γεια σας παιδια!
Μπορει κανεις να μου πει πως βρισκεις το αθροισμα των στηλων?Εχω κολλησει....

CyberCaesar:
εγώ το βρήκα ως εξής(βέβαια δεν εχω καταφέρει να το τρέξω ακόμα για να δω αν είναι σωστό γιατί κολλάει αλλού το πρόγραμμα μου):

θεωρώντας διαφορα1 και διαφορα2 τις Di-Gi και Dj-Sj αντίστοιχα:

float *diafora1,*diafora2;
float d_g,d_s,sum_g=0,sum_s=0,diaforamin1,diaforamin2;
for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         if(i!=j) sum_g+=*(*(a+i)+j);
         else d_g=fabs(*(s+i)+j);
         *(diafora1+i)=d_g-sum_g;
      }
   }
   for(i=0;i<N;i++){
      for(j=0;j<N;j++){
         if(i!=j) sum_s+=*(*(a+i)+j);
              else d_s=fabs(*(s+i)+j);
         *(diafora2+i)=d_s-sum_s;
      }
   }
Logged

Faidon
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Gender: Male
Posts: 540



View Profile WWW
Re: ΕΡΓΑΣΙΑ vol E
« Reply #44 on: May 18, 2006, 22:51:39 pm »

Quote from: Nosferatu on May 18, 2006, 00:56:51 am
για οποιν ασχοληθει,εννοειται οτι στο post που εκανα ηθελα να γραψω matrix[j] και οχι matrix[j],sorry μου ξεφυγε

Επειδή το βλέπω να συμβαίνει όλη την ώρα. Εσύ καλά το έγραψες. Όταν όμως βάζεις το i ανάμεσα σε [] το πρόγραμμα του forum νομίζει ότι θες να χρησιμοποιήσεις italics. Και έτσι το [ i ] δεν εμφανίζεται και το κείμενο στη συνέχεια γίνεται italics. Για να μη γίνεται αυτό όταν θέλετε να γράψετε κάτι τέτοιο κάντε το όπως μόλις τώρα το έκανα. Δηλαδή αφήστε δύο κενά ανάμεσα στα []:

[(κενό)i(κενό)]=[ i ]

Τέλεια!!
Logged
Pages: 1 2 [3] 4 Go Up Print
Jump to:  

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