Πρόβλημα στη C...

Διδάσκοντες: Α. Καράκος, Αν. Καθηγητής

Πρόβλημα στη C...

Δημοσίευσηαπό aek_21 » 19 Μαρ 2009, 14:43

Έχω μια άσκηση στην οποία δίνω από μια τιμή σε 2 μεταβλητές και μετά φτιάχνω 4 συναρτήσεις, οι οποίες θα επιστρέφουν στο κυρίως πρόγραμμα το άθροισμα , τη διαφορά ,το γινόμενο και το πηλίκο.Έχω γράψει το παρακάτω κώδικα και μου βγάζει ένα πλήθος από errors.Αν κάποιος βρει το λάθος ας μου το πεί γιατί είμαι αρχάριος στην C.Ευχαριστώ πολυ...



#include <stdio.h>


main()
int a,b ;
{
printf("Dwse ton akeraio arithmo A");
scanf("%d", &a);
printf("Dwse ton akeraio arithmo B");
scanf("%d", &b);
athr=athroisma(a,b);
diaf=diafora(a,b);
gin=ginomeno(a,b);
pil=piliko(a,b);
}
athroisma(x,y)
int x,y.d;
{
return(x+y);
}
diafora(x,y)
int x,y;
{
return(x-y);
}
ginomeno(x,y)
int x,y;
{
return(x*y);
}
piliko(x,y)
int x,y;
{
return(x/y);
}
aek_21
Newbie
 
Δημοσιεύσεις: 32
Εγγραφή: 22 Ιαν 2009, 12:23

Re: Πρόβλημα στη C...

Δημοσίευσηαπό Vagoulas » 19 Μαρ 2009, 14:50

Για δοκίμασε αυτό:

#include <stdio.h>


main()

{
int a,b ;
int athr, diaf, gin, pil;

printf("Dwse ton akeraio arithmo A");
scanf("%d", &a);
printf("Dwse ton akeraio arithmo B");
scanf("%d", &b);

athr=athroisma(a,b);
diaf=diafora(a,b);
gin=ginomeno(a,b);
pil=piliko(a,b);
}

int athroisma(x,y)
int x,y;
{
return(x+y);
}

int diafora(x,y)
int x,y;
{
return(x-y);
}

int ginomeno(x,y)
int x,y;
{
return(x*y);
}

int piliko(x,y)
int x,y;
{
return(x/y);
}
Άβαταρ μέλους
Vagoulas
Sr. Member
 
Δημοσιεύσεις: 478
Εγγραφή: 10 Ιαν 2008, 19:37
Τοποθεσία: Helsinki
Φοιτητής ΗΜΜΥ: Όχι

Re: Πρόβλημα στη C...

Δημοσίευσηαπό aek_21 » 19 Μαρ 2009, 14:55

Ευχαριστώ πολύ..Λειτουργεί αν και βγάζει κατι warnings...
aek_21
Newbie
 
Δημοσιεύσεις: 32
Εγγραφή: 22 Ιαν 2009, 12:23

Re: Πρόβλημα στη C...

Δημοσίευσηαπό MNO » 19 Μαρ 2009, 14:56

