Du bist nicht eingeloggt.

Login

Pass

Registrieren

Community
Szene & News
Locations
Impressum

Forum / Bits und Bytes

Programme stürzen ab

  -1- -2- -3- vorwärts >>>  
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

Zitat von philipphunge:

#include stdio.h -> studio.h


ö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

Zitat von philipphunge:

#include stdio.h -> studio.h


??
2aXe2SOm0fXp
Halbprofi (offline)

Dabei seit 09.2009
157 Beiträge
Geschrieben am: 23.03.2010 um 22:19 Uhr

Zitat von philipphunge:

#include stdio.h -> studio.h


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

Zitat von philipphunge:

#include stdio.h -> studio.h


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? :-D

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? :-D


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?
  -1- -2- -3- vorwärts >>>
 

Forum / Bits und Bytes

(c) 1999 - 2026 team-ulm.de - all rights reserved - hosted by ibTEC Team-Ulm

- Presse - Blog - Historie - Partner - Nutzungsbedingungen - Datenschutzerklärung - Jugendschutz -