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

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

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

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

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

Να πω επισης πως επειδη το manual του gcc ειναι καπου στις 7000 γραμμες :D

μπορει καποιος που ενδιαφερεται για συγκεκριμενα flags οταν τρεχει τον gcc απο το τερματικο
να δωσει πχ

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


μετα

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


οπου <flag> ειναι αυτο που ψαχνει πχ την αλλη φορα εψαχνα το -std ας πουμε οποτε

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


Και μετα απλα πατάς το n για να σε πηγαίνει σε επόμενη γραμμή που υπάρχει αυτο που ψαχνεις εξαρχής .

Και τέλος ενα

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


για έξοδο οπως ειπες και εσυ πιο πανω για τον gdb.

Να το πουμε και αυτο για οσους δεν το γνωριζουν :)
Γνώσεις ⇛ 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, 02:40

Προσωπικά βρίσκω πολύ πιο εύχρηστο να διαβάζω τα man pages στο Internet, π.χ. http://cf.ccmr.cornell.edu/cgi-bin/w3mman2html.cgi?gcc και κατόπιν με Ctrl+F στον Firefox να κάνω αναζήτηση οποιασδήποτε λέξης επιθυμώ.

Όσον αφορά όμως την τεκμηρίωση συναρτήσεων, η ενσωμάτωση τους στο IDE και η κλήση τους με 1-2 κλικ πάνω στο όνομα της συνάρτησης ή του keyword είναι μακράν η πιο εύχρηστη και παραγωγική επιλογή.
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, 20:59

Τι δεν παει καλα με αυτο τον κωδικα και τελικα βγαζει αλα ντι αλον? :S

http://ideone.com/A7B4M

Oυσιαστικα κανει αντιμεταθεση οχι πινάκων αλλα στοιχείων :S

δεν εχω κοιταξει τον κωδικα σου migf1 καθολου επειδη θελω να το κανω να τρεξει μονος μου
αν μπορεσω. :/
Γνώσεις ⇛ 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 » 02 Φεβ 2012, 21:15

Λοιπον ολα εντάξει!!! Με δούλεψε ακομη και το ιδιο μου το προγραμμα :lol: :lol: δεν καταλαβαινα λογω κακης εκτυπωσης αρχικα οτι αυτο που εκτυπωνε ειναι τελικα και αυτο που θελω.

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


#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 6
#define M 6
void fill_table_randomly( int table1[M] , int table2[N]);
void print_array(int table1[M] , int table2[N]);
void swap_table(int table1[M] , int table2[N] );

int main()

{
int table1[M];
int table2[N];


fill_table_randomly(table1 , table2);
puts("Meta to gemisma apo tin rand: ");
print_array(table1 , table2);
swap_table(table1,table2);

return 0;
}
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;
}
void print_array( int table1[M] , int table2[N])
{
int i;

for(i=0; i<M; i++)
printf("\n O 1os kai o 2os einai\n : %d %d", table1[i] , table2[i]);

return;

}
void swap_table( int table1[M] , int table2[N] )
{

int *pt1 , *pt2;
int tmp=0;
int i=0 ;


for(pt1=table1 , pt2=table2 ; (*pt1)!= *(table1 + M ) ; pt1++ , pt2++)
{
tmp=*pt2;
*pt2=*pt1;
*pt1=tmp;

}

puts("\n Meta to swap \n");

for(i=0; i<6; i++)

printf("\n O 1os kai o 2os einai \n : %d %d ", table1[i] , table2[i]);

return;
}


Πιο μετα θα κατσω να τον εμπλουτισω ισως τωρα αφου καταφερα τον γενικο σκελετο.
Γνώσεις ⇛ 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, 22:36

Ωραίος :)

Δεδομένου πως οι συναρτήσεις πρέπει να είναι όσο το δυνατόν πιο αυτόνομες κι εστιασμένες, οι print_array() και fill_array_randomly() πρέπει να δουλεύουν με 1 πίνακα και όχι με 2. Κι επειδή τα μήκη των πινάκων μπορούν να είναι διαφορετικά για κάθε πίνακα, μπορείς να τα κάνεις κι αυτά ξεχωριστό όρισμα...

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

void print_array( int *arr, const int len );
void_fill_array_randomly( int *arr, const int len );


Κι όταν θες να τυπώσεις και τους 2 πίνακες θα το κάνεις με ξεχωριστές κλήσεις της print_array()...
Κώδικας: Επιλογή όλων


int table1[ TAB1LEN ];
int table2[ TAB2LEN ];

...
fill_array_randomy( table1, TAB1LEN );
print_array( table1, TAB1LEN );
...
fill_array_randomy( table2, TAB2LEN );
print_array( table2, TAB2LEN );
...

Έτσι είναι το σωστό για να είναι δομημένο & ευέλικτο το πρόγραμμα. Ενώ τώρα για να τυπώσεις έναν μόνο πίνακα κάθεσαι και γράφεις for-loops στα σημεία που θες να τυπωθεί ο πίνακας ;)
Τελευταία επεξεργασία από migf1 και 02 Φεβ 2012, 22:40, έχει επεξεργασθεί 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, 22:47

Καλα εννοειται πως ο κωδικας που παρέθεσα ειναι αχρείαστα φορτωμένος σε κάποια σημεία :D
απλα ηθελα να φτιάξω πρωτα τον πυρήνα και μετα το κουρεματάκι θα ειναι πιο ευκολη υπόθεση -.-
Γνώσεις ⇛ 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, 23:03

Δεν είναι κουρεματάκι αυτό, αυτό είναι το 1ο που έπρεπε να είχε γίνει, πριν καν ξεκινήσεις να γράφεις κώδικα. Να έχεις δηλαδή πρώτα σπάσει το πρόβλημα σε υπο-προβλήματα, με όσο το δυνατόν πιο εστιασμένες κι αυτόνομες (και άρα re-usable) υλοποιήσεις.
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, 23:09

migf1 έγραψε:Δεν είναι κουρεματάκι αυτό, αυτό είναι το 1ο που έπρεπε να είχε γίνει, πριν καν ξεκινήσεις να γράφεις κώδικα. Να έχεις δηλαδή πρώτα σπάσει το πρόβλημα σε υπο-προβλήματα, με όσο το δυνατόν πιο εστιασμένες κι αυτόνομες (και άρα re-usable) υλοποιήσεις.


Mα δεν το έσπασα? με τις 3 αυτες συναρτήσεις που χρησιμοποιώ?
Γνώσεις ⇛ 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, 23:15

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

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

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

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

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

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