Νομιζω οτι συμφωνω με τον Vagoulas, δεν εχεις δηλωσει τα athr, diaf, gin, pil στο προγραμμα σου. Επισης checkαρε για τις συναρτησεις αν και εκει πρεπει να κανεις καποια δηλωση τυπου, εχω να ασχοληθω απο περσι με την C sorry που δεν μπορω να βοηθησω παραπανω :(
MNO
Sr. Member
 
Δημοσιεύσεις: 408
Εγγραφή: 11 Μάιος 2008, 20:45
Φοιτητής ΗΜΜΥ: Ναι

Re: Πρόβλημα στη C...

Δημοσίευσηαπό James » 19 Μαρ 2009, 14:57

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

int athroisma(int x,int y)
{
   return (x+y);
}

int diafora(int x, int y)
{
   return (x-y);
}

int ginomeno(int x, int y)
{
   return (x*y);
}

double piliko(int x, int y)
{
   return ((double)x / (double)y);
}

int main()
{
   int a,b ;
   int athr;
   int diaf;
   int gin;
   double pil;
   printf("Dwse ton akeraio arithmo A");
   scanf("%d", &a);
   printf("Dwse ton akeraio arithmo B");
   scanf("%d", &b);
   athr=athroisma(a,b);
   diaf=diafora(a,b);
   gin=ginomeno(a,b);
   pil=piliko(a,b);
}

Είναι για δεκαδική διαίρεση το παραπάνω.
Θα σου πρότεινα να διαβάσεις το εισαγωγικό κεφάλαιο από οποιοδήποτε βιβλίο για C.
(Μόνο) James
Άβαταρ μέλους
James
Διαχειριστής
 
Δημοσιεύσεις: 1740
Εγγραφή: 08 Ιαν 2008, 22:29
Φοιτητής ΗΜΜΥ: Όχι

Re: Πρόβλημα στη C...

Δημοσίευσηαπό nuovo » 19 Μαρ 2009, 15:06

Έχεις αρκετά λάθη, από ότι βλέπω όμως σου τα διόρθωσαν στα προηγούμενα posts.
Δυο παροτρύνσεις μόνο θα ήθελα ... :
Όταν κάνεις post προγραμματισμού να βάζεις και τα errors και warnings που σου βγάζει ο compiler, linker κ.λπ. Επίσης, βλέπω μια FORTRANo-επιρροή στα ορίσματα της συνάρτησης ( int athroisma(x,y) int x,y; {...}) καλό είναι να το αποφεύγεις αυτό στην C... γιατί μπερδεύει όπως π.χ. μπερδεύτηκες και το έκανες λάθος εδώ--> (main()int a,b ;{ ...} ) Αυτή η σύνταξη έχει μείνει από την FORTRAN και την χρησιμοποιεί ο καθηγητής που κάνει αυτά τα μαθήματα , ενώ η άλλη (int athroisma(int x,int y) {...}) είναι γενικά η ευρέως χρησιμοποιούμενη και την βλέπεις παντού και επομένως είναι πιο ευανάγνωστη.
nuovo
Jr. Member
 
Δημοσιεύσεις: 65
Εγγραφή: 17 Οκτ 2008, 09:49

Re: Πρόβλημα στη C...

Δημοσίευσηαπό aek_21 » 19 Μαρ 2009, 15:10

MNO έγραψε:Νομιζω οτι συμφωνω με τον Vagoulas, δεν εχεις δηλωσει τα athr, diaf, gin, pil στο προγραμμα σου. Επισης checkαρε για τις συναρτησεις αν και εκει πρεπει να κανεις καποια δηλωση τυπου, εχω να ασχοληθω απο περσι με την C sorry που δεν μπορω να βοηθησω παραπανω :(

Όντως είχα ξεχάσει να δηλώσω τις μεταβλητές...Αλλά θέλουν και οι συναρτήσεις απ'οτι φαίνεται να τις δηλώνεις...Αν και στο 1ο κεφάλαιο του βιβλίου της C που είναι ανεβασμένο στο pericles, σε κάποια παραδείγματα με συναρτήσεις δεν τις δηλώνει...
aek_21
Newbie
 
Δημοσιεύσεις: 32
Εγγραφή: 22 Ιαν 2009, 12:23

Re: Πρόβλημα στη C...

Δημοσίευσηαπό aek_21 » 19 Μαρ 2009, 20:45

Παιδία έχω και αλλο ένα πρόβλημα με τη C.Έχω να κάνω μια διαίρεση ακεραίων,η οποία δίνει ως αποτέλεσμα είτε ακέραιο είτε πραγματικό αριθμό.Όταν γράφω το πρόγραμμα, δηλώνω τη μεταβλητή που αντιπροσωπεύει το πηλίκο ως float και όταν θέλω να το εμφανίσει γράφω : printf("%f",πηλικο) , αλλά αυτό μου εμφανίζει πάντα : 0.00000...Τι κάνω λάθος;;;
aek_21
Newbie
 
Δημοσιεύσεις: 32
Εγγραφή: 22 Ιαν 2009, 12:23

Re: Πρόβλημα στη C...

Δημοσίευσηαπό mpougatsas » 19 Μαρ 2009, 21:04

Ε δώσε μας ντε τον κώδικα που έχεις γράψει! ;)

Τί είδους είναι η συνάρτηση που έχεις γράψει;;;;;; Διότι ότι και να είναι οι μεταβλητές μέσα στην συνάρτηση, αν η ίδια η συνάρτηση δεν είναι τουλάχιστον float, για να μην πώ double, τότε θα σου κόβει τα δεκαδικά κι ας δίνεις εσύ την παράμετρο στην printf να στα εμφανίζει... ;)
Άβαταρ μέλους
mpougatsas
Full Member
 
Δημοσιεύσεις: 224
Εγγραφή: 21 Μαρ 2008, 12:58
Φοιτητής ΗΜΜΥ: Ναι

Re: Πρόβλημα στη C...

Δημοσίευσηαπό Stokos » 19 Μαρ 2009, 21:06

aek_21 έγραψε:Παιδία έχω και αλλο ένα πρόβλημα με τη C.Έχω να κάνω μια διαίρεση ακεραίων,η οποία δίνει ως αποτέλεσμα είτε ακέραιο είτε πραγματικό αριθμό.Όταν γράφω το πρόγραμμα, δηλώνω τη μεταβλητή που αντιπροσωπεύει το πηλίκο ως float και όταν θέλω να το εμφανίσει γράφω : printf("%f",πηλικο) , αλλά αυτό μου εμφανίζει πάντα : 0.00000...Τι κάνω λάθος;;;


θα πρέπει ένας εκ του διαιρέτη/διαιρετέου να είναι float για να έχεις float αποτέλεσμα από διαίρεση ακεραίων. Ένα καλό κολπάκι να το κάνεις αυτό είναι:

Κώδικας: Επιλογή όλων
int a,b;
float c;
a=1;
b=2;
c=a*1.0/b;
printf("%f",c); //Έξοδος 0.5000


