Τα πάντα για την C

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό stamatiou » 28 Ιαν 2012, 19:18

Χίλια ευχαριστώ!
Επίσης, μπορώ να κάνω μια λίστα που αν κλείσω το πρόγραμμα και μετά το ξανανοίξω να διατηρεί τα δεδομένα της;
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 28 Ιαν 2012, 21:13

stamatiou έγραψε:Χίλια ευχαριστώ!
Επίσης, μπορώ να κάνω μια λίστα που αν κλείσω το πρόγραμμα και μετά το ξανανοίξω να διατηρεί τα δεδομένα της;


Ναι. Αν σαν δεδομενα εννοεις αυτα που θα ορισεις εξαρχης εσυ ως προγραμματιστης :D
Και οχι τα δεδομενα που θα εδινες πχ σαν χρηστης (αυτο μπορει και να υπαρχει αλλα δεν το γνωριζω εγω προς το παρον)

Κώδικας: Επιλογή όλων

#include<stdio.h>

int main()

{

const int x=5;

printf("%d",x);

return 0;
}


Εδω η τιμή του 5 αν παει να αλλαχθεί απο σένα θα σου κτυπήσει ο μεταγλωτιστης εφοσον
χρησιμοποιεις το keyword const.

To αντιστοιχο στην Java ειναι το final. Για λιγο που την ειδα και αυτη -.-
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 28 Ιαν 2012, 21:19

migf1 έγραψε:Όχι, οφείλεται στο line-buffering που χρησιμοποιούν όλες οι στάνταρ συναρτήσεις εισόδου της C. Σου έχω δώσει όμως ήδη 2 τρόπους να διαβάζεις ότι θες από την κύρια είσοδο χωρίς να χρησιμοποιείς την getchar, γιατί έχεις κολλήσει σε αυτήν; Ξεκόλλα από την getchar (και από την scanf ;)


Α! Στις εικονες που εδωσα απο το τσατ τον ρωταω αν ισχυει αυτο και μου λεει οχι. Ισως δεν καταλαβα καλα τα αγγλικα που μου ειπε... γιατι του λεω.... will elaborate only when a user push enter? Και μου κανει οχι λεει ειναι θεμα δικου σου περιβαλλοντος :S
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό stamatiou » 28 Ιαν 2012, 21:36

Star_Light έγραψε:
migf1 έγραψε:Όχι, οφείλεται στο line-buffering που χρησιμοποιούν όλες οι στάνταρ συναρτήσεις εισόδου της C. Σου έχω δώσει όμως ήδη 2 τρόπους να διαβάζεις ότι θες από την κύρια είσοδο χωρίς να χρησιμοποιείς την getchar, γιατί έχεις κολλήσει σε αυτήν; Ξεκόλλα από την getchar (και από την scanf ;)


Α! Στις εικονες που εδωσα απο το τσατ τον ρωταω αν ισχυει αυτο και μου λεει οχι. Ισως δεν καταλαβα καλα τα αγγλικα που μου ειπε... γιατι του λεω.... will elaborate only when a user push enter? Και μου κανει οχι λεει ειναι θεμα δικου σου περιβαλλοντος :S

Μήπως εννοεί ότι εξαρτάται από το Λειτουργικό σου σύστημα;
Προσπαθώ να φτιάξω ένα προγραμμα για να ταξινόμησω τη βιβλιοθήκη μου και θέλω ο χρήστης να εισάγει τίτλο κλπ και όταν ξαναναοικει το προγραμμα να διατηρεί τα βιβλία που έχουν εισαχθεί...
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 28 Ιαν 2012, 21:52

stamatiou έγραψε:
Μήπως εννοεί ότι εξαρτάται από το Λειτουργικό σου σύστημα;
Προσπαθώ να φτιάξω ένα προγραμμα για να ταξινόμησω τη βιβλιοθήκη μου και θέλω ο χρήστης να εισάγει τίτλο κλπ και όταν ξαναναοικει το προγραμμα να διατηρεί τα βιβλία που έχουν εισαχθεί...


Αυτοι βασικα μου ειπαν πως δεν ειναι προβλημα της ιδιας της γλωσσας αυτο καθως οπως ξεκαθαρα λενε δεν ειναι part της C το line buffer. Πανω - κατω ειναι τα ιδια που εχει πει και ο migf1 απλα ο migf1 εχει πει επισης πως η επεξεργασια ξεκινα μολις πατησεις το εντερ απο τις συναρτησεις πχ την getchar κτλπ και αυτοι σαν να ειπαν οχι σε αυτο αν και δεν νομιζω μαλλον δεν θα καταλαβαν καλα τι τους ελεγα.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 29 Ιαν 2012, 03:12

Τελοςπαντων... για να μην ξαναδίνω τον κώδικα επειδη του έχω κανει μονο μια πολυ μικρη τροποποίηση

θα τον δώσω στο ideone . Ακομη δεν έχω καταφέρει να φτιάξω την είσοδο απο τον χρήστη παρολαυτα ειναι μια καλή αρχη.
Πιο συγκεριμένα βέβαια το όριο της εισόδου απο τον χρήστη. Γιατι η εισοδος δινεται κανονικα απο δαύτον αλλα προκαθορισμενα για 10 μονο στοιχεια. -.-

Τα loops μονος μου τα έφτιαξα δεν τα πηρα έτοιμα οπως και την γενικοτερη συναρτηση... τον δούλεψα στο χαρτί πρωτα (αυτο το λέω για να με χειροκροτήσετε ειναι μέγα κατορθωμα) :lol: :lol:

τελοςπαντων ιδου μαζι με ενα input το αριστουγημα μου

