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

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

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

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

Δημοσίευσηαπό Star_Light » 25 Ιαν 2012, 04:34

simple_calculations.c

(Tελικα ηταν πολυ απλοι :D ονομα- και πραγμα)

Κώδικας: Επιλογή όλων
#include<stdio.h>
#include "calculator.h"

int main(void)
{
//int a,b,c,h;

/*printf("Dwse to a \n : ");
scanf("%d",&a);

printf("Dwse to b \n : ");
scanf("%d",&b);

printf(" Dwse to h \n : ");
scanf("%d",&h);

c=calculator(a,b,h); */

printf("%d", calculator(1,2,1));

//printf("To apotelesma einai: %d" , c);
return 0;
}


calculator.c ->

Κώδικας: Επιλογή όλων
int calculator(int a , int b , int h)
{
if(h==1)
return a+b;

if(h==2)
return a-b;

if(h==3)
return a*b;

if(h==4)
return a/b;

}


και τελος το header με την δηλωση της συναρτησης

Κώδικας: Επιλογή όλων
extern int calculator(int a , int b , int h);
Γνώσεις ⇛ 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 » 25 Ιαν 2012, 04:41

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

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

Δημοσίευσηαπό Star_Light » 25 Ιαν 2012, 04:44

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 » 25 Ιαν 2012, 04:47

Δες κι άλλο παράδειγμα...

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

/* FILE: libcalc.c */

/*********************************************************//**
*
************************************************************/
int add( const int x, const int y )
{
return x+y;
}

/*********************************************************//**
*
************************************************************/
int sub( const int x, const int y )
{
return x-y;
}

/*********************************************************//**
*
************************************************************/
int mul( const int x, const int y )
{
return x * y;
}

/*********************************************************//**
*
************************************************************/
int dvs( const int x, const int y )
{
return y == 0 ? 0 : x/y;
}


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

/* FILE: libcalc.h */

extern int add( const int x, const int y );
extern int sub( const int x, const int y );
extern int mul( const int x, const int y );
extern int dvs( const int x, const int y );


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

/* FILE: calctest.c */

#include <stdio.h>
#include "libcalc.h"

/*********************************************************//**
*
************************************************************/
int main( void )
{
int x = 10, y = 2;

printf( "x+y = %d, x-y = %d, x * y = %d, x / y = %d\n",
add(x,y), sub(x,y), mul(x,y), dvs(x,y)
);

return 0;
}


Κώδικας: Επιλογή όλων
gcc -c libcalc.c

Κώδικας: Επιλογή όλων
gcc calctest.c libcalc.o -o calctest

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


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

x+y = 12, x-y = 8, x * y = 20, x / y = 5


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

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

Δημοσίευσηαπό Star_Light » 25 Ιαν 2012, 04:52

ναι αλλα η βιβλιοθηκη κανονικα δεν θα επρεπε να ειναι lib.a ?
Απο οσο εχω καταλαβει η βιβλιοθηκη θα πρεπει να ειναι ενα αρχειο που μεσα θα εχει
τα αντικειμενικα αρχεια του header και του .c που υπαρχει ο ορισμος ωστε μετα να τα καλεσεις
και να γινουν ενα εκτελεσιμο μαζι με τον πηγαιο μεσα απο τον οποιο καλεις την συνάρτηση η οποια υπάρχει
στο .h δηλωμένη και στο .c (το 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 » 25 Ιαν 2012, 04:54

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

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

Δημοσίευσηαπό Star_Light » 25 Ιαν 2012, 04:57

migf1 έγραψε:Ναι, τα εξηγώ σε ένα ποστ 2-3 σελίδες πριν.


TO ξερω αλλα σου ριχνω και το δικο μου summarize να δεις αμα τα έπιασα :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
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 25 Ιαν 2012, 04:59

Δεν είναι κάτι δύσκολο, μάλλον είσαι κουρασμένος.

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

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

Δημοσίευσηαπό Star_Light » 25 Ιαν 2012, 05:00

migf1 έγραψε:Δεν είναι κάτι δύσκολο, μάλλον είσαι κουρασμένος.

Πάω να την πέσω εγώ, καληνύχτα.


Ναι θα τα δω και αυριο και θα τα φτιαξω.
Καληνυχτα 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 » 25 Ιαν 2012, 12:30

OK! Τελικα το έφτιαξα!
Έχω ομως κάποιες αποριες :

Καταρχην οι εντολές ηταν

Κώδικας: Επιλογή όλων
gcc -c calculator.c


Κώδικας: Επιλογή όλων
gcc simple_calculations.c calculator.o -o simple_calculations


δηλαδη αρχικα μεταγλωτιζουμε το αρχειο μεσα στο οποιο ειναι ορισμενη η συναρτηση που θελουμε και στη συνεχεια
συνδυαζουμε το αντικειμενικο που παράχθηκε απο την 1η εντολή με τον κωδικα που θα γραψουμε και μεσα εκει θα κάνουμε include
το header με την δηλωση της συνάρτησης.

μια ερωτηση.... το .h γιατι δεν το βαζουμε μεσα σε καποια απο τις εντολες του gcc? και την 2η εντολη δεν την καταλαβαινω περα απο το τυφλοσουρτι.

Δηλαδη τωρα εγω εχω ετοιμη μια βιβλιοθηκη ας πουμε?

Οταν δινω στο b=0 για να κανει την διαιρεση μου πεταει exception κινητης υποδιαστολης παιζει καμια C++ απο κατω? :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
Εκτύπωση

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

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