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

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

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

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

Δημοσίευσηαπό Star_Light » 02 Φεβ 2012, 01:11

btw τον έφτιαξα τον πινακα με την rand!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

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

void fill_table_randomly( int table1[M] , int table2[N])
{
srand ( time (NULL) );
int i=0;
int y;
int x;

for(; i<6; i++)
{
y=rand() % 10 + 1;
x=rand()% 10 + 1;
table1[i]= y;
table2[i] = x;
}

return;
}


στο μεταξυ μονο ενας σταματιου λειπει αποψε να ξαναθυμηθουμε τα καλοκαιρινα λολ
που ανα 1 λεπτο πεφτανε τα ποσταρισματα βροχη. τελειωσε το τριήμερο και τον ξαναμαντρωσανε :lol: :lol: :lol:
Γνώσεις ⇛ 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 » 02 Φεβ 2012, 01:14

migf1 έγραψε:Αυτό που ζητάει η άσκηση όμως είναι αρκετά πιο σύνθετο ;)

Για να σε βοηθήσω να ξεκινήσεις, χρησιμοποίησε την παρακάτω δομή για κάθε σου πίνακα...

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

typedef struct ArrInt {
int len;
int *data;
} ArrInt;

int main( void )
{
ArrInt arr1 = {0, NULL};
ArrInt arr2 = {0, NULL};
...
}
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 02 Φεβ 2012, 01:17

@migf1 πολυ καλο! Φανταζομαι το NULL θα παιζει για να το τερματίζεις μεσα σε ενα while ε? :D
data ειναι ο δεικτης που θα δειχνει στον πινακα?

την rand την εχω ενταξει ετσι?
Γνώσεις ⇛ 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 » 02 Φεβ 2012, 01:26

Star_Light έγραψε:@migf1 πολυ καλο! Φανταζομαι το NULL θα παιζει για να το τερματίζεις μεσα σε ενα while ε? :D

Όχι, εκείνα τα άγκιστρα είναι η αρχικοποίηση των πεδίων της δομής... 0 για το len, NULL για το data.

έγραψε:data ειναι ο δεικτης που θα δειχνει στον πινακα?

Ακριβώς. Θα πρέπει να τον κάνεις malloc σε μέγεθος len * sizeof(int) για την κάθε σου δομή... για αυτό σου είπα να φτιάξεις μια συνάρτηση, make_array() στην αρχή.

Άντε, να στη δώσω κι αυτή, αλλά τα υπόλοιπα κάνε τα μόνος σου γιατί έτσι δεν πρόκειται να μάθεις ποτέ τίποτα :P Αντί να ποστάρεις στο φόρουμ, βάζε printf() στον κώδικά σου για να βλέπεις τι κάνει ή ακόμα καλύτερα ξεκίνα να μαθαίνεις τον gdb (για αρχή δεν χρειάζονται πάνω από 5-6 εντολές).

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

/* --------------------------------------------------
*
* --------------------------------------------------
*/
Bool make_array( ArrInt *arrint, const int len )
{
if ( !arrint || len < 1 )
return FALSE;

arrint->len = 0;

arrint->data = calloc( len, sizeof(int) );
if ( !arrint->data )
return FALSE;

arrint->len = len;

return TRUE;
}



έγραψε:την rand την εχω ενταξει ετσι?

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

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

Δημοσίευσηαπό migf1 » 02 Φεβ 2012, 01:31

Α ξέχασα...
οπότε για να φτιάξεις την 1η δομή με π.χ. 10 θέσεις στον data, θα γράψεις στη main...

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

...
if ( !make_array( &arr1, 10 ) )
// αποτυχία δημιουργίας
...

Και για πιο σωστό κώδικα, αντί για make_array() ονόμασέ την: make_arrint() ;)
Τελευταία επεξεργασία από migf1 και 02 Φεβ 2012, 01:35, έχει επεξεργασθεί 1 φορά/ες συνολικά
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 02 Φεβ 2012, 01:34

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

αρχαριο σε μεγαλα προτζεκτ δεν ειναι καθολου ευκολη :/

πανω απο 100 γραμμες κωδικα να φανταστεις δεν εχω αξιωθει να συνταξω ακομη.
Γνώσεις ⇛ 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 » 02 Φεβ 2012, 01:37

Star_Light έγραψε:Οκ . Χωρις να εχω διαθεση να γκρινιαξω βεβαια η υλοποιηση που προτεινεις για εναν

αρχαριο σε μεγαλα προτζεκτ δεν ειναι καθολου ευκολη :/

Εσύ την χαρακτήρισες εύκολη όταν την πόσταρα (εγώ απλά συμφώνησα, με την προϋπόθεση πως ξέρεις δείκτες και δομές ;)

έγραψε:πανω απο 100 γραμμες κωδικα να φανταστεις δεν εχω αξιωθει να συνταξω ακομη.

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

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

Δημοσίευσηαπό Star_Light » 02 Φεβ 2012, 01:43

χαχαχαχα ευκολη με τον τροπο που νομιζα εγω!!!!

Δεν πειραζει ομως. Θα ανέβουμε ;)
Γνώσεις ⇛ 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 » 02 Φεβ 2012, 01:55

migf1 έγραψε:
... ή ακόμα καλύτερα ξεκίνα να μαθαίνεις τον gdb (για αρχή δεν χρειάζονται πάνω από 5-6 εντολές).

Compile με...

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

gcc -g3 -Wall -Wextra myprog.c

Φόρτωμα στον gdb...

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

gdb a.out


Μέσα στον gdb, ξεκινάς βάζοντας breakpoints στους αριθμούς γραμμών του κώδικα που θες να σταματήσει ο gdb. Π.χ. αν θες να σταματήσει στη γραμμή 10, γράφεις...

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

b 10

και για να ξεκινήσει να τρέχει το πρόγραμμά σου, γράφεις run ή σκέτο r.

Θα σταματήσει στη γραμμή 10, όπου μπορείς να δώσεις οποιαδήποτε από τις παρακάτω εντολές:

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

n (ή next... εκτελεί την επόμενη γραμμή κώδικα)

s (ή step... αν η επόμενη γραμμή είναι συνάρτηση, μπαίνει μέσα στη συνάρτηση)

p (επιστρέφει στην προηγούμενη γραμμή κώδικα)

print όνομα_μεταβλητής (τυπώνει την τιμή της μεταβλητής)

disp όνομα_μεταβλητής (ή display όνομα_μεταβλητής... τυπώνει την τιμή της μεταβλητής μετά από κάθε γραμμή συνέχεια, μέχρι να την κάνεις undisp)

undisp (καταργεί όλα τα display που έχεις θέσει)

b γραμμή (ή break γραμμή... προσθέτει κι άλλο breakpoint στα υπάρχοντα)

delete (καταργεί όλα τα breakpoints που έχεις βάλει)

cont (συνεχίζει την εκτέλεση μέχρι το επόμενο breakpoint)

Έχει και την πολύ χρήσιμη λειτουργικότητα το ENTER να εκτελεί την αμέσως προηγούμενη εντολή σου

Για να τον κλείσεις όταν τελειώσει το πρόγραμμά σου, δίνεις: q ή quit
Τελευταία επεξεργασία από migf1 και 02 Φεβ 2012, 02:04, έχει επεξεργασθεί 1 φορά/ες συνολικά
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 02 Φεβ 2012, 01:57

Α, επίσης, άμα το πρόγραμμά σου δώσει seg-fault μέσα στον gdb, γράφεις bt (που σημαίνει backtrace) και σου δείχνει με ανάποδη σειρά ποιες συναρτήσεις κλήθηκαν μέχρι να συμβεί το seg-fault.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

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

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