http://ideone.com/VTOOP

ενα σημείο προσοχης για μενα οπως εχω βαλει και στο σχολιο ειναι το οτι ο πίνακας περνάει σαν δείκτης μεσα στην συνάρτηση (νομιζω δεν υπάρχει αλλος τροπος για πέρασμα πινάκων σε συναρτήσεις στην C) αλλωστε το ονομα και μονο του πίνακα ειναι ενας δείκτης(oversimplified) σε αυτόν για αυτο κιολας η συναρτηση ειναι τυπου void αφου η δουλεια γινεται απευθειας στην μνήμη . ΕΠισης λογω της στενής σχέσης δεικτών και πινάκων μπορεί να αναφερθεί κάποιος στα στοιχεία ενος πίνακα και έτσι

Κώδικας: Επιλογή όλων


*(table)==table[0]
*(table+1)==table[1]
*(table+2)==table[2]
......
*(table+n)==table[n]



btw οι αρχικες input που έχει απο μονο του το απωθετήριο πως φεύγουν? Το βρήκα απλα ξεκλικαρεις το run code πριν τον ποσταρεις.

παω για υπνο. Τα παμε.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 29 Ιαν 2012, 04:56

stamatiou έγραψε:Χίλια ευχαριστώ!
Επίσης, μπορώ να κάνω μια λίστα που αν κλείσω το πρόγραμμα και μετά το ξανανοίξω να διατηρεί τα δεδομένα της;

Αυτό δεν γίνεται. Πρέπει να αποθηκεύσεις τα περιεχόμενα της λίστας σου σε ένα αρχείο, κι όταν τρέχει το πρόγραμμά σου να διαβάζει το αρχείο και να βάζει τα περιεχόμενα του στη λίστα.

Η λίστα αφορά αποκλειστικά τη μνήμη ενός προγράμματός. Μόνιμη αποθήκευση γίνεται στα αρχεία.

@Star_Light:
δεν τον είδα τον κώδικα, αλλά αν παίρνεις seg-fault πιθανότατα κάνεις overflow το array μέσα στα 2 loops. Βάλε debugging printf μέσα τους για να σου δείχνουν τα περιεχόμενα του πίνακα σε κάθε επανάληψη ή βάλε το σε κάποιο debugger.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 29 Ιαν 2012, 06:12

stamatiou έγραψε:
...
Μήπως εννοεί ότι εξαρτάται από το Λειτουργικό σου σύστημα;
...

Yeap, αυτό εννοεί... πλατφόρμα γενικότερα.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 29 Ιαν 2012, 07:10

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

Την βάφτισα: arrInt κι έχει 6 συναρτήσεις, μια καθολική μεταβλητή, ένα macro και 2 σταθερές:

arrInt.h: http://ideone.com/Y9Kva
arrInt.c: http://ideone.com/PGnaU

Κι εδώ ένα προγραμματάκι που την τεστάρει...
test.c: http://ideone.com/zuKNG

Δες πόσο όμορφος, ευανάγνωστος & περιεκτικός βγήκε ο κώδικας της main() ;)
Την έγραψα για παράδειγμα που συνδυάζει την bubble sort για την οποία μιλάγαμε χτες και τις βιβλιοθήκες για τις οποίες μιλάγαμε προχτές. Μπορείτε να της προσθέσετε ότι άλλες συναρτήσεις θέλετε.

Compile & Run με...

Κώδικας: Επιλογή όλων

gcc test.c arrInt.c -o test
./test
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 29 Ιαν 2012, 14:30

migf1 έγραψε:
@Star_Light:
δεν τον είδα τον κώδικα, αλλά αν παίρνεις seg-fault πιθανότατα κάνεις overflow το array μέσα στα 2 loops. Βάλε debugging printf μέσα τους για να σου δείχνουν τα περιεχόμενα του πίνακα σε κάθε επανάληψη ή βάλε το σε κάποιο debugger.


Εχω προβλημα με την εισοδο βασικα... ο κωδικας δουλευει μια χαρα οταν οριζω εξαρχης το μεγεθος του πινακα . ΚΟιτα οταν ευκαιρισεις
τον εχω απο πανω.

migf1 έγραψε:Λοιπόν Κώστα, πριν πάω κι εγώ για νάνι, σου έφτιαξα μια πολύ μικρή βιβλιοθήκη με συναρτήσεις υποτυπώδους διαχείρισης πινάκων από ακέραιους.

Την βάφτισα: arrInt κι έχει 6 συναρτήσεις, μια καθολική μεταβλητή, ένα macro και 2 σταθερές:

arrInt.h: http://ideone.com/Y9Kva
arrInt.c: http://ideone.com/PGnaU

Κι εδώ ένα προγραμματάκι που την τεστάρει...
test.c: http://ideone.com/zuKNG

Δες πόσο όμορφος, ευανάγνωστος & περιεκτικός βγήκε ο κώδικας της main() ;)
Την έγραψα για παράδειγμα που συνδυάζει την bubble sort για την οποία μιλάγαμε χτες και τις βιβλιοθήκες για τις οποίες μιλάγαμε προχτές. Μπορείτε να της προσθέσετε ότι άλλες συναρτήσεις θέλετε.

Compile & Run με...

Κώδικας: Επιλογή όλων

gcc test.c arrInt.c -o test
./test


Eυχαριστω!!! Ουτως η αλλως σκεφτομαι να κανω επεκταση το ηδη υπάρχον προγραμμα με την ταξινομηση
ωστε να κανει και αναζητηση και ευρεση μεγιστου / ελαχιστου στοιχειου κτλπ.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι