Motocross_M - 30
Halbprofi
(offline)
Dabei seit 01.2006
375
Beiträge
|
|
Geschrieben am: 23.03.2010 um 20:24 Uhr
|
|
hi leute,
ich wage mich grad n bissl ans programmieren ran, und hab schon n paar programme gemacht, die funktioniert haben. heut wollte ich eins zum %-ausrechnen machen, aber das stürzt dauernd ab...
könnt ihr mir vllt. sagen, was da des problem ist? (is mit C gemacht)
#include <stdio.h>
int main()
{
int zahl=0;
int zahl1=0;
printf ("Prozent\n");
printf ("Zahl, von der die %te ausgerechnet werden sollen, eingeben:");
scanf ("%d", zahl);
printf ("Wieviel Prozent von %d?", zahl);
scanf ("%d", zahl1);
printf ("%d % von %d ergibt %d", zahl1, zahl, 1/zahl1*zahl);
return 0;
}
Ich hab keine Fußzeile nötig.
|
|
TheBrainless - 38
Experte
(offline)
Dabei seit 04.2005
1992
Beiträge
|
|
Geschrieben am: 23.03.2010 um 20:54 Uhr
|
|
Hm, haste auch ne Fehlermeldung?
Ich vermute mal, das Ding kompiliert nicht... Probiers mal mit %%, wenn du das Prozentzeichen anzeigen willst...
Mörps mörps blubbs!
|
|
kikl - 35
Halbprofi
(offline)
Dabei seit 12.2005
123
Beiträge
|
Geschrieben am: 23.03.2010 um 21:00 Uhr
Zuletzt editiert am: 23.03.2010 um 21:05 Uhr
|
|
Zitat von Motocross_M: hi leute,
ich wage mich grad n bissl ans programmieren ran, und hab schon n paar programme gemacht, die funktioniert haben. heut wollte ich eins zum %-ausrechnen machen, aber das stürzt dauernd ab...
könnt ihr mir vllt. sagen, was da des problem ist? (is mit C gemacht)
#include <stdio.h>
int main()
{
int zahl=0;
int zahl1=0;
printf ("Prozent\n");
printf ("Zahl, von der die %te ausgerechnet werden sollen, eingeben:");
scanf ("%d", zahl);
printf ("Wieviel Prozent von %d?", zahl);
scanf ("%d", zahl1);
printf ("%d % von %d ergibt %d", zahl1, zahl, 1/zahl1*zahl);
return 0;
}
Bei scanf musst du die Adresse der einzulesenden Variable explizit angeben. Dafür gibt es den Adressoperator (&), den du vor die Variablennamen setzt.
Also:
scanf("%d",&zahl);
sowie
scanf("%d",&zahl1);
Dann sollte das Programm auch nicht mehr abstürzen.
|
|
Ketzu - 39
Experte
(offline)
Dabei seit 11.2008
1535
Beiträge
|
Geschrieben am: 23.03.2010 um 21:42 Uhr
Zuletzt editiert am: 23.03.2010 um 21:49 Uhr
|
|
Nachdem du die Korrektur von dem herrn über mir eingebaut hast, wirst du außerdem feststellen, das deine Berechnung totaler mist ist ;)
Zum einen: 1/zahl1 ist ein integer < 1, und das wiederrum ist 0, 0 * zahl ist immer 0. Yay.
Zum anderen: x% von y sind (y / 100)*x (oder (x*y)/100, so käme man sogar nur mit ints auf ein halbwegs sinnvolles Ergebnis)
Wie du auf deine Berechnung kommst, ist mir nicht ganz klar, um solche Fehler in Zukunft zu vermeiden kann man einfach bestimmte Werte einsetzen. Z.B. würde bei 100% bei deiner Formel folgern: 1 / 100 * zahl -> zahl / 100 (nach von-links-nach-rechts Ausführungsreihenfolge), das wär aber 1% und nicht 100%)
Eine Meinung vertreten, heißt nicht sie zu teilen, sondern versuchen sie zu verstehen.
|
|
bredator - 41
Champion
(offline)
Dabei seit 03.2008
5319
Beiträge
|
Geschrieben am: 23.03.2010 um 22:07 Uhr
Zuletzt editiert am: 23.03.2010 um 22:30 Uhr
|
|
öh... nein
stdio.h ist eine Standardbibliothek von C, und man schreibt sie ohne u, weil sie nichts mit Studio zu tun hat ;)
std = standard
io = in and out
Darum lieber nix dazu sagen, wenn man nicht genau weiss, wovon man spricht ;)
Lache nicht über jemanden, der einen Schritt zurück macht. Er könnte Anlauf nehmen.
|
|
kikl - 35
Halbprofi
(offline)
Dabei seit 12.2005
123
Beiträge
|
|
Geschrieben am: 23.03.2010 um 22:09 Uhr
|
|
??
|
|
2aXe2SOm0fXp
Halbprofi
(offline)
Dabei seit 09.2009
157
Beiträge
|
|
Geschrieben am: 23.03.2010 um 22:19 Uhr
|
|
You made my day! :D
|
|
Spasslex - 114
Experte
(offline)
Dabei seit 09.2006
1308
Beiträge
|
|
Geschrieben am: 24.03.2010 um 16:08 Uhr
|
|
Fehler im Layer 8
Die URL wurde geblockt (keine Werbung mehr auf TU) :-)
|
|
Motocross_M - 30
Halbprofi
(offline)
Dabei seit 01.2006
375
Beiträge
|
|
Geschrieben am: 24.03.2010 um 16:21 Uhr
|
|
okay ich habs jetzt ^^
was muss ich eig. statt int schreiben, dass auch eine dezimalzahl ausgegeben werden kann?
Ich hab keine Fußzeile nötig.
|
|
kikl - 35
Halbprofi
(offline)
Dabei seit 12.2005
123
Beiträge
|
|
Geschrieben am: 24.03.2010 um 17:21 Uhr
|
|
Zitat von Motocross_M: okay ich habs jetzt ^^
was muss ich eig. statt int schreiben, dass auch eine dezimalzahl ausgegeben werden kann?
double oder float
|
|
Motocross_M - 30
Halbprofi
(offline)
Dabei seit 01.2006
375
Beiträge
|
|
Geschrieben am: 24.03.2010 um 18:10 Uhr
|
|
welches von beiden soll ich nehmen?
Ich hab keine Fußzeile nötig.
|
|
kikl - 35
Halbprofi
(offline)
Dabei seit 12.2005
123
Beiträge
|
Geschrieben am: 24.03.2010 um 18:14 Uhr
Zuletzt editiert am: 24.03.2010 um 18:14 Uhr
|
|
Zitat von Motocross_M: welches von beiden soll ich nehmen? 
Je nachdem was du brauchst. double und float unterscheiden sich in der Genauigkeit und folglich auch in der Größe. Wenn du etliche Nachkommastellen wissen musst, nimmst du double.
|
|
Motocross_M - 30
Halbprofi
(offline)
Dabei seit 01.2006
375
Beiträge
|
|
Geschrieben am: 24.03.2010 um 18:15 Uhr
|
|
also ich hab die "int"'s durch jeweils double und danach durch float ersetzt, aber da kommt kein gescheites ergebnis raus...
Ich hab keine Fußzeile nötig.
|
|
kikl - 35
Halbprofi
(offline)
Dabei seit 12.2005
123
Beiträge
|
|
Geschrieben am: 24.03.2010 um 18:35 Uhr
|
|
Zitat von Motocross_M: also ich hab die "int"'s durch jeweils double und danach durch float ersetzt, aber da kommt kein gescheites ergebnis raus...
Weil deine Berechnung so nicht stimmt, worauf dich jemand anders weiter oben schon hingewiesen hat.
|
|
Motocross_M - 30
Halbprofi
(offline)
Dabei seit 01.2006
375
Beiträge
|
|
Geschrieben am: 24.03.2010 um 19:24 Uhr
|
|
ich hab die so geändert wie ders gesagt hat.
aber wenn ich mit double mach, was muss ich dnn schreiben?
Ich hab keine Fußzeile nötig.
|
|
kikl - 35
Halbprofi
(offline)
Dabei seit 12.2005
123
Beiträge
|
|
Geschrieben am: 24.03.2010 um 19:53 Uhr
|
|
Zitat von Motocross_M: ich hab die so geändert wie ders gesagt hat.
aber wenn ich mit double mach, was muss ich dnn schreiben?
hast du bei printf und scanf auch dein %d durch %lf (wenn du double verwendest) bzw. %f (wenn du float verwendest) ersetzt?
|
|