AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen FreePascal Lazarus Programm haut vor dem Anzeigen der Antwort ab
Thema durchsuchen
Ansicht
Themen-Optionen

Lazarus Programm haut vor dem Anzeigen der Antwort ab

Ein Thema von Wotan1 · begonnen am 15. Dez 2021 · letzter Beitrag vom 16. Dez 2021
Antwort Antwort
Wotan1

Registriert seit: 15. Dez 2021
5 Beiträge
 
#1

Lazarus Programm haut vor dem Anzeigen der Antwort ab

  Alt 15. Dez 2021, 21:53
Warum Endet dieses Programm, bevor es "Notendurchschnitt" ausgegeben hat?
Vielen Dank schonmal im Vorraus


program Project2;
uses
SysUtils,crt;
var
Punkte: String;
A: TStringArray;
kPunkte,x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,Anzahl,i:byt e;
Notendurchschnitt: real;

begin
writeln('Notendurchschnittsrechner');
writeln('~~~~~~~~~~~~~~~~~~~~~~~~~');
writeln;
writeln ('Punkte: ');
writeln ('Kursarbeitspunkte: ');
gotoxy(22,4);readln(Punkte);
gotoxy(22,5);readln(kPunkte);
writeln;

A :=Punkte.Split(',');
x0:=strtoint(A[0]);
x1:=strtoint(A[1]);
x2:=strtoint(A[2]);
x3:=strtoint(A[3]);
x4:=strtoint(A[4]);
x5:=strtoint(A[5]);
x6:=strtoint(A[6]);
x7:=strtoint(A[7]);
x8:=strtoint(A[8]);
x9:=strtoint(A[9]);


anzahl := 0;
for i := 1 to length(Punkte) do
begin
if (Punkte[i] = ',') then
anzahl := anzahl + 2;
end;


Notendurchschnitt:=(((x1+x2+x3+x4+x5+x6+x7+x8+x9+x 0)/anzahl)*2+kPunkte)/3;
write('Notendurchschnitt: ');write(Notendurchschnitt);


readln;
end.

Geändert von Wotan1 (15. Dez 2021 um 22:26 Uhr)
  Mit Zitat antworten Zitat
mmw
(Gast)

n/a Beiträge
 
#2

AW: Lazarus Programm haut vor dem Anzeigen der Antwort ab

  Alt 15. Dez 2021, 22:44
Hallo,

mal jetzt schnell

kPunkte,x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,Anzahl,i:byt e;

'byte' zusammen schreiben

Notendurchschnitt:=(((x1+x2+x3+x4+x5+x6+x7+x8+x9+x 0)/anzahl)*2+kPunkte)/3;

'x 0' müsste 'x0' sein

strtoint konventiert einen String in einen Integer nicht Byte

Gruß
  Mit Zitat antworten Zitat
Wotan1

Registriert seit: 15. Dez 2021
5 Beiträge
 
#3

AW: Lazarus Programm haut vor dem Anzeigen der Antwort ab

  Alt 15. Dez 2021, 23:15
Hallo,

mal jetzt schnell

kPunkte,x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,Anzahl,i:byt e;

'byte' zusammen schreiben

Notendurchschnitt:=(((x1+x2+x3+x4+x5+x6+x7+x8+x9+x 0)/anzahl)*2+kPunkte)/3;

'x 0' müsste 'x0' sein

strtoint konventiert einen String in einen Integer nicht Byte

Gruß


Danke, aber das ist es leider nicht, das mit den Leerzeichen war nur komisch rpberkoppiert und wo ich Byte in Integer geändert habe ging es acu nicht. Grüße
  Mit Zitat antworten Zitat
Wotan1

Registriert seit: 15. Dez 2021
5 Beiträge
 
#4

AW: Lazarus Programm haut vor dem Anzeigen der Antwort ab

  Alt 15. Dez 2021, 23:33
Ich habe das Problem gefunden. Es besteht darin, das wenn ich weniger als 10 Abtrennungen nehme es abbricht, weil es die anderen nicht gibt... Ich hatte halt gedacht, das wenn ich bis 10 hoch gehe, reicht das als maximale Notenanzahl, weil man ja nicht weis wie viele Noten man hat...

Wisst ihr wie man dies umgeht?

Geändert von Wotan1 (15. Dez 2021 um 23:36 Uhr)
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
617 Beiträge
 
Delphi XE6 Enterprise
 
#5

AW: Lazarus Programm haut vor dem Anzeigen der Antwort ab

  Alt 16. Dez 2021, 09:11
Ich habe das Problem gefunden. Es besteht darin, das wenn ich weniger als 10 Abtrennungen nehme es abbricht, weil es die anderen nicht gibt... Ich hatte halt gedacht, das wenn ich bis 10 hoch gehe, reicht das als maximale Notenanzahl, weil man ja nicht weis wie viele Noten man hat...
Statt x1...x9 ein Array of Byte. Und dann die Länge des Bytearray auf die Länge des Stringarray setzen: SetLength(X, Length(A)); Dann kann auch die Zuweisung in einer Schleife laufen.
  Mit Zitat antworten Zitat
Wotan1

Registriert seit: 15. Dez 2021
5 Beiträge
 
#6

AW: Lazarus Programm haut vor dem Anzeigen der Antwort ab

  Alt 16. Dez 2021, 13:29
Ich habe das Problem gefunden. Es besteht darin, das wenn ich weniger als 10 Abtrennungen nehme es abbricht, weil es die anderen nicht gibt... Ich hatte halt gedacht, das wenn ich bis 10 hoch gehe, reicht das als maximale Notenanzahl, weil man ja nicht weis wie viele Noten man hat...
Statt x1...x9 ein Array of Byte. Und dann die Länge des Bytearray auf die Länge des Stringarray setzen: SetLength(X, Length(A)); Dann kann auch die Zuweisung in einer Schleife laufen.
Danke, ich werde es mal ausprobieren
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Lazarus Programm haut vor dem Anzeigen der Antwort ab

  Alt 15. Dez 2021, 22:49
Setze mal am ersten "begin" einen Breakpoint (mit F5).
Wenn Du dann das Programm startest kann Du mit F8 das Programm zeilenweise durchlaufen (Debuggen).
In einer Zeile sollte daher immer nur eine Anweisung stehen, das ist übersichtlicher.

Mit dem Mauszeiger über den Variablen kannst Du deren Werte anzeigen lassen und prüfen, ob alles wie erwartet berechnet wird.

Wenn z.B. ein String nicht in eine Zahl umgewandelt werden kann, bricht das Programm ab.
Das wird vermutlich das Problem sein.


PS: Hier im Forum kannst Du Deinen Code formatiert anzeigen lassen (der Helm-Schalter im Editor). Dadurch wird das für alle besser lesbar.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Wotan1

Registriert seit: 15. Dez 2021
5 Beiträge
 
#8

AW: Lazarus Programm haut vor dem Anzeigen der Antwort ab

  Alt 15. Dez 2021, 23:34
Setze mal am ersten "begin" einen Breakpoint (mit F5).
Wenn Du dann das Programm startest kann Du mit F8 das Programm zeilenweise durchlaufen (Debuggen).
In einer Zeile sollte daher immer nur eine Anweisung stehen, das ist übersichtlicher.

Mit dem Mauszeiger über den Variablen kannst Du deren Werte anzeigen lassen und prüfen, ob alles wie erwartet berechnet wird.

Wenn z.B. ein String nicht in eine Zahl umgewandelt werden kann, bricht das Programm ab.
Das wird vermutlich das Problem sein.


PS: Hier im Forum kannst Du Deinen Code formatiert anzeigen lassen (der Helm-Schalter im Editor). Dadurch wird das für alle besser lesbar.
danke, hat gut gegklappt
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz