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

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

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

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

Δημοσίευσηαπό Star_Light » 30 Αύγ 2011, 17:28

οποιος δεν έχει καταλαβει την σχεση μεταξυ δεικτων και πινακων.... για να ξεκουρασουμε λιγο και τον 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++

Δημοσίευσηαπό migf1 » 30 Αύγ 2011, 17:37

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

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

Δημοσίευσηαπό Star_Light » 30 Αύγ 2011, 17:39

migf1 έγραψε:Ρίξτο (αλλά δώσε και καμιά λύση στις ασκήσεις που κάνουμε :lol: )


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
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 30 Αύγ 2011, 17:45

Ναι ρε συ, συμφωνούμε απόλυτα! Ρίξτο το παράδειγμα!

ΥΓ. Btw, έχουμε γίνει κολλητάρια τόσο καιρό εδώ και δεν ξέρω πως σας λένε (όχι πως είναι υποχρεωτικό να μου πείτε δλδ). Για τον φίλο Σταματίου είδα στο προφιλ του το μικρό του, εμένα με λένε Χάρη.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

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

Δημοσίευσηαπό stamatiou » 30 Αύγ 2011, 17:49

migf1 έγραψε:Ναι ρε συ, συμφωνούμε απόλυτα! Ρίξτο το παράδειγμα!

ΥΓ. Btw, έχουμε γίνει κολλητάρια τόσο καιρό εδώ και δεν ξέρω πως σας λένε (όχι πως είναι υποχρεωτικό να μου πείτε δλδ). Για τον φίλο Σταματίου είδα στο προφιλ του το μικρό του, εμένα με λένε Χάρη.

Και το επίθετο αρχίζει από Κ ( :lol: Το λέει στο codegolf)
Edit:
Αυτό εδώ δουλεύει;
Spoiler: show
Κώδικας: Επιλογή όλων
int s_compare(char *string1,char *string2) {
int i = 0;
for(i = 0;(string1[i] == string2[i]) && (string1[i] != '\0');i++);
if(string2[i] == '\0') return 0;
if(string1[0] < string2[0]) return -1;
if(string1[0] > string2[0]) return 1;
return 2;
}
Τελευταία επεξεργασία από stamatiou και 30 Αύγ 2011, 17:53, έχει επεξεργασθεί 1 φορά/ες συνολικά
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 30 Αύγ 2011, 17:53

Σχέση μεταξύ Πινάκων & Δεικτών

Ένα όνομα πίνακα καταρχήν χωρίς τις αγκύλες αποτελεί απο μόνο του δείκτη στο 1ο στοιχείο αυτης της διάταξης. Έτσι μπορεί να γίνει προσπέλαση του 1ου στοιχείου της διάταξης χρησιμοποιώντας τον τελεστή διακοπής αναφοράς που κάποιες φορές λέγεται και τελεστής έμμεσης διευθυνσιοδότησης! ΑΥτος ο τελεστής ειναι ο αστερίσκος (*) :P -Φανταζομαι δεν τον εχετε και εχουμε ξαναδει- Αν έχεις λοιπον :

Κώδικας: Επιλογή όλων
int x[4]={1,2,3,4};


τοτε τα

Κώδικας: Επιλογή όλων
*x , x
δίνουν το 1ο στοιχείο και την διευθυνσή του αντίστοιχα.
Παρακατω δίνεται ενας μικρος και απλος κωδικας που αποτελει απλο παραδειγμα και των παραπανω... μεσα στον κωδικα δηλωνω και εναν αλλον δεικτη τον ptr_int τον οποιο αρχικοποιω με την αρχικη διευθυνση του δοθέντος πινακα x διοτι η διευθυνση του 1ου στοιχειου αποτελει και την αρχικη διεύθυνση του πινακα. Επομενως ειναι κατι σαν επαληθευση μιας και οι 2 printf δινουν ιδια δεκαεξαδικη τιμη (διεύθυνση του πινακα) επομενως το x σκετο δινει αυτο που λεμε πιο πανω.

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

int main(void)
{
int x[4]={1,2,3,4};
int i;
int *ptr_x;

for(i=0; i<4; i++)
printf("%d",*(x+i));
printf("\n%p \n\n",x);

ptr_x=x;
printf("\n %p \n",ptr_x);
return 0;
}


οπου

Κώδικας: Επιλογή όλων
*(x+i)==x[i]
Για i=0 *(x+0)==x[0]
Για i=1 *(x+1)==x[1]
.....

Για i=ν *(x+v)==x[ν]


Π.Σ Ο μορφοποιητής %p "λεει" στην printf να εκτυπώνει δεκαεξαδικές διευθύνσεις.
Γνώσεις ⇛ 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 » 30 Αύγ 2011, 17:58

Αυτό το %p στην printf τι είναι; Πρώτη φορά το βλέπω! Έγραψα στο terminal man printf αλλά μου έβγαλε (μάλλον) μια εντολή του bash...
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 30 Αύγ 2011, 17:58

migf1 έγραψε:Ναι ρε συ, συμφωνούμε απόλυτα! Ρίξτο το παράδειγμα!

ΥΓ. Btw, έχουμε γίνει κολλητάρια τόσο καιρό εδώ και δεν ξέρω πως σας λένε (όχι πως είναι υποχρεωτικό να μου πείτε δλδ). Για τον φίλο Σταματίου είδα στο προφιλ του το μικρό του, εμένα με λένε Χάρη.


Εμενα με λενε Κωστα παίκτες :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 » 30 Αύγ 2011, 18:08

stamatiou έγραψε:int s_compare(char *string1,char *string2) {
int i = 0;
for(i = 0;(string1[i] == string2[i]) && (string1[i] != '\0');i++);
if(string2[i] == '\0') return 0;
if(string1[0] < string2[0]) return -1;
if(string1[0] > string2[0]) return 1;
return 2;
}

Μισό να το δοκιμάσω με διάφορα test-cases.

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

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

Δημοσίευσηαπό Star_Light » 30 Αύγ 2011, 18:09

stamatiou έγραψε:Αυτό το %p στην printf τι είναι; Πρώτη φορά το βλέπω! Έγραψα στο terminal man printf αλλά μου έβγαλε (μάλλον) μια εντολή του bash...


Ο μορφοποιητης %p φιλε σταματιου χρησιμοποιειται απο την ANSI τυποποιηση εχω διαβασει πως αν για καποιο λογο ο μεταγλωτιστης σου δεν το υποστηριζει μπορεις να δοκιμασεις με τους %u ή %lu .

Btw Με αυτη την "παρουσιαση" που εκανα καταλαβα και τα *s1=*s2 γιατι μπορουμε να τα χρησιμοποιησουμε απευθειας αλλωστε οι συμβολοσειρες ειναι πινακες χαρακτηρων. Τωρα μενει μονο να καταλαβω γιατι *save=s1;
και return save; Απλα δεν καταλαβαινω το γεγονος οτι δηλαδη το *save περιμενει δεξια τιμη λογω αστερισκου αρα πως του βάζουμε εμεις αριστερη τιμη... εχω φαει κομπλα σε αυτο γερη. Παω να ψωνισω τιποτα απο το σουπερμαρκετ και επανερχομαι. :lol: :lol:

Π.Σ Α δεν ανηκει τελικα το %p στα στανταρ?
Γνώσεις ⇛ 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
Εκτύπωση

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

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