THMMY.gr

Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα => C / C++ / C# => Topic started by: Egkelados on February 09, 2016, 18:21:31 pm



Title: Λάθος σε κώδικα της C
Post by: Egkelados on February 09, 2016, 18:21:31 pm
Καλησπέρα παιδιά επειδή είμαι νέος όσον αφορά τη C έχω ένα μικρό προβληματάκι το οποίο δεν μπορώ να λύσω μόνος μου ούτε με τη βοήθεια του google( ναι ναι ναι το έψαξα πολύ). Έχω ένα πρόγραμμα που ζητάω από το χρήστη να μου δώσει τα μήκη τριών πλευρών του τριγώνου και εγώ να του επιστρέψω το εμβαδό του.


Code:
#include <stdio.h> 
#include <math.h>

int main(void)
{
double a,b,c;
scanf("%lf%lf%lf",&a,&b,&c);
double t=(a+b+c)/2;
double x=t*(t-a)*(t-b)*(t-c);
double E=sqrt(double x);
printf("to embadon tou trigwnou einai %lf\n",Ε);
}]

και το τερματικό μου βγάζει αυτό
Code:
example.c: In function ‘main’:
example.c:10:16: error: expected expression before ‘double’
  double E=sqrt(double x);
                ^
example.c:11:2: error: stray ‘\316’ in program
  printf("to embadon tou trigwnou einai %lf\n",Ε );
  ^
example.c:11:2: error: stray ‘\225’ in program
example.c:11:50: error: expected expression before ‘)’ token
  printf("to embadon tou trigwnou einai %lf\n",Ε );
                                                  ^


Title: Re: Λάθος σε κώδικα της C
Post by: c0ndemn3d on February 09, 2016, 18:23:17 pm
Code:
double E=sqrt(x);


Επίσης να βάζεις τους ορισμούς μεταβλητών, πρώτους πρώτους και μετά όλα τα άλλα.


Title: Re: Λάθος σε κώδικα της C
Post by: Egkelados on February 09, 2016, 18:27:48 pm
Τώρα μου βγάζει μόνο αυτό. Τι εννοείς να βάζω τους ορισμούς των μεταβλητών πρώτα και μετά όλα τα άλλα?

Code:
example.c: In function ‘main’:
example.c:11:2: error: stray ‘\316’ in program
  printf("to embadon tou trigwnou einai %lf\n",Ε );
  ^
example.c:11:2: error: stray ‘\225’ in program
example.c:11:50: error: expected expression before ‘)’ token
  printf("to embadon tou trigwnou einai %lf\n",Ε );
                                                  ^


Title: Re: Λάθος σε κώδικα της C
Post by: TrueForce on February 09, 2016, 18:28:56 pm
ολες οι δηλωσεις πρεπει να είναι πριν από κάθε άλλη εντολη


Title: Re: Λάθος σε κώδικα της C
Post by: Dimitris1989 on February 09, 2016, 18:29:04 pm
Εννοεί τα

Code:
double t=(a+b+c)/2;
double x=t*(t-a)*(t-b)*(t-c);
double E=sqrt(double x);
να τα κάνεις
Code:
double t,x,Ε;
.
.
.
t=(a+b+c)/2;
x=t*(t-a)*(t-b)*(t-c);
E=sqrt(double x);


Title: Re: Λάθος σε κώδικα της C
Post by: Exomag on February 09, 2016, 18:30:19 pm
Τσέκαρε ότι το σύμβολο για quote που έχεις (τα "" δηλαδή) είναι σωστά (ειδικά αν τα έκανες copy-paste από κάπου αλλού).

Επίσης, μέσα στην sqrt πρέπει να βάλεις σκέτο το x, το double δεν χρειάζεται.


Title: Re: Λάθος σε κώδικα της C
Post by: Egkelados on February 09, 2016, 18:36:49 pm
ωραία τον άλλαξα τώρα τον κώδικα σε

Code:
#include <stdio.h> 
#include <math.h>

int main(void)
{
double a,b,c;
scanf("%lf%lf%lf",&a,&b,&c);
double t,x,E;
t=(a+b+c)/2;
x=t*(t-a)*(t-b)*(t-c);
E=sqrt(x);
printf("to embadon tou trigwnou einai %lf\n",E );
return 0;
}

και το τερματικό μου βγάζει αυτό

Code:
  /tmp/ccPbrN13.o: In function `main':
example.c:(.text+0x9c): undefined reference to `sqrt'
collect2: error: ld returned 1 exit status
 


Title: Re: Λάθος σε κώδικα της C
Post by: Apostolof on February 09, 2016, 18:36:56 pm
Δεν είναι τα "". Το Ε ήταν ελληνικό. Αυτό δουλεύει:

Code:
#include <math.h>

int main(void){
    double side_a,side_b,side_c,t,x,E;
scanf("%lf%lf%lf",&side_a,&side_b,&side_c);
t=(side_a+side_b+side_c)/2;
x=t*(t-side_a)*(t-side_b)*(t-side_c);
E=sqrt(x);
printf("to embado einai %lf",E);
}
προσπάθησε να δίνεις πιο περιγραφικά ονόματα στις μεταβλητές σου.  :)

Εδιτ: αυτό (https://www.thmmy.gr/smf/index.php?topic=65817.msg1113367#msg1113367) που πόσταρες σε εμένα δε πετάει κάποιο error.


Title: Re: Λάθος σε κώδικα της C
Post by: Egkelados on February 09, 2016, 18:45:15 pm
@Apostolof έβαλα τον κώδικα σου μαζί με την stdio.h βιβλιοθήκη και μου βγάζει αυτό το τερματικό.(ευχαριστω και για τη συμβουλή με τις μεταβλητές :D )

Code:
/tmp/ccwjcjvX.o: In function `main':
example.c:(.text+0x9c): undefined reference to `sqrt'
collect2: error: ld returned 1 exit status


Title: Re: Λάθος σε κώδικα της C
Post by: zisis00 on February 09, 2016, 18:48:37 pm
[...]

Code:
 /tmp/ccPbrN13.o: In function `main':
example.c:(.text+0x9c): undefined reference to `sqrt'
collect2: error: ld returned 1 exit status

Το error που σου πετάει έχει να κάνει με το linking process (google it αν θες περισσότερες πληροφορίες).
Για να το αντιμετωπίσεις πρέπει να κάνεις link με την libm. Αν κάνεις compiler με gcc απλά βάζεις -lm
δηλαδή τo command σου θα γίνει "gcc lala.c -o lala -lm".


Title: Re: Λάθος σε κώδικα της C
Post by: Egkelados on February 09, 2016, 18:53:49 pm
@zisis00 έχεις δίκιο! το έβαλα όπως μου είπες και έγινε! Σας ευχαριστώ όλους παιδιά για τη βοήθεια σας!  :D ;D