www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "C/C++" - 2 Kompilierfehler
2 Kompilierfehler < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

2 Kompilierfehler: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 12:59 Sa 09.07.2011
Autor: David90

Aufgabe
Hi Leute, ich schreib Montag Klausur über C und wollte noch ein bisschen üben. Ich hab folgendes Programm geschrieben, aber wenn ich es kompiliere kommen 2 Fehlermeldungen. Kann mir jemand sagen wo mein Fehler liegt?

Mein Prog sieht folgendermaßen aus:
#include <stdio.h>
#include <math.h>
double berechnung(float seite, float *umkreisradius);
int main(void)
{
float s,ergebnis_umkreisradius;
double ergebnis_flaeche;
printf("Bitte geben Sie die Seitenlaänge des gleichseitigen Dreiecks ein. Die eingegebene Seite hat die Einheit [mm] Meter\n"); [/mm]
scanf("%f", &s);
ergebnis_flaeche=berechnung(s, &ergebnis_umkreisradius);
printf("Die Fläche des gleichseitigen Dreiecks beträgt %f [mm] \n", [/mm] ergebnis_flaeche);
printf("Der Umfang des gleichseitigen Dreiecks beträgt %f [mm] \n", [/mm] &ergebnis_umkreisradius);
return 0;
}

double berechnung (float seite, float *umkreisradius)
{
double flaeche;
*umkreisradius = seite/sqrt(3);
[mm] flaeche=seite^2/4*sqrt(3); [/mm]
return flaeche;
}
Hoffe jemand kann mir schnellstmöglich helfen:(
gruß David

        
Bezug
2 Kompilierfehler: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 13:09 Sa 09.07.2011
Autor: David90

Achso bin ich ein Kunde xD die fehlermeldungen sind folgende:

flaeche_und_umfang.c: In function 'main':
flaeche_und_umfang.c:12: warning: format '%f' expects type 'double', but argument 2 has type 'float*'
flaeche_und_umfang.c: In function 'berechnung':
flaeche_und_umfang.c:20: error: invalid operands to binary ^ (have 'float' and 'double')

Bezug
                
Bezug
2 Kompilierfehler: Antwort
Status: (Antwort) fertig Status 
Datum: 13:14 Sa 09.07.2011
Autor: felixf

Moin!

> Achso bin ich ein Kunde xD

Kunde?

> die fehlermeldungen sind
> folgende:
>  
> flaeche_und_umfang.c: In function 'main':
>  flaeche_und_umfang.c:12: warning: format '%f' expects type
> 'double', but argument 2 has type 'float*'

Das ist kein Compilerfehler, aber eine Warnung. Sie weisst trotzdem auf einen Fehler hin. Den solltest du aber eigentlich auch selber finden koennen.

>  flaeche_und_umfang.c: In function 'berechnung':
>  flaeche_und_umfang.c:20: error: invalid operands to binary
> ^ (have 'float' and 'double')

Dazu hatte ich schon was geschrieben.

LG Felix



Bezug
        
Bezug
2 Kompilierfehler: Antwort
Status: (Antwort) fertig Status 
Datum: 13:13 Sa 09.07.2011
Autor: felixf

Moin David!

> Hi Leute, ich schreib Montag Klausur über C und wollte
> noch ein bisschen üben. Ich hab folgendes Programm
> geschrieben, aber wenn ich es kompiliere kommen 2
> Fehlermeldungen. Kann mir jemand sagen wo mein Fehler
> liegt?
>
>  Mein Prog sieht folgendermaßen aus:

Du haettest ja netterweise auch sagen koennen, wo dein Compiler die Fehler findet. Die Information reicht ja meist schon aus, um zu sehen wo das Problem ist.

Und das Verwenden von [code]...[/code]Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

haette das ganze auch etwas lesbarer gemacht.

>  #include <stdio.h>
>  #include <math.h>
>  double berechnung(float seite, float *umkreisradius);
>  int main(void)
>  {
>  float s,ergebnis_umkreisradius;
>  double ergebnis_flaeche;
>  printf("Bitte geben Sie die Seitenlaänge des
> gleichseitigen Dreiecks ein. Die eingegebene Seite hat die
> Einheit [mm]Meter\n");[/mm]
>  scanf("%f", &s);
>  ergebnis_flaeche=berechnung(s, &ergebnis_umkreisradius);
>  printf("Die Fläche des gleichseitigen Dreiecks
> beträgt %f [mm]\n",[/mm] ergebnis_flaeche);

In dieser Zeile:

>  printf("Der Umfang des gleichseitigen Dreiecks beträgt
> %f [mm]\n",[/mm]Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

&ergebnis_umkreisradius);

ist ein Fehler, die dein Compiler moeglicherweise nicht bemerkt hat.

>  return 0;
>  }
>  
> double berechnung (float seite, float *umkreisradius)
>  {
>  double flaeche;
>  *umkreisradius = seite/sqrt(3);

Diese Zeile hier:

>  [mm]flaeche=seite^2/4*sqrt(3);[/mm]

ergibt in C oder C++ keinen Sinn. Was soll seite^2 sein? Wenn seite ein Integer-Datentyp wear, dann waer ^Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

das bitweise XOR. Fuer Fliesskommadatentypen ist es allerdings nicht definiert.

>  return flaeche;
>  }
>   Hoffe jemand kann mir schnellstmöglich helfen:(

Abgesehen von meinen zwei Anmerkungen oben ist das Proramm korrekt, der Compiler akzeptiert es also nach bereits einer dieser Aenderungen (und zwar der unteren).

Kann es sein, dass du Link-Fehler auch zu Compilerfehler zaehlst? In dem Fall hast du evtl. das Dazulinken der C-Math-Library vergessen (oft mit dem Kommandozeilenargument -lm).

LG Felix


Bezug
                
Bezug
2 Kompilierfehler: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 13:23 Sa 09.07.2011
Autor: David90

ok danke schon mal für die schnelle antwort^^ also die formel mit dem hoch 2 hab ich aus nem übungsbuch, da halte ich mich einfach dran^^ hab aus hoch 2 jetz einfach seite*seite gemacht und die binary fehlermeldung war weg^^ jetz is nur noch die warning mit dem expects tyoe 'double' da. Vielleicht bin ich blöd aber hattest du geschrieben wo der fehler liegt? weil ich finde den nich, diese fehlermeldung hab ich irgendwie immer bei jedem prog und hab nie rausgefunden was jetz falsch is...ergebnis_umkreisradius is doch typ float und der bei scanf muss man dann %f schreiben :O
gruß david

Bezug
                        
Bezug
2 Kompilierfehler: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 13:26 Sa 09.07.2011
Autor: David90

ähhh ich mein natürlich bei printf muss man für eine float variable %f schreiben xD

Bezug
                        
Bezug
2 Kompilierfehler: Antwort
Status: (Antwort) fertig Status 
Datum: 13:31 Sa 09.07.2011
Autor: felixf

Moin!

> ok danke schon mal für die schnelle antwort^^ also die
> formel mit dem hoch 2 hab ich aus nem übungsbuch, da halte
> ich mich einfach dran^^ hab aus hoch 2 jetz einfach
> seite*seite gemacht und die binary fehlermeldung war weg^^
> jetz is nur noch die warning mit dem expects tyoe 'double'
> da. Vielleicht bin ich blöd aber hattest du geschrieben wo
> der fehler liegt? weil ich finde den nich, diese
> fehlermeldung hab ich irgendwie immer bei jedem prog und
> hab nie rausgefunden was jetz falsch
> is...ergebnis_umkreisradius is doch typ float und der bei
> scanf muss man dann %f schreiben :O

Nun, prinft braucht den Wert der Variablen, scanf deren Adresse.

In der Zeile ueber dem prinft mit dem Fehler hast du es ja auch richtig gemacht.

LG Felix


Bezug
                                
Bezug
2 Kompilierfehler: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 13:37 Sa 09.07.2011
Autor: David90

ok danke dir:) hab das & weggemacht und jetz gehts:) er gibt twar immer noch eine meldung raus und zwar: unrecognized option '-1m' aber wenn ich das 1m weglasse klappt alles super:) danke nochmal...bleib mal on, kommen bestimmt nochn paar fragen im laufe des tages xD

Bezug
                                        
Bezug
2 Kompilierfehler: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 14:08 Sa 09.07.2011
Autor: felixf

Moin!

> ok danke dir:) hab das & weggemacht und jetz gehts:) er
> gibt twar immer noch eine meldung raus und zwar:
> unrecognized option '-1m' aber wenn ich das 1m weglasse

Nun, es heisst ja auch -lm und nicht -1m :-) Also ein kleines L, anstelle der Ziffer 1.

> klappt alles super:) danke nochmal...bleib mal on, kommen
> bestimmt nochn paar fragen im laufe des tages xD

Ich werd nicht die ganze Zeit on sein, aber immer wieder ;-)

LG Felix


Bezug
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]