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

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

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

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

Δημοσίευσηαπό migf1 » 03 Φεβ 2012, 18:07

Είναι η γραμμή που έγραψα παραπάνω Ηλία; Για τσέκαρε γιατί με Python δεν είμαι εξοικειωμένος.

Και σε C λίγες γραμμές είναι, με την προϋπόθεση πως έχεις κάνει wrap τους πίνακες σε δομές, με πεδία που κρατάνε το μήκος του πίνακα (ή το πλήθος γραμμών & στηλών αν πρόκειται για 2D και πάει λέγοντας).

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

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

Δημοσίευσηαπό Ilias95 » 03 Φεβ 2012, 18:09

@migf1
Ακριβώς το ίδιο πράγμα γράψαμε την ίδια στιγμή. :shock:

Ναι έτσι γίνεται στην python. Δεν χρειάζεται καν το [:] (το οποίο σημαίνει όλα τα στοιχεία της λίστας).
Μάλιστα με τον ίδιο τρόπο μπορείς να ανταλλάξεις τις τιμές δύο μεταβλητών οποιουδήποτε τύπου (strings, tuples, dicts κλπ).
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 03 Φεβ 2012, 18:10

Ηλια ο δικος μου υπερ-κωδικας για swap σε στατικους πινακες στην C ηταν περιπου 80 γραμμες. :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++

Δημοσίευσηαπό Ilias95 » 03 Φεβ 2012, 18:11

migf1 έγραψε:Είναι η γραμμή που έγραψα παραπάνω Ηλία; Για τσέκαρε γιατί με Python δεν είμαι εξοικειωμένος.

Κώδικας: Επιλογή όλων
ilias@ilias-pc:~$ python
Python 2.7.2+ (default, Oct 4 2011, 20:03:08)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a, b = b, a
>>> a
[4, 5, 6]
>>> b
[1, 2, 3]
>>>

:)
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

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

Και τι να λεει αυτο ?

Και στην octave μια γραμμη ειναι :

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


octave:1> A=[1 2 3; 4 5 6]
A =

1 2 3
4 5 6

octave:2> B= [ 4 5 6; 7 8 9 ]
B =

4 5 6
7 8 9

octave:3> A=B
A =

4 5 6
7 8 9


: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 » 03 Φεβ 2012, 18:17

Στη C για να το κάνεις generic θες μια δομή σαν την παρακάτω...

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

typedef struct Array {
unsigned long int len;
void *data;
}Array;

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

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

Δημοσίευσηαπό Ilias95 » 03 Φεβ 2012, 18:20

@Start_Light
Στο παραπάνω παράδειγμα δεν έκανες swap. Η Α πήρε τα στοιχεία της Β. Η Β όμως δεν πήρε της Α. :)
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 03 Φεβ 2012, 18:23

Κώδικας: Επιλογή όλων
Function File: swap (inputs)

[a1,b1] = swap(a,b)
interchange a and b



http://www.network-theory.co.uk/docs/oc ... e_183.html

απλα ηθελα να σου πω πως αυτο που δειχνεις ειναι παρομοιας φιλοσοφιας
με το οτι παιρνω μια ετοιμη συναρτηση και απλα την τρεχω σαν εντολη απο το τερματικο.
Γνώσεις ⇛ 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++

Δημοσίευσηαπό Ilias95 » 03 Φεβ 2012, 18:28

Star_Light έγραψε:με το οτι παιρνω μια ετοιμη συναρτηση και απλα την τρεχω σαν εντολη απο το τερματικο.

1.Δεν τρέχεις καμία συνάρτηση (στην python). 2.Και να έτρεχες το κακό που είναι;
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 03 Φεβ 2012, 18:32

Ilias95 έγραψε:
1.Δεν τρέχεις καμία συνάρτηση (στην python). 2.Και να έτρεχες το κακό που είναι;


Underlying τρέχεις γιατι οπως ειπε και ο migf1 η python ειναι σε C και η C ειναι διαδικαστική γλωσσα.

Εκ πρωτης οψεως δεν υπαρχει καμια συναρτηση οχι.
Γνώσεις ⇛ 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
Εκτύπωση

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

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