Title: [Δομημένος Προγραμματισμός] Aπορίες Post by: evageliav on August 03, 2008, 20:23:17 pm Να ρωτήσω άτι σχετικά με τον ορισμό των μεταωλητών στη C, στο φυλλάδιο του Κορτέση λέει (σελ 7) οτι μπορούμε με τρεις τρόπους να ορίσουμε μεταβλητές,ο δεύτερος
β) στο εσωτερικό των παρενθέσεων όπου γράφονται τα ορίσματα των συναρτήσεων .Δηλαδή γίνεται να μην ορίσουμε κάτι που βάζουμε ως παράμετρο μέσα στην παρένθεση; Title: Re: Aπορίες Post by: Emfanever on August 03, 2008, 23:42:44 pm Τι εννοείς να μην ορίσουμε?? Πάντα πρέπει να γράφεις τον τύπο της μεταβλητής
Title: Re: Aπορίες Post by: Guybrush on August 04, 2008, 00:06:58 am Έστω η συνάρτηση function()
μπορείς να πεις function(int kati, int[] matrix){ //Σώμα } και το kati πχ να είναι πρωτοεμφανιζόμενο Title: Re: Aπορίες Post by: evageliav on August 04, 2008, 16:11:44 pm Έστω η συνάρτηση function() μπορείς να πεις function(int kati, int[] matrix){ //Σώμα } και το kati πχ να είναι πρωτοεμφανιζόμενο Ok Ευχαριστώ! Title: Ερώτηση σχετικά με τα ορίσματα μιας συνάρτησης Post by: evageliav on August 05, 2008, 13:25:17 pm Αν έχουμε τη main και μια άλλη συνάρτηση που την καλούμε μέσα στη main σ'αυτήν ως ορίσματα στις παρανθέσεις θα βάλουμε οτι δέχεται ως παράμετρο " να το επεξεργαστεί " και να κάνει κάτι μ'αυτό ή και οτι επιστρέφει στη main;
Title: Re: Aπορίες Post by: Guybrush on August 05, 2008, 13:44:40 pm Η συνάρτηση που καλείται, έστω function(), θα δεχτεί τα ορίσματά της και θα επιστρέψει (εάν επιστρέψει) με return το αποτέλεσμα της εκτέλεσής της
int function(int arg1, float arg2); Mε κόκκινο το είδος του αποτελέσματός της (void εάν δεν επιστρέφει) και με πράσινο τα ορίσματά της Title: Re: Aπορίες Post by: fourier on August 05, 2008, 13:51:13 pm Μια ερωτηση-ενσταση:
στο παραδειγμα σου, η μεν συναρτηση "function" επιστρεφει μια τιμη οπως ειπες, αλλα η main την αφηνει στον αερα, ετσι δεν ειναι? Δεν θα επρεπε να κανεις κληση ως εξης: m = function(μπλα, μπλα); οπου m μεταβλητη ιδιου τυπου με το αποτελεσμα που δινει η function? Title: Re: Aπορίες Post by: Guybrush on August 05, 2008, 14:13:15 pm ναι, έχεις δίκιο, προφανώς πρέπει το αποτέλεσμα να ανατεθεί σε μία μεταβλητή.
Απλά επειδή δεν ήξερα τι να την κάνω μέσα στη main(), την παράτησα στο έλεος του Θεού Title: Re: [Δομημένος Προγραμματισμός] Aπορίες Post by: Matzika on August 12, 2008, 13:47:57 pm γιατί να τη βάλεις απαραίτητα σε μία μεταβλητή...?αναλόγως τι ζητάει η άσκηση...
πχ αν θες να επεξεργαστεις μετα στη main αυτό που επιστρέφει η συνάρτηση ναι οκ την εξισώνεις με μία μεταβλητή όμως αν θες απλά να εκτυπώσεις το αποτέλεσμα που σ δίνει η function τότε κατι τέτοιο δεν είναι αναγκαίο... έτσι δε είναι? Title: Re: [Δομημένος Προγραμματισμός] Aπορίες Post by: Emfanever on August 12, 2008, 15:08:01 pm γιατί να τη βάλεις απαραίτητα σε μία μεταβλητή...?αναλόγως τι ζητάει η άσκηση... Σωστάπχ αν θες να επεξεργαστεις μετα στη main αυτό που επιστρέφει η συνάρτηση ναι οκ την εξισώνεις με μία μεταβλητή όμως αν θες απλά να εκτυπώσεις το αποτέλεσμα που σ δίνει η function τότε κατι τέτοιο δεν είναι αναγκαίο... έτσι δε είναι? Title: Re: [Δομημένος Προγραμματισμός] Aπορίες Post by: Matzika on August 13, 2008, 20:00:00 pm να κανω μια απορία γενικού τύπου για όσους χρησιμοποιούν το compiler dev..σας εμφανίζει μήπως πρόβλημα με την εισαγωγή χαρακτήρων????γιατί πχ αν έχω μια μεταβλητή char για να μ δώσει ο χρήστης Υ ή Ν το πρόγραμμα μ κολλάει(μ τρέχει αλλά μ κολλάει)..ενώ αν πχ αντικαταστήσω με 0 και 1 τρέχει κανονικα...ξερει κανεις γιατί γίνεται αυτό?
Title: Re: [Δομημένος Προγραμματισμός] Aπορίες Post by: vasso on August 13, 2008, 20:07:16 pm δώσε λίγο κώδικα..
Title: Re: [Δομημένος Προγραμματισμός] Aπορίες Post by: Matzika on August 13, 2008, 20:14:37 pm μηπως θες prive? ;) 8)
px int main(){ char answer,proorismos; printf ("thes na pas taxidi?\n"); scanf("%c",&answer);//dineis i Y i N printf("pou thes na pas?\n"); scanf("%c",&proorismos);//dineis E gia ellada kai I gia italia ktl..... m kollaei otan to trexw.. :-[ Title: Re: [Δομημένος Προγραμματισμός] Aπορίες Post by: Emfanever on August 13, 2008, 21:26:59 pm m kollaei otan to trexw.. :-[ Σε ποιο ακριβώς σημείο σου κολλάει? Στείλε όλο τον κώδικα Title: Re: [Δομημένος Προγραμματισμός] Aπορίες Post by: Emfanever on August 13, 2008, 21:43:53 pm Α θυμήθηκα! Το πρόβλημα δημιουργείται μάλλον, όταν πατάς enter. Επειδή το enter είναι χαρακτήρας αποθηκεύεται στην επόμενη μεταβλητή char.
Δηλαδή , στο παράδειγμα αυτό. Έστω πατάς Y και μετά enter. Τότε το enter αποθηκεύεται στη μεταβλητή proorismos, άρα το πρόγραμμα προχωράει παρακάτω. Βάλε πριν τα scanf την εντολή fflush(stdin); για να καθαρίζεται κάθε φορά το κανάλι εισόδου. Ή μπορείς να αφήνεις ένα κενό πριν το %c ,δηλαδή : scanf(" %c",&proorismos); Title: Re: [Δομημένος Προγραμματισμός] Aπορίες Post by: Γιώργος on August 13, 2008, 21:52:47 pm Εμένα πάντως ποτέ δεν μου δούλεψε η ρημάδα η fflush. :P
Απωθημένο το 'χω να τη δω να δουλεύει! :D Εγώ συνήθως βάζω ένα while(getchar()!='\n'); ή κάτι τέτοιο για να καθαρίσει. Title: Re: [Δομημένος Προγραμματισμός] Aπορίες Post by: Emfanever on August 13, 2008, 21:56:40 pm Εμένα στο borland δουλεύει το fflush! Απότι θυμάμαι πάντως, ο Κορτέσης είπε καλύτερα να κάνουμε τη μαγκιά με το κενό πριν από το %c!
Title: Re: [Δομημένος Προγραμματισμός] Aπορίες Post by: rooney4 on August 13, 2008, 22:18:22 pm Επίσης αν θές να διαβάζεις απλά και μόνο έναν χαρακτήρα, καλή λύση αποτελεί και η συνάρτηση getchar.
Συντάσσεται ως εξής: x=getchar() ,όπου x η μεταβλητή στην οποία αποθηκεύεις την επιλογή του χρήστη... Ελπίζω να βοήθησα... ;) Title: Re: [Δομημένος Προγραμματισμός] Aπορίες Post by: dimvam on August 13, 2008, 23:35:25 pm Εμένα στο borland δουλεύει το fflush! Απότι θυμάμαι πάντως, ο Κορτέσης είπε καλύτερα να κάνουμε τη μαγκιά με το κενό πριν από το %c! Αντιθέτως! Τον είχα ρωτήσει και είπε πως δε δουλεύει πάντα το μπακαλίστικο κενό, και είπε να βάζουμε καλύτερα fflush. Τώρα πόσο δουλεύει και η fflush άλλο θέμα! Title: Re: [Δομημένος Προγραμματισμός] Aπορίες Post by: rooney4 on August 14, 2008, 11:47:03 am Α κι αν δε δουλεύει τίποτα από τα 2, μπορείς να βάλεις και μια κενή scanf που θα "απορροφά" τον χαρακτήρα enter... ;)
Title: Re: [Δομημένος Προγραμματισμός] Aπορίες Post by: Matzika on August 14, 2008, 13:21:01 pm Ευχαριστώ πολύ παιδια!!
Title: Απορία για τις μεταβλητές "αληθείας" Post by: evageliav on August 23, 2008, 18:55:36 pm Οι μεταβλητές τύπου bool έχουν την ίδια λειτουργία με τα flags ,έτσι νομίζω τουλαχιστον σε όσα προγράμματα τα έχω δει αν και οι flags είναι ακέραιες μεταβλητές,και οι άλλες boolean χρησιμοποιούνται για τον ίδιο σκοπό,ως μεταβλητές ελέγχου αληθείας.Ας επιβεβαιώσει κάποιος.......
Title: Re: [Δομημένος Προγραμματισμός] Aπορίες Post by: Mendoza on August 23, 2008, 19:02:09 pm Οι μεταβλητές τύπου bool έχουν την ίδια λειτουργία με τα flags ,έτσι νομίζω τουλαχιστον σε όσα προγράμματα τα έχω δει αν και οι flags είναι ακέραιες μεταβλητές,και οι άλλες boolean χρησιμοποιούνται για τον ίδιο σκοπό,ως μεταβλητές ελέγχου αληθείας.Ας επιβεβαιώσει κάποιος....... =True;Title: Re: [Δομημένος Προγραμματισμός] Aπορίες Post by: evageliav on August 24, 2008, 14:35:50 pm Code: #include <stdio.h> Έχω την απορία γιατί σε αυτό το παράδειγμα στη fseek ως δεύτερο όρισμα έχει 0 ,δηλαδή μετακινεί το δείκτη θέσης,στην αρχή αλλά κατά 0 bytes;;;;; Αφού το δεύτερο όρισμα αυτο δείχνει,το εύρος της μετακίνησης σε bytes. Είναι το 27α παράδειγμα του κ.Κορτέση. Title: Re: [Δομημένος Προγραμματισμός] Aπορίες Post by: Emfanever on August 24, 2008, 18:27:08 pm Code: #include <stdio.h> Έχω την απορία γιατί σε αυτό το παράδειγμα στη fseek ως δεύτερο όρισμα έχει 0 ,δηλαδή μετακινεί το δείκτη θέσης,στην αρχή αλλά κατά 0 bytes;;;;; Αφού το δεύτερο όρισμα αυτο δείχνει,το εύρος της μετακίνησης σε bytes. Είναι το 27α παράδειγμα του κ.Κορτέση. fseek(fp,0,SEEK_SET); Το SEEK_SET σημαίνει ότι ο δείκτης θα μετακινηθεί 0 bytes από την αρχή. Στη θέση του SEEK_SET μπορείς να βάλεις SEEK_END ή SEEK_CUR που σημαίνει ότι θα κινηθεί τάδε (στην περίπτωση αυτή 0) bytes από το τέλος και την τρέχουσα θέση αντίστοιχα. Εσένα η απορία σου ποια είναι ακριβώς? Γιατί βάζει το μηδέν? Το βάζει γιατί θέλει να πάει 0 Bytes από την αρχή (SEEK_SET) δηλαδή στην αρχή του αρχείου. Η ίδια δουλειά μπορεί να γίνει με rewind(fp); |