Delphi : Division mit Rest?

Hallo liebe Wer-Weiss-Was-Mitglieder,

ich hätte da mal eine Frage und es wäre echt toll, wenn Ihr sie beantworten könntet. Also ich versuche mir gerade Delphi programmieren selbst bei zu bringen. Ich habe erstmal mit der Konsolen Anwendung begonnen. Ich weiß jetzt schon mit der Strukturierung und den Variablen, aber wie Division mit Rest machen da find ich nicht im Internet. Das habe ich bis jetzt

program Probe1;
//Felix Schmidt,15.09.2012
{$APPTYPE CONSOLE}
uses
sysutils;
Var a , b , Division :integer

begin
// Hier Anwender-Code

write('Zahla: ');readln(a);
write('Zahlb: ');readln(b);

Division:=(’ a/b ');

write('Das Ergebniss ist: , ');

readln;

Versteht Ihr ? Ich sitzt echt auf dem Schlauch denk auch, dass ich so zwischen durch einige Fehler habe. Also bitte an alle Profi-Programmierer oder Hobby-Informatiker bitte helft mir wäre echt nett.
end.

Hi, guck mal in der Delphi-Hilfe.
Es müsste div und mod sein.
div = ganzahlig teilen.
mod = Rest.

Man muss also beides ausführen mit den gleichen Eingabezahlen um beides zu erhalten.

Warum fängst du nicht gleich mit grafischer Anwendung an?
Das geht recht einfach.
2 Eingabefelder, ein oder 2 Label und ein Knopf auf die Anwendung setzen.
Wie die jeweils abzufragenden Attribute heißen, steht im Objekt-Inspektor.
Dann ein Doppelklick auf den Knopf und man kann den Code Eingeben, den der Knopf durchführen soll

weisst du was hier falsch ist:

program Probe1;
//Felix Schmidt,15.09.2012
{$APPTYPE CONSOLE}
uses
sysutils;
Var a,b,Quotient :integer;
begin
// Hier Anwender-Code

write('Zahla: ');readln(a);
write('Zahlb: ');readln(b);

quotient:=(a div b);

write(Das Ergebniss ist: ’ quotient ');

readln;

end.

Das ist leicht:
Die Variablen sind Integer.
Den ganzen Teil der Division speicherst Du in eine Variable ganz vom Typ Integer:

Codezeile: ganz:= a DIV b;

Den Rest der Division speicherst Du in eine Variable rest auch vom Typ Integer:

Codezeile: rest:= a MOD b;

Jetzt die Ausgabe zusammenfügen…

z.B.
writeln(a,’:’,b,’=’,ganz,’ Rest: ',rest);

ohr Was mach ich falsch :smiley:

program Probe1;
//Felix Schmidt,15.09.2012
{$APPTYPE CONSOLE}
uses
sysutils;
Var a,b,Quotient :integer;
begin
// Hier Anwender-Code

write('Zahla: ');readln(a);
write('Zahlb: ');readln(b);

Quotient:=a Mod b;

write(a,’/’,b);

readln;

end.

Ich glaub ich kapier das nicht. Immer fehler meldung

DIV ist die Ganzzahldivision
MOD berechnet den „Rest“
z.B. 15:7= ?
15 DIV 7 = 2, die 7 passt 2mal in die 15
15 MOD 7 = 1, der Rest bei der Division 15:7 ist 1

Probiere das mal aus…

program Probe1;
//Felix Schmidt,15.09.2012
{$APPTYPE CONSOLE}
uses
sysutils;
Var a,b,Ganz,Rest :integer;
begin
write(‚Zahla: ‚);readln(a);
write(‚Zahlb: ‚);readln(b);
Ganz:=a DIV b;
Rest:=a MOD b;
write(a,‘/‘,b,‘=‘,Ganz,’ Rest: ',Rest);
readln;
end.

1 Like

Was passiert denn?

vielen Dank hab es jetzt kannst du mir nochmal bitte helfen ?

ich möchte eine ganz normale summe … was mach ich falsch ?

program Project1;
//Felix Schmidt,16.09.2012{$APPTYPE CONSOLE}
uses
sysutils;

var a,b,summe :integer;

begin
// Hier Anwender-Code
write('Zahl 1: ');readln(a);
write('Zahl 2: ');readln(b);

summe:=a+b;

write(‚Ergebniss der Summe:‘ ,summe) ;

readln;

end.

BITTE

Code ist ok!
Kann keinen Fehler entdecken…

Gib den Quelltext einfach nochmal ein…

Hallo Antitofu,

statt
Division:=(‚a/b‘);

muss
Division:= a MOD b;
eingesetzt werden.

Ansonsten kannst du bei solchen „simplen“ Problemen, mal bei der Programmiersprache Pascal vorbeischauen. Das ist nämlich die Basis von Delphi. Also in Google nach „Pascal Division Rest suchen“ und du wirst fündig.

Viel Erfolg
AK

Hallo Antitofu,

dafür gibt es die mod-Funktion, die liefert den Rest einer Ganzzahldivision (Integerdivision).
Delpi-Hilfe:
Der Wert von x div y entspricht dem Wert von x/y, abgerundet in Richtung Null bis zum nächsten Integer-Wert.
Der Operator mod liefert den Rest, der sich bei der Division seiner Operanden ergibt. Das bedeutet: x mod y = x – (x div y) * y.
Wenn y in einem Ausdruck der Form x/y, x div y oder x mod y den Wert Null hat, tritt ein Laufzeitfehler ein. (na klar: Divison durch Null ist verboten!!!).
Hier ein kleines Programm (warum Konsolenprogramm, besser gleich ein ausführbares Programm schreiben, das ist auch nicht schwieriger):
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure Edit2Change(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Edit2Change(Sender: TObject);

begin
label6.caption := inttostr(strtoint(edit1.Text) mod strtoint(edit2.text));
label5.Caption := inttostr(strtoint(edit1.Text) div strtoint(edit2.text));
end;

end.

viel Spaß beim Programmieren!

WaKeh