Alternierende Quersumme Quellcode

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
hannah
Beiträge: 3
Registriert: Mo 12. Sep 2022, 19:45

Alternierende Quersumme Quellcode

Beitrag von hannah »

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

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 359
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: Alternierende Quersumme Quellcode

Beitrag von Jorg3000 »

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

hannah
Beiträge: 3
Registriert: Mo 12. Sep 2022, 19:45

Re: Alternierende Quersumme Quellcode

Beitrag von hannah »

Hallo Jörg,
danke, jetzt habe ich es verstanden.
So macht es Sinn!

Gruß Hannah :)

Antworten