1

C Programm kackt ab

Frage von Sam0174 Sam0174

Hey, wollte mal Fragen, was an meinen Code falsch ist. Das Programm kackt immer ab nach der ersten eingabe! Ist in C.

include <stdio.h>

int main() { float punkte, maximal, prozent; printf("Wie viel Punkte wurden erreicht?"); scanf("%f", punkte); printf("Wie viel Punkte gab es maximal?"); scanf("%f", maximal); maximal = maximal / 100; prozent = maximal / punkte; if ((prozent >= 95) && (prozent <= 100)) printf("1, sehr gut!"); if ((prozent >= 80) && (prozent < 95)) printf("2, gut!"); if ((prozent >= 65) && (prozent < 80)) printf("3, befriedigend!"); if ((prozent >= 45) && (prozent < 65)) printf("4, ausreichend!"); if ((prozent >= 25) && (prozent < 45)) printf("5, mangelhaft!"); if ((prozent >= 0) && (prozent < 25)) printf("6, ungenügend!"); return 0; }

Das ist mein Code!

Fragen zu gleichen Themen finden

Antworten (7)

  • 0
    Hilfreichste Antwort ausgezeichnet vom Fragesteller
    Antwort von tilly63 tilly63

    Hallo!

    Bei den beiden Scanf's müssen die Adressen(Pointer) angegeben werden, also &punkte bzw. &maximal.

    Gruss

    tilly63

  • 0
    Antwort von ChiefRocka ChiefRocka
  • 0
    Antwort von kl4819 kl4819

    Sieht nach Division durch Null aus. Kannst ja debuggen, ob punkte nicht 0 ist, weil irgendwas mit der Eingabe nicht stimmt.

  • 0
    Antwort von Sam0174 Sam0174

    Darf ich beim Typ float vielleicht keine glatten Zahlen eingeben? Also keine ohne Nachstellen?

    Kommentar von darkesttester darkesttesterdarkesttester

    Also soweit mir bekannt ist schon, ich tippe auf Compilerfehler hast du noch ein anderes Programm was du auf dem Rechner testen könntest??

  • 0
    Antwort von darkesttester darkesttester

    MMMh also ein Grund zum abstürzen sehe ich auf Anhieb nicht, aber irgendwie scheint mir mit der Logik was nicht zu stimmen oder ich habe nen knick in der optik, also du liest die werte "punkte" und "maximal" per Tastatureingabe ein richtig?? Dann nehmen wir mal an, dass Punkte mit 90 und maximal mit 100 angegeben werden. Jetzt kommt die Zeile die ich nicht verstehe jetzt rechnest du:

    maximal = maximal (100) / 100

    das ergibt laut Adam Ries den wert 1

    in der nächsten Zeile rechnest du dann:

    prozennt = maximal (1) / punkte (90)

    Was den Wert 0,0111 Periode ergibt. Nunja je nachdem wie du das Format für die Variable festgelegt hast könnte das auch der Grund für nen Absturz sein, ich hoffe ich konnte dir helfen

    Kommentar von darkesttester darkesttesterdarkesttester

    ersetz einfach mal (maximal = maximal / 100; prozent = maximal / punkte) durch prozent=punkte*100/maximal dann sollte es besser funzen

    Kommentar von Sam0174 Sam0174Sam0174

    das mit prozent = maximal (1) / punkte (90) istn fehler, ist schon korrigiert. soll eigentlich prozent = maximal (1) * punkte (90)

    Kommentar von darkesttester darkesttesterdarkesttester

    Sorry aber nen anderen Fehler kann ich im abgebildeten Quelltext nicht erkennen. Compilerfehler??? Kommt denn ne Meldung oder bricht er einfach nur ab???

    Kommentar von Sam0174 Sam0174Sam0174

    Compiler meldet keinen Fehler. Und abkacken tuts erst wenn ichs gestartet hab und die erste Zahl eingegeben hab!

  • 0
    Antwort von Himmelsgucker Himmelsgucker

    Was gibst Du ein? Wahrscheinlich vergisst Du, mindestens eine Dezimalstelle einzugeben. Obacht! Dezimalstellen müssen mit nem Punkt getrennt werden.

    Kommentar von Sam0174 Sam0174Sam0174

    glatte zahlen! also 50

  • 0
    Antwort von Sam0174 Sam0174

    Okay code wird komisch angezeigt! Hier siehts mans gut! http://www.pic-upload.de/view-3651534/test.jpg.html

Diese Frage

Verwandte Fragen

Noch nicht den richtigen Rat gefunden?

Einfach und schnell viele hilfreiche Ratschläge von Deutschlands aktivster Ratgeber-Community erhalten!

Einfach und schnell einen Tipp erstellen und Ihren guten Rat mit anderen teilen!

Einfach und schnell ein Video hochladen und anschaulichen Rat an alle geben!

Die unter gutefrage.net angebotenen Dienste und Ratgeber Inhalte werden nicht geprüft. Die Richtigkeit der Inhalte wird nicht gewährleistet. Rechtliche Hinweise finden Sie hier.