το int*float δίνει float (πάντα πάει προς τα πάνω η ακρίβεια) επομένως 1*1.0 = 1.0

Αυτό ρωτάς?
Stokos
 

Re: Πρόβλημα στη C...

Δημοσίευσηαπό aek_21 » 19 Μαρ 2009, 21:15

Stokos έγραψε:
aek_21 έγραψε:Παιδία έχω και αλλο ένα πρόβλημα με τη C.Έχω να κάνω μια διαίρεση ακεραίων,η οποία δίνει ως αποτέλεσμα είτε ακέραιο είτε πραγματικό αριθμό.Όταν γράφω το πρόγραμμα, δηλώνω τη μεταβλητή που αντιπροσωπεύει το πηλίκο ως float και όταν θέλω να το εμφανίσει γράφω : printf("%f",πηλικο) , αλλά αυτό μου εμφανίζει πάντα : 0.00000...Τι κάνω λάθος;;;


θα πρέπει ένας εκ του διαιρέτη/διαιρετέου να είναι float για να έχεις float αποτέλεσμα από διαίρεση ακεραίων. Ένα καλό κολπάκι να το κάνεις αυτό είναι:

Κώδικας: Επιλογή όλων
int a,b;
float c;
a=1;
b=2;
c=a*1.0/b;
printf("%f",c); //Έξοδος 0.5000


το int*float δίνει float (πάντα πάει προς τα πάνω η ακρίβεια) επομένως 1*1.0 = 1.0

Αυτό ρωτάς?



Ναι...Αυτό το κόλπο το λύνει το πρόβλημα.Ευχαριστώ...!!! :)
aek_21
Newbie
 
Δημοσιεύσεις: 32
Εγγραφή: 22 Ιαν 2009, 12:23

Re: Πρόβλημα στη C...

Δημοσίευσηαπό dimitrisgzs » 19 Μαρ 2009, 22:32

εμένα πάλι μου βγάζουν πολλά errors τα προγραμματα του Καράκου (που έχει στον Περικλή, από το βιβλίο του), π.χ αυτό με το αθροισμα και το γινόμενο 2 αριθμών.
Μου είπε ένα παιδί οτι είπε ο μεταπτυχιακος οτι έχει πρόβλημα το ChIDE,το πρόγραμμα στο οποίο δουλεύουμε, αλλά τώρα που δοκίμασα αυτα που γράψατε εσείς τρέχουν κανονικά..
Άβαταρ μέλους
dimitrisgzs
Full Member
 
Δημοσιεύσεις: 179
Εγγραφή: 09 Απρ 2008, 03:12

Re: Πρόβλημα στη C...

Δημοσίευσηαπό Stokos » 19 Μαρ 2009, 22:34

dimitrisgzs έγραψε:εμένα πάλι μου βγάζουν πολλά errors τα προγραμματα του Καράκου (που έχει στον Περικλή, από το βιβλίο του), π.χ αυτό με το αθροισμα και το γινόμενο 2 αριθμών.
Μου είπε ένα παιδί οτι είπε ο μεταπτυχιακος οτι έχει πρόβλημα το ChIDE,το πρόγραμμα στο οποίο δουλεύουμε, αλλά τώρα που δοκίμασα αυτα που γράψατε εσείς τρέχουν κανονικά..


Όχι, τα προγράμματα του κ.Καράκου έχουν πρόβλημα (λείπουν δηλώσεις κτλ).
Stokos
 

Re: Πρόβλημα στη C...

Δημοσίευσηαπό dimitrisgzs » 19 Μαρ 2009, 23:35

Thanks, πρόλαβα και τα αλλαξα.
Καλά που διάλεξα το άλλο βιβλίο δηλαδή ;D :D
Άβαταρ μέλους
dimitrisgzs
Full Member
 
Δημοσιεύσεις: 179
Εγγραφή: 09 Απρ 2008, 03:12

Re: Πρόβλημα στη C...

Δημοσίευσηαπό AtplPilot » 19 Μαρ 2009, 23:57

To πανεπιστημιακό βιβλιο της C είναι επιεικώς απαράδεκτο..Στα κεφάλαια δεν αναλύονται πολλα παραδείγματα,δεν εξηγούνται πολλά πράγματα και πρεπει απο μόνος σου να ψαχτείς και να καταλάβεις τι θέλει να πει ο ποιητής(ειδικά στα argc,argv που ο Καρακος βάζει κάθε χρονο)..Προτείνω εκτος απο το προτεινόμενο να δανειστείτε ενα απο τα εξοχα βιβλία που κοσμούν τη βιβλιοθήκη μας..

- Δικός σας
live to fly|fly to live
Άβαταρ μέλους
AtplPilot
Newbie
 
Δημοσιεύσεις: 42
Εγγραφή: 27 Ιαν 2009, 16:21
Τοποθεσία: 33000 ft

Επόμενο

Μέλη σε σύνδεση

Μέλη σε αυτή την Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 7 επισκέπτες