THMMY.gr

Μαθήματα Βασικού Κύκλου => Δομημένος Προγραμματισμός => Topic started by: png on May 04, 2010, 13:09:45 pm



Title: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: png on May 04, 2010, 13:09:45 pm
Hμ/νία λήξης δηλώσεων: 10/05/2010

 Εργασία Ε

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

Να γραφεί το πρόγραμμα το οποίο ορίζει τη συνάρτηση Rshort(…) η οποία ταξινομεί με μια recursive διαδικασία, κατά αύξουσα τιμή, έναν πίνακα ακεραίων αριθμών. Το πρόγραμμα αρχικά να ορίζει έναν πίνακα ακεραίων ο οποίος να έχει ως διάσταση τη χωρητικότητα του τηλεφωνικού κέντρου, να εισάγεί έναν αριθμό αρχικών εγγραφών στον πίνακα και καλεί τη συνάρτηση Rshort(…) για να τους ταξινομήσει. Στη συνέχεια να διαβάζει έναν αριθμό από εγγραφές που πρέπει να αφαιρεθούν από το σύστημα και να προβαίνει στη διαγραφή τους από τον πίνακα. Μετά το τέλος των διαγραφών ο πίνακας να ταξινομείται εκ νέου.  Τέλος το πρόγραμμα να εισάγει έναν αριθμό από νέες εγγραφές να τις καταχωρεί στον πίνακα και να εκτυπώνει ταξινομημένο τον νέο πίνακα.

Σημείωση: Για να γίνει οικονομία στις διαθέσιμες θέσεις του πίνακα οι αριθμοί που αφαιρούνται από το σύστημα να διαγράφονται από τον πίνακα ώστε οι θέσεις τους να είναι διαθέσιμες σε νέες εγγραφές.

500 posts!


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: dnitsos on May 05, 2010, 22:03:08 pm
Ερωτήσεις:

1)   ΛΕΕΙ: "Στη συνέχεια να διαβάζει έναν αριθμό από εγγραφές που πρέπει να αφαιρεθούν από το σύστημα και να προβαίνει στη διαγραφή τους από τον πίνακα"  τι σημαίνει αυτό? τυχαία οι διαγραφές ή να διαγραφούν τα τηλέφωνα υπαριθμων (κατα Α/Α) 8,10,100,6,105 κτλ

2)  ΛΕΕΙ: "Για να γίνει οικονομία στις διαθέσιμες θέσεις του πίνακα οι αριθμοί που αφαιρούνται από το σύστημα να διαγράφονται από τον πίνακα ώστε οι θέσεις τους να είναι διαθέσιμες σε νέες εγγραφές."  δηλαδή κενές θέσεις (πχ στις θέσεις αυτές το μηδέν) και ο πίνακας αθικτος με την διάσταση Νx1?


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: τσαι-borg on May 05, 2010, 22:16:37 pm
Απ'οσα καταλαβα
1)λογικα θα ρωτας τον χρηστη "ποιοιο αριθμοι να διαγραφουν?" και θα δινει α/α.
2)θα γραφεις τα καινουργια στις θεσεις αυτων που διεγραψες.


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: nikitas350 on May 05, 2010, 22:19:23 pm
Δεν νομίζω να εννοεί Α/Α καθώς ο Α/Α των εγγραφών αλλάζει σε κάθε προσθήκη εγγραφής (αφού ξαναταξινομείται ο πίνακας). Προφανώς εννοεί ότι δίνει το τηλέφωνο και το διαγράφεις. Ως αναφορά την διαγραφή πιστεύω ότι έχεις δίκιο.


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Neal on May 06, 2010, 00:08:31 am
Θα κάνεις πρώτα realloc αφότου βάλεις τις τιμές αυτές 0 και καλέσεις την Rshort() (η οποία θα βάλει αυτές τις τιμές στο τέλος), οπότε realloc(p,(N-x)*sizeof(int)), όπου x o αριθμός των εγγραφών που θα διαγραφούν.


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: nikitas350 on May 06, 2010, 00:28:44 am
Στην εκφώνηση λέει να ορίζουμε πίνακα με μέγεθος ίσο με τη χωρητικότητα του τηλεφωνικού κέντρου. Δλδ, στην αρχή θα έχει Ν 0 στοιχεία (άχρηστα). Αν ήταν να χρησιμοποιήσουμε dynamic memory γιατί μας λέει να ορίσουμε έναν πίνακα μεγέθους N αντί για χ όπου χ οι αρχικές εγγραφές που καταχωρούνται (και μετά να τον μεταβάλουμε ανάλογα με τις διαγραφές και τις πρόσθετες εγγραφες)? Νομίζω ότι η εκφώνηση προτείνει να χρησιμοποιήσουμε static memory.


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Neal on May 06, 2010, 11:05:57 am
Δε σου λέει πουθενά ότι ο αριθμός τον εγγραφών που θα διαγράψεις δεν μπορεί να είναι μικρότερος απ'τον αριθμό που τον εγγραφών που θα προσθέσεις. Και btw η εργασία E ανέκαθεν ήταν για recursive διαδικασία + malloc :P


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: nikitas350 on May 06, 2010, 13:20:17 pm
Και γιατί λέει να ορίσουμε στην αρχή ενα πίνακα με Ν στοιχεία?


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Neal on May 06, 2010, 15:01:42 pm
Γιατί πρέπει να έχεις αρχικά έναν πίνακα με κάποια στοιχεία..


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: spiounos on May 06, 2010, 20:31:55 pm
μια ερωτηση......οταν χρησιμοποιησω την realloc για να διαγραψω x αριθμους κλησεων
και θεσω ως καινουργιο μεγεθος του πινακα Ν-x ....θα αποδεσμευτουν απο την μνημη
τα x τελευταια κελια του πινακα??? :( :( :(............................ευχαριστω


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Neal on May 06, 2010, 21:50:38 pm
Δεσμεύει μνήμη από τη διεύθυνση που επέστρεψε η malloc για τόσα byte όσα έχουν δηλωθεί (εφόσον είναι μικρότερη μνήμη απ'την αρχικά δεσμευμένη). Άρα τα υπόλοιπα (τελευταία) μένουν αμανάτα..


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: leon-SPT on May 07, 2010, 11:59:50 am
Παιδιά ξέρει κανείς πως θα υλοποιήσουμε την συνάρτηση? Προσπαθώ να κάνω την ταξινόμηση φυσαλίδα με recursion αλλά δεν τα καταφέρνω.. Μήπως ξέρει κανένας καμιά άλλη λύση?


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Neal on May 07, 2010, 12:36:50 pm
Γιατί δεν τα καταφέρνεις;


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: nohponex on May 07, 2010, 17:11:03 pm
Παιδιά ξέρει κανείς πως θα υλοποιήσουμε την συνάρτηση? Προσπαθώ να κάνω την ταξινόμηση φυσαλίδα με recursion αλλά δεν τα καταφέρνω.. Μήπως ξέρει κανένας καμιά άλλη λύση?

με quick sort έκανα εγώ, recursion  με bubblesort πως έκανες ?


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: tzitzikas1 on May 09, 2010, 11:55:10 am
Παιδιά ξέρει κανείς πως θα υλοποιήσουμε την συνάρτηση? Προσπαθώ να κάνω την ταξινόμηση φυσαλίδα με recursion αλλά δεν τα καταφέρνω.. Μήπως ξέρει κανένας καμιά άλλη λύση?

με quick sort έκανα εγώ, recursion  με bubblesort πως έκανες ?

me bubble sort kai recursion προφανως δεν παίζει να γίνεται ε?
έχουμε κάνει quick sort?γιατί  για να μας το έβαλε  προφανώς θα έπρεπε να είχαμε κάνει?
με λίγο googling θα καταλάβω τι παίζει με την quick sort
?




Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: τσαι-borg on May 09, 2010, 12:38:34 pm
Παιδιά ξέρει κανείς πως θα υλοποιήσουμε την συνάρτηση? Προσπαθώ να κάνω την ταξινόμηση φυσαλίδα με recursion αλλά δεν τα καταφέρνω.. Μήπως ξέρει κανένας καμιά άλλη λύση?

με quick sort έκανα εγώ, recursion  με bubblesort πως έκανες ?

me bubble sort kai recursion προφανως δεν παίζει να γίνεται ε?
έχουμε κάνει quick sort?γιατί  για να μας το έβαλε  προφανώς θα έπρεπε να είχαμε κάνει?
με λίγο googling θα καταλάβω τι παίζει με την quick sort
?





δεν εχεις παρει βιβλιο δομημενου?
αν βρεις παντως το "C για μηχανικους" εχει παραδειγματα.


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: tzitzikas1 on May 09, 2010, 12:41:18 pm
Παιδιά ξέρει κανείς πως θα υλοποιήσουμε την συνάρτηση? Προσπαθώ να κάνω την ταξινόμηση φυσαλίδα με recursion αλλά δεν τα καταφέρνω.. Μήπως ξέρει κανένας καμιά άλλη λύση?

με quick sort έκανα εγώ, recursion  με bubblesort πως έκανες ?

me bubble sort kai recursion προφανως δεν παίζει να γίνεται ε?
έχουμε κάνει quick sort?γιατί  για να μας το έβαλε  προφανώς θα έπρεπε να είχαμε κάνει?
με λίγο googling θα καταλάβω τι παίζει με την quick sort
?





δεν εχεις παρει βιβλιο δομημενου?
αν βρεις παντως το "C για μηχανικους" εχει παραδειγματα.

πηρα το άλλο.
δλδ μόνο με quick sort γίνεται?
και εγώ θα έπρεπε να ξέρω την ξέρω?


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: τσαι-borg on May 09, 2010, 12:43:18 pm
τι να σου πω τωρα.
μας εκανε κατι σχετικα ο ντελοπουλος στο α εξαμηνο,και ισως να μας τα εκανε και ο κορτεσης την τεταρτη που ειχε καταληψη αλλα κατα κανονα πρεπει να ψαξεις μονος σου.
αντε,καλη λευτερια.


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Emfanever on May 09, 2010, 12:57:44 pm
γίνεται και με merge-sort αναδρομικά.

Αν θέλετε μπορώ να σας παραθέσω ψευδοκώδικα


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Neal on May 09, 2010, 13:34:06 pm
Γιατί δε βρίσκετε σε κάθε κλήση της συνάρτησης το max του πίνακα και να το βάζετε στην πρώτη θέση μετά απ'το max που βρήκατε στην προηγούμενη κλήση της συνάρτησης;


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: nikos912000 on May 09, 2010, 14:03:05 pm
Οι εγγραφές που θα αφαιρεθούν μπορεί να είναι οποιεσδήποτε ή αναγκαστικά οι τελευταίες (ν σε αριθμό που δίνει ο χρήστης) που προκύπτουν απ την ταξινόμηση?Γιατί αν ισχύει το 1ο είναι μπέρδεμα...θα χρειάζεται οι νέες εγγραφές να μπουν στις κενές θέσεις!... :D


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: nohponex on May 09, 2010, 15:25:47 pm
...

me bubble sort kai recursion προφανως δεν παίζει να γίνεται ε?
έχουμε κάνει quick sort?γιατί  για να μας το έβαλε  προφανώς θα έπρεπε να είχαμε κάνει?
με λίγο googling θα καταλάβω τι παίζει με την quick sort
?

Δεν ξερω αν έκανε τιποτα σχετικό αυτη τη βδομάδα ο Θωδορής στο μάθημα , κάποιος που ηταν στο μαθημα ας μας πει.

Για την quicksort εμένα με βοήθησε πολυ αυτή η σελίδα : http://www.doc.ic.ac.uk/~wjk/C++Intro/RobMillerL8.html  (Παράγραφος 8.7)
Εξηγεί καλά το πως γίνεται η διαδικασία κτλπ , ψάξε και άλλες σελίδες πάντως για να δεις .


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: sofigami on May 09, 2010, 19:25:20 pm
Τις βάζεις στο τέλος και μετά τις αφαιρείς..


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Lampros on May 09, 2010, 20:27:36 pm
Όταν λέει να εισάγει έναν αριθμό αρχικών εγγραφών στον πίνακα,εννοεί οτι ο χρήστης θα εισάγει ένα ένα τα τηλέφωνα;Αρα θα πρέπει πρώτα να δώσει και πόσες εγγραφές θα κάνει;

Το ίδιο και όταν θα τα διαγράφει;


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Orfikoss on May 09, 2010, 21:03:44 pm
ναι και ναι


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: The Stig on May 10, 2010, 01:50:08 am
Θα κάνεις πρώτα realloc αφότου βάλεις τις τιμές αυτές 0 και καλέσεις την Rshort() (η οποία θα βάλει αυτές τις τιμές στο τέλος), οπότε realloc(p,(N-x)*sizeof(int)), όπου x o αριθμός των εγγραφών που θα διαγραφούν.
Μα πώς η rshort τις βάζει στο τέλος αφού κάνει αύξουσα ταξινόμηση???


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: kickass on May 10, 2010, 05:25:05 am
mallon den tis vazei...  :o .. re paidia, mporei kapios na m eksigisei, an emeis tha diavasoume to plithos aftwn p tha diaxrafoun mono, i kai poioi tha einai aftoi?? p.x. theseis tou pinaka..


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: The Stig on May 10, 2010, 11:15:00 am
Θα διαβάσεις ποιοι θα είναι αυτοί, θα τους μετράς θα τους βάζεις στο τέλος και θα τους αφαιρείς. Πώς να ορίσω τους αριθμούς αφού Int δε γίνεται? Float, double ή Long unsigned int??


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Orfikoss on May 10, 2010, 11:24:31 am
Όσο το έψαξα,δεν κάνει τίποτα. Λογικά θα έπρεπε να δημιουργήσουμε μόνοι μας τύπο δεδομένου, αλλά δεν το ξέρουμε οπότε int.
Εξάλλου η εκφώνηση λέει πίνακα ακεραίων...


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: The Stig on May 10, 2010, 11:28:28 am
Ναι αλλά με Int αν πάω να κάνω προσομοίωση (δηλαδή αριθμούς με 10 ψηφία) δεν δουλεύει ενώ με ακέραιους μικρού μήκους δουλεύει... Btw ταξινόμηση έκανα bubblesort.


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: τσαι-borg on May 10, 2010, 11:52:24 am
το λογικο ειναι να βαλουμε long.
πως εκανες recursion στην Bubblesort?
δεν νομιζω πως γινεται βασικα,δηλαδη γιατι να την ξανακαλεσεις ?


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: leon-SPT on May 10, 2010, 12:09:02 pm
Εχω το εξής πρόβλημα. Οταν τρεχω το πρόγραμμα, με το που διαβάζει κάτι νούμερα, μου πετάει εκείνο το μίζερο παράθυερο των Windows που λέει ‘Να μην αποσταλεί‘... Το χει συναντήσει κανείς άλλος?


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Lampros on May 10, 2010, 12:25:44 pm
Πως στέλνουμε τον πίνακα στη συνάρτηση; " *(όνομα πίνακα) " <--- έτσι;


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: raf on May 10, 2010, 13:30:11 pm
Μήπως μπορεί να μου εξηγήσει κάποιος πως λειτουργεί μια διαδικασία recursive γιατί έχω μπερδευτεί λιγάκι :(


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Lampros on May 10, 2010, 13:31:43 pm
και κάτι ακόμα.Πως στο διάολο θα γίνει η ταξινόμηση;και πως σκατά γίνεται αυτή η recursive διαδικασία;


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Burlitsa on May 10, 2010, 13:51:24 pm
Από σημειώσεις Κορτέση:

Οι συναρτήσεις στη C μπορούν να καλέσουν τον εαυτό τους. Μία συνάρτηση εί-
ναι recursive, αν μία εντολή στο σώμα της καλεί την ίδια τη συνάρτηση. Η έξοδος α-
πό τη συνάρτηση επαναφέρει τον έλεγχο στην προηγούμενη κλήση της. Η διαδικασία
αυτή μπορεί να φανεί πολύ χρήσιμη στη σύνταξη δομημένων προγραμμάτων και
προγραμμάτων που υλοποιούν αλγορίθμους συνδυαστικής.


Από site:

Another familiar mathematical example of a recursive function is the factorial function "!". Its definition is:
0! = 1


for all n > 0, n! = nx(n-1)!



Thus, by repeatedly using the definition, we can work out that
6! = 6x5! = 6x5x4! = 6x5x4x3! = 6x5x4x3x2! = 6x5x4x3x2x1! = 6x5x4x3x2x1x1 = 720

Again, notice that the definition of "!" includes both a base case (the definition of 0!) and a recursive part.

αυτό το παράδειγμα ελπίζω να σε βοηθήσει στο γιατί υπάρχει η recursive....

και πως σκατά γίνεται αυτή η recursive διαδικασία;

Σημειώσεις Κορτέση κ πάλι:
Παράδειγμα
void ff(int l);
int r = 1,t,k;
void main()
{
  int n;
  scanf("%d %d",&k,&n);
  ff(n);
  printf("%d\n",r);
}
void ff(int l)
{ t = r*k;
  if (t < l){
    r = t;
    ff(l);
  }
}


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Burlitsa on May 10, 2010, 13:57:27 pm
ελπίζω να μην σας μπέρδεψα περισσότερο  :???:

έχω και εγώ ερωτησούλες γιατί δεν έχω δουλέψει με malloc η realcoll

1α ποια να χρησιμοποιήσω, ποιά η διαφορά?
2ο όταν λέει να διαγράψουμε δεν καταλαβαίνω τι εννοεί.....

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


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Lampros on May 10, 2010, 14:01:25 pm
Τις σημειώσεις του Κορτέση τις έχω κ εγώ.Αλλά δεν βοηθάνε και πολύ.

Εγώ έκανα και μαλοκ και ρεαλοκ.πρώτα μαλοκ για να δημιουργήσεις τον πίνακα,δεν χρειάζεται define απλώς γράφεις όνομα_πίνακα=(int*)malloc(N*sizeof(int));
Mετά μπορείς να κάνεις αυτό που είπε ο Neal στην 1η σελίδα,για να διαγράψεις τις εγγραφές


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: provataki on May 10, 2010, 14:31:33 pm
για να ξεκαθαρισετε τη χρηση της malloc/realloc, κατεβαστε το πρωτο σετ λυμενων ασκησεων(βασικες εννοιες δομημενου) απο το μαθημα προγραμματιστηκες τεχνικες 3ου εξαμηνου στο ethmmy.


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Burlitsa on May 10, 2010, 15:44:45 pm
για κάποιο λόγο δεν ανοίγει το αρχείο....


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Burlitsa on May 10, 2010, 16:10:37 pm
Τις σημειώσεις του Κορτέση τις έχω κ εγώ.Αλλά δεν βοηθάνε και πολύ.

Εγώ έκανα και μαλοκ και ρεαλοκ.πρώτα μαλοκ για να δημιουργήσεις τον πίνακα,δεν χρειάζεται define απλώς γράφεις όνομα_πίνακα=(int*)malloc(N*sizeof(int));
Mετά μπορείς να κάνεις αυτό που είπε ο Neal στην 1η σελίδα,για να διαγράψεις τις εγγραφές

με βοηθάς λίγο παραπάνω?

αν Α ο πίνακας με τους αριθμούς ο οποίος είναι long πως το δηλώνω στην αρχή?


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: nohponex on May 10, 2010, 16:14:00 pm
...

αν Α ο πίνακας με τους αριθμούς ο οποίος είναι long πως το δηλώνω στην αρχή?

long *A= (long *)malloc(N * sizeof(long));



Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: yiannis on May 10, 2010, 16:47:49 pm
ρε παιδια εχω προβλημα στην υλοποιηση της συναρτησης μπορει να με βοηθησει καποιος που την εκανε;;;;;;ευχαριστω


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Burlitsa on May 10, 2010, 17:06:03 pm
ρε παιδια εχω προβλημα στην υλοποιηση της συναρτησης μπορει να με βοηθησει καποιος που την εκανε;;;;;;ευχαριστω

+1 κάποια βοήθεια γιατί τα βρήκα λίγο σκούρα  :-\


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: leon-SPT on May 10, 2010, 17:15:59 pm
Εγώ πάντως βρήκα κάτι απο ιντερνετ για την ταξινόμηση με recursive. http://www.inf.fh-flensburg.de/lang/algorithmen/sortieren/quick/quicken.htm           Ελπίζω να κάνει.
Α και μήπως ξέρετε γιατί όταν τρέχω το πρόγραμμα, τρέχει κανονικά και σε ένα σημείο μου πετάει το παράθυρο για σφαλμα που λεει ‘να μην αποσταλεί‘. Ξέρει κανείς τί παίζει?


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Burlitsa on May 10, 2010, 17:23:31 pm
 :-\


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Orfikoss on May 10, 2010, 17:29:29 pm
το λογικο ειναι να βαλουμε long.
Οι long και οι int δεν έχουν καμία διαφορά, και οι δυο έχουν 4 byte.
Αν δεν με πιστεύεις βάλε
Code:
printf("%d %d",sizeof(int),sizeof(long));
να δεις


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: kakashi on May 10, 2010, 19:02:46 pm
...

αν Α ο πίνακας με τους αριθμούς ο οποίος είναι long πως το δηλώνω στην αρχή?

long *A= (long *)malloc(N * sizeof(long));



Και σε αυή την περίπτωση πως δηλώνεις τον πίνακα αρχικά;
Έτσι long A[]; ?


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Burlitsa on May 10, 2010, 19:08:20 pm
...

αν Α ο πίνακας με τους αριθμούς ο οποίος είναι long πως το δηλώνω στην αρχή?

long *A= (long *)malloc(N * sizeof(long));



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

int ..........;
long *A...........;

Και σε αυή την περίπτωση πως δηλώνεις τον πίνακα αρχικά;
Έτσι long A[]; ?


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: τσαι-borg on May 10, 2010, 19:18:11 pm
το long δεν ειναι τυπος δεδομενων,ειναι τροποποιητης.
δεν μπορεις να γραψεις δηλαδη σκετο long,αν θες γραψε long int.


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Burlitsa on May 10, 2010, 19:24:13 pm
το long δεν ειναι τυπος δεδομενων,ειναι τροποποιητης.
δεν μπορεις να γραψεις δηλαδη σκετο long,αν θες γραψε long int.

    Κατά τη δήλωση ενός ακέραιου ως short ή ως long δεν είναι απαραίτητο να γρα-
φεί και η λέξη int. Ακόμη μπορεί να υπάρχουν και σύνθετες δηλώσεις τύπου όπως
π.χ.
    unsigned long int k;
                                       6


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Burlitsa on May 10, 2010, 20:03:13 pm
Quicksort apo C gia mixanikous

http://i144.photobucket.com/albums/r187/Burlitsa/Cansi/1-4.jpg
http://i144.photobucket.com/albums/r187/Burlitsa/Cansi/2-2.jpg
http://i144.photobucket.com/albums/r187/Burlitsa/Cansi/3.jpg
http://i144.photobucket.com/albums/r187/Burlitsa/Cansi/5.jpg
http://i144.photobucket.com/albums/r187/Burlitsa/Cansi/6.jpg
http://i144.photobucket.com/albums/r187/Burlitsa/Cansi/7.jpg


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: τσαι-borg on May 10, 2010, 20:05:01 pm
κ εγω αυτην αντεγραψα,αλλα ειτε ειμαι εγω καθυστερημενο,ειτε κατι δεν παει καλα μ αυτη,γιατι δεν κανει αυτο που θελω.
την δοκιμασεις και σου τρεχει κανονικα?


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Lampros on May 10, 2010, 20:15:11 pm
Πως στέλνουμε τον πίνακα στη συνάρτηση;Με αστεράκι και το όνομα; (π.χ. Rshort(*A))
και στη συνάρτηση θα είναι: void Rshort (int A) ? Ή ανάποδα τα λέω;


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Burlitsa on May 10, 2010, 20:17:30 pm
Πως στέλνουμε τον πίνακα στη συνάρτηση;Με αστεράκι και το όνομα; (π.χ. Rshort(*A))
και στη συνάρτηση θα είναι: void Rshort (int A) ? Ή ανάποδα τα λέω;

nomizw thn stelneis A[] kai sthn synarthsh einai  long A,....


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: il capitano on May 10, 2010, 20:22:56 pm
Θες να κανεις κληση με αναφορα του πινακα για να μπορεις να αλλαξεις την σειρα των στοιχειων του,οποτε στην δηλωση γραφεις Rshort(int *A),και οταν τον καλεις Rshort(A)


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: kakashi on May 10, 2010, 20:45:47 pm
...

αν Α ο πίνακας με τους αριθμούς ο οποίος είναι long πως το δηλώνω στην αρχή?

long *A= (long *)malloc(N * sizeof(long));




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

int ..........;
long *A...........;

Και σε αυή την περίπτωση πως δηλώνεις τον πίνακα αρχικά;
Έτσι long A[]; ?

Ο κώδικας μου στην αρχή είναι

 int i,,j,N.......;

    printf("Αριθμός εγγραφών.\n\n");
    scanf("%d",&N);

    int *A=(int*)malloc(N*sizeof(int));

Και μου βγάζει error ο borland :"Declaration is not allowed here."
Τι κάνω λάθος;
Τον πίνακα Α δεν τον δηλώνω αρχικά στις μεταβλητές int.


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Neal on May 10, 2010, 21:48:50 pm
Πρέπει να δηλώσεις τον *Α στην αρχή.


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Burlitsa on May 11, 2010, 00:10:32 am
Οταν διαβαζω ενα τηλεφωνο δηλδ 10 αριθμους σταματα το προγραμμα και γραφει Segmentation fault


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Neal on May 11, 2010, 00:14:53 am
Πας να το αποθηκεύσεις σε μεταβλητή που δεσμεύτηκε για λιγότερο από 10 αριθμούς, int να φανταστώ;


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Burlitsa on May 11, 2010, 00:15:54 am
λονγκ


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Neal on May 11, 2010, 00:23:54 am
Έστω και unsigned long να χρησιμοποιείς αυτός φτάνει μέχρι 4294967295 < 69*

double it


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Burlitsa on May 11, 2010, 00:41:17 am
to double me ti simbolizetai %?


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Neal on May 11, 2010, 00:49:06 am
%f %g %e

βάλε g αφού θα είναι πρακτικά ακέραιος


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Burlitsa on May 11, 2010, 01:16:05 am
den fteei auto :( dokimasa na balw kai long double kai meta skeftika na dokimasw mikrous ari8mous kai pali ebgale Segmentation fault


Εισάγεται αριθμό εγγραφών και μετά τους αριθμούς.
3
1
2
3
Segmentation fault


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Sage on May 11, 2010, 01:36:54 am
Μιλάμε.. εκεί που λέει:
"Στη συνέχεια να διαβάζει έναν αριθμό από εγγραφές που πρέπει να αφαιρεθούν από το σύστημα και να προβαίνει στη διαγραφή τους από τον πίνακα."
δεν καταλαβαίνω καθόλου πως ζητάει να το κάνουμε...!!!?
Θα ζητάμε απο τον χρήστη να μας δώσει εναν αριθμο που θα πρεπει να διαγραφει απο τον πινακα.. και μετα θα συγκρινουμε να τον βρουμε στον πινακα και να τον διαγραψουμε..?
ή
Θα μας δίνει το πλήθος τον αριθμών που πρεπει να διαγραφούν και μεταααααά.. θα κανουμε την παραπάνω διαδικασία..?
 :???:


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: nohponex on May 11, 2010, 02:19:58 am
Θα μας δίνει το πλήθος τον αριθμών που πρεπει να διαγραφούν και μεταααααά.. θα κανουμε την παραπάνω διαδικασία
8))


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: pepe on May 11, 2010, 02:30:01 am
Ξέρει κανείς πώς μπορώ να κάνω τα αποτελέσματά μου... κανονικούς αριθμούς;;; δηλαδή εκείνα τα 1.657Ε-324 κτλ κτλ να τα κάνω αριθμούς στο δεκαδικό για να ξέρω να συγκρίνω τα αποτελέσματα;;


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Neal on May 11, 2010, 10:53:41 am
den fteei auto :( dokimasa na balw kai long double kai meta skeftika na dokimasw mikrous ari8mous kai pali ebgale Segmentation fault


Εισάγεται αριθμό εγγραφών και μετά τους αριθμούς.
3
1
2
3
Segmentation fault


Έλεγξε το loop σου, δίνεις παραπάνω στοιχεία στον πίνακα απ'το μέγεθός του.

Ξέρει κανείς πώς μπορώ να κάνω τα αποτελέσματά μου... κανονικούς αριθμούς;;; δηλαδή εκείνα τα 1.657Ε-324 κτλ κτλ να τα κάνω αριθμούς στο δεκαδικό για να ξέρω να συγκρίνω τα αποτελέσματα;;

Χρησιμοποίησε %g για έξοδο.


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: pepe on May 11, 2010, 11:43:55 am
Ξέρει κανείς πώς μπορώ να κάνω τα αποτελέσματά μου... κανονικούς αριθμούς;;; δηλαδή εκείνα τα 1.657Ε-324 κτλ κτλ να τα κάνω αριθμούς στο δεκαδικό για να ξέρω να συγκρίνω τα αποτελέσματα;;
Χρησιμοποίησε %g για έξοδο.
%g έχω...Έκανα κι αυτόν τον κώδικα για δοκιμή(για να ξέρω ότι δεν κάνω κάτι λάθος στο πρόγραμμά μου):
Code:
#include <stdio.h>
int main()
{
    double a;
    scanf("%g",&a);
    printf("a=%g",a);
}
και βάζοντας τον αριθμό π.χ. 1234567890 μου εκτυπώνει 3,349ε+265.
Βέβαια την έστειλα την εργασία, οπότε δεν υπάρχει θέμα, αλλά έχω καεί γ@μώτο για να δω πώς γίνεται...


Title: Re: [Δομημένος Πρ.] Εργασια Ε 09/10
Post by: Neal on May 11, 2010, 14:53:07 pm
scanf %lg
printf %lg