Zum Forum springen
Problem mit C Progr...
 
Benachrichtigungen
Alles löschen

Problem mit C Programm

9 Beiträge
4 Benutzer
0 Reactions
417 Ansichten
Wazup
Beigetreten: 08.01.2007

Kann mir einer sagen wieso das programm nur float werte verarbeitet und ausgibt ?

mfg

# include <stdio.h>
# include <conio.h>

double betrag(double x)
{
if (x>=0)
{
return(x);
}
if (x<0)
{
x=x*(-1);
return(x);
}
}
void main(void)
{
double x;
printf("Bitte Zahl eingeben: ");
scanf("%lf",&x);

printf("blablablabla");
printf("hat den absoluten Betrag der Zahl %lf zu %lf berechnet.",x,betrag(x));

}


Antwort
Zitat
8 Antworten
soltana
Beigetreten: 31.08.2006

was soll denn die zeile double x=; ???

initialisiere es wirklich mit 0.0.

ansonsten teste halt ob scanf erfolgreich war ( Test auf EOF als Returnvalue).

Wenn die eingabe falsch war kann es halt nicht funktionieren.


Antwort
Zitat
Wazup
Beigetreten: 08.01.2007

Das hatte ich falsch kopiert, habs editiert..


Antwort
Zitat
soltana
Beigetreten: 31.08.2006

scanf ist halt zickig. wenn das format nicht zu %lf nicht passt, dann wird es nicht eingelesen. Wenn ne einfache Programmieraufgabe ist, die du abgeben musst, gib einfach an welches Format der User verwenden muss bei der Eingabe.


Antwort
Zitat
Wazup
Beigetreten: 08.01.2007

Danke erstmal..

Hab grad per debugging geschaut was sache ist.. scanf liest die zahl mit allen stellen ein, scheint so als ob die funktion betrag() zeigt nur 6 nachkommastellen an..

edit: wenn ich compile gibt er mir auch manchmal (aber nur manchmal?!) ne fehlermeldung aus:
c 26: missing return value


Antwort
Zitat
Campusanis
Beigetreten: 10.11.2008

Original von Wazup
Danke erstmal..

Hab grad per debugging geschaut was sache ist.. scanf liest die zahl mit allen stellen ein, scheint so als ob die funktion betrag() zeigt nur 6 nachkommastellen an..

edit: wenn ich compile gibt er mir auch manchmal (aber nur manchmal?!) ne fehlermeldung aus:
c 26: missing return value

Viele Compiler mögen es nicht, dass man eine Main-Funktion ohne Rückgabewert schreibt. Statt

void main(void)

würde ich

int main(void)

schreiben.*
Zum eigentlichen Problem: Soweit ich weiß, gibt %lf bei printf nur sechs Nachkommastellen aus...

*EDIT: Und dann am Ende natürlich etwas zurückgeben.


Antwort
Zitat
noelte
Beigetreten: 13.05.2007

Original von Campusanis

Zum eigentlichen Problem: Soweit ich weiß, gibt %lf bei printf nur sechs Nachkommastellen aus...

Hmm, bin mir jetzt nicht 100% sicher, aber 6 Stellen sind glaube ich die default Genauigkeit..... "%.10lf" sollte dann z.B. 10 Nachkommastellen ausgeben.


Antwort
Zitat
Wazup
Beigetreten: 08.01.2007

Original von noelte

Original von Campusanis

Zum eigentlichen Problem: Soweit ich weiß, gibt %lf bei printf nur sechs Nachkommastellen aus...

Hmm, bin mir jetzt nicht 100% sicher, aber 6 Stellen sind glaube ich die default Genauigkeit..... "%.10lf" sollte dann z.B. 10 Nachkommastellen ausgeben.

Jo stimmt. das funktioniert.
Das problem mit dem "missing return value" wird wohl ein compiler problem sein, der ist eh der größte kack, kp wieso wir den benutzen müssen.


Antwort
Zitat
Campusanis
Beigetreten: 10.11.2008

Original von noelte

Original von Campusanis

Zum eigentlichen Problem: Soweit ich weiß, gibt %lf bei printf nur sechs Nachkommastellen aus...

Hmm, bin mir jetzt nicht 100% sicher, aber 6 Stellen sind glaube ich die default Genauigkeit..... "%.10lf" sollte dann z.B. 10 Nachkommastellen ausgeben.

Ich erinnere mich da glaube ich an eine ähnliche Aufgabe und endloses Kopfzerbrechen, %lf und %f machen bei printf keinen Unterschied. ;)


Antwort
Zitat