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

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

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

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

Δημοσίευσηαπό Star_Light » 02 Σεπ 2011, 03:06

migf1 έγραψε:
Star_Light έγραψε:τελικα η δικη μου σκέψη ειχε καμια απήχηση? :/

EDIT: οΠΑ ακυρο νομιζα οτι απαντησες στον stamatiou :lol:

αυτο που ειπα για την μείωση ????

Ναι, σωστά το κατάλαβες κι αυτό :)


πλακα κανεις... το βρηκα δηλαδη???? αυτο ειναι??????? :D

ΑΥΤΟ που εβαλα σε spoiler εννοω...
Γνώσεις ⇛ 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 Σεπ 2011, 03:08

Ναι, αφαιρώντας 2 ASCII codes αν το 1ο είναι μεγαλύτερο του 2ου το αποτέλεσμα είναι θετική τιμή, αν είναι ίδια το αποτέλεσμα είναι 0, αλλιώς το αποτέλεσμα είναι αρνητική τιμή. Ακριβώς αυτό δηλαδή που θέλουμε να επιστρέφει η συνάρτηση :)
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 02 Σεπ 2011, 03:11

migf1 έγραψε:Ναι, αφαιρώντας 2 ASCII codes αν το 1ο είναι μεγαλύτερο του 2ου το αποτέλεσμα είναι θετική τιμή, αν είναι ίδια το αποτέλεσμα είναι 0, αλλιώς το αποτέλεσμα είναι αρνητική τιμή. Ακριβώς αυτό δηλαδή που θέλουμε να επιστρέφει η συνάρτηση :)


Οχι δεν λεω μονο αυτο.... λεω και το αλλο που μας εβαλες να απαντησουμε... δηλαδη γιατι πρωτα μειωνουμε τον δεικτη και μετα επιστρεφουμε την τιμη :D

στο

Κώδικας: Επιλογή όλων
return (int)(*s1-*--s2);
λεω
Γνώσεις ⇛ 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 Σεπ 2011, 03:15

stamatiou έγραψε:Προσπάθησα να το κάνω μεσ counters αλλά δεν είμαι σίγουρος αν δουλεύει....
Spoiler: show
Κώδικας: Επιλογή όλων
int s_compare( const char *s1, const char *s2 )
{
int i1 = 0, i2 = 0;
while ( s1[i1++] == s2[i2++] )
if ( !s1[i1] )
return 0;

return (int)(s1[i1] - s2[i2]);
}

Δεν χρειάζεσαι 2 μετρητές, ένας αρκεί και για τα 2 strings. Αλλάζοντας αυτό, δείχνει σωστή η συνάρτηση :) Αλλά για σίγουρα κάνε trace τον κώδικά σου με τα test-cases που έδωσα στο 2-3 ποστς παραπάνω, και θα την δοκιμάσω κι εγώ... αλλά από αύριο (γιατί τώρα πάω δεν πάω :lol:)

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

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

Δημοσίευσηαπό Star_Light » 02 Σεπ 2011, 03:16

migf1 έγραψε:

@Start_Light: για δώσε link να το δω.


Οκ οκ . Ακριβως εδω -> viewtopic.php?f=6&t=18969&start=1060

2ο ποστ μεσα στο spoiler τελευταια προταση.
Γνώσεις ⇛ 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 Σεπ 2011, 03:18

migf1 έγραψε:Αλλάζοντας αυτό, δείχνει σωστή η συνάρτηση :) Αλλά για σίγουρα κάνε trace τον κώδικά σου με τα test-cases που έδωσα στο 2-3 ποστς παραπάνω, και θα την δοκιμάσω κι εγώ... αλλά από αύριο (γιατί τώρα πάω δεν πάω :lol:)

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

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

Δημοσίευσηαπό Star_Light » 02 Σεπ 2011, 03:20

πολυ στηψιμο μυαλου εχουμε να φαμε με αυτα τα strings παντως.

ΤΗν μυριζομαι την δουλεια... σαν να καταλαβα ηδη πως δεν γνωριζω 100% την λειτουργια της if.

Tελικα μαλλον ειναι λαθος αυτο που σου εβαλα να κοιταξεις migf1 γιατι ουσιαστικα λες.....

"Πριν κάνει την σύγκριση επαναφέρει τον δείκτη μια θέση πιο κάτω (τον μειώνει δηλαδη προς τα αριστερα του string)"
Τελευταία επεξεργασία από Star_Light και 02 Σεπ 2011, 03:23, έχει επεξεργασθεί 1 φορά/ες συνολικά
Γνώσεις ⇛ 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 Σεπ 2011, 03:23

Star_Light έγραψε:2ο ποστ μεσα στο spoiler τελευταια προταση.

Δεν θα το έλεγα ακριβώς σωστό... βασικά κάνε trace τον κώδικα με τα test-cases που έδωσα (από αύριο, με καθαρό μυαλό) και θα σου εμφανιστεί από μόνης της η σωστή απάντηση :)

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

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

Δημοσίευσηαπό Star_Light » 02 Σεπ 2011, 03:26

migf1 έγραψε:
Δεν θα το έλεγα ακριβώς σωστό... βασικά κάνε trace τον κώδικα με τα test-cases που έδωσα (από αύριο, με καθαρό μυαλό) και θα σου εμφανιστεί από μόνης της η σωστή απάντηση :)

ΥΓ. Είπαμε, τα strings είναι μεγάαααααααααααλο σχολείο, γιατί πιάνουν κι άλλα πράματα, πιο σφαιρικά :)


Εχμμμ.... μα και μεσα στο spoiler trace προσπαθω να τον κανω... με την διαφορα οτι εχω εξαρχης γεματες τις 2 συμβολοσειρες....

εσυ δεν καταλαβαινω πως πας να τις γεμισεις μετα.. εκτος και αν δεν εχω πιασει την ακριβη λειτουργια του αλγοριθμου.....
Γνώσεις ⇛ 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 Σεπ 2011, 03:29

Όταν λέω trace, εννοώ πάρε ένα test-case, π.χ. s1[] = "a", s2[] = "ab" και γράφε σε ένα χαρτί τις τιμές που παίρνουν τα *s1 και *s2 σε κάθε σημείο του κώδικα (και κυρίως σε κάθε επανάληψη του loop)

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

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

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