Kann mir jemand diesen Quellcode zum Überprüfen, ob die alternierende Quersumme gleich 0 ist oder nicht erklären?
program Quersumme (input, output);
(*lieste ine zahl ein und gibt genau dann true aus,
wenn die alternierende Quersumme 0 ist*)
type
tNatZahl = 0..maxint;
var
a:tNatZahl;
s,i:integer;
begin
writeln('Geben Sie eine Zahl ein: ');
readln(a);
s:= 0;
i:= 1;
while a>0 do
begin
s:=s+i*(a mod 10);
a:=a div 10; diese und die nächste Zeile sind mir nicht einleuchtend; wie wird hier - der geraden Zahlen und + der ungeraden Zahlen berechnet?
i:=i*(-1)
end;
if s=0 then
writeln('Ja, die Quersumme ist 0.')
else
writeln('Nein, die Quersumme ist nicht 0.')
end.
Dank und Gruß
Hannah
Alternierende Quersumme Quellcode
- Jorg3000
- Lazarusforum e. V.
- Beiträge: 359
- Registriert: So 10. Okt 2021, 10:24
- OS, Lazarus, FPC: Win64
- Wohnort: NRW
Re: Alternierende Quersumme Quellcode
Hi!
So wie ich den Code lese, wird nicht zwischen geraden und ungeraden Zahlen/Ziffern unterschieden,
sondern die Ziffern einfach abwechselnd positiv und negativ zur Summe addiert.
Vielleicht meinst du mit gerade/ungerade die Position einer Ziffernstelle. Dies wird durch die abwechselnde Vorzeichenänderung pro Ziffer erreicht.
Auf folgender Seite wird ebenso verfahren: https://www.matheretter.de/wiki/alternierende-quersumme
Grüße, Jörg
So wie ich den Code lese, wird nicht zwischen geraden und ungeraden Zahlen/Ziffern unterschieden,
sondern die Ziffern einfach abwechselnd positiv und negativ zur Summe addiert.
Vielleicht meinst du mit gerade/ungerade die Position einer Ziffernstelle. Dies wird durch die abwechselnde Vorzeichenänderung pro Ziffer erreicht.
Auf folgender Seite wird ebenso verfahren: https://www.matheretter.de/wiki/alternierende-quersumme
Grüße, Jörg
Re: Alternierende Quersumme Quellcode
Hallo Jörg,
danke, jetzt habe ich es verstanden.
So macht es Sinn!
Gruß Hannah
danke, jetzt habe ich es verstanden.
So macht es Sinn!
Gruß Hannah
