edit...
so, ich müssts leider morgen abgeben...
jetzt stören mich noch folgende Punkte:
- Ausgabe erfolgt seitenverkehrt (da es auch rückwärts eingelesen wird... wie mach ichs da bei der ausgabe anders???)
- Endlosschleife bei der Addierprozedur
- Endlosschleife bei der Multiplizierprozedur
ich bitte euch noch um verbesserung, wenn alles passt geh ich euch morgen nichtmehr auf die nerven
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69:
| unit form;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Spin, StdCtrls, ExtCtrls, number_unit;
type TForm1 = class(TForm) NumEd: TEdit; Einbtn: TButton; Ausbtn: TButton; addbtn: TButton; multibtn: TButton; spanz: TSpinEdit; Label1: TLabel; Panel1: TPanel; Panel2: TPanel; Panel3: TPanel; Label2: TLabel; procedure EinbtnClick(Sender: TObject); procedure AusbtnClick(Sender: TObject); procedure addbtnClick(Sender: TObject); procedure multibtnClick(Sender: TObject); procedure FormCreate(Sender: TObject); private public end;
var Form1: TForm1; bignum : TListe; bignum1 : Tliste; implementation
{$R *.dfm}
procedure TForm1.EinbtnClick(Sender: TObject); begin bignum.lifopush(numed.text); end;
procedure TForm1.AusbtnClick(Sender: TObject); begin bignum.ausgabe; end;
procedure TForm1.addbtnClick(Sender: TObject); var hilf: string; begin hilf:= numed.Text; bignum1.add(hilf); end;
procedure TForm1.multibtnClick(Sender: TObject); begin bignum.multi(spanz.value); end;
procedure TForm1.FormCreate(Sender: TObject); begin bignum:= TListe.create; bignum1:= TListe.create; end;
end. |
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152:
| unit number_unit;
interface uses stdctrls,Dialogs,extctrls,Sysutils;
type TKnoten=class(TObject) nummer:integer; next:TKnoten; constructor Create(s:integer); end;
TListe=class(TObject) anf:TKnoten; Constructor Create; destructor destroy;override; procedure lifopush(zahl:string); function ausgabe:string; function ausgabe2:string; procedure add(zahl:string); procedure multi(koeff:integer); end; var neu: TKnoten;
implementation
uses form; Constructor TKnoten.Create(s:integer); begin nummer:=s;next:=nil;
end;
Constructor Tliste.Create; begin inherited Create; anf:=nil; end;
procedure Tliste.lifopush(zahl:string); var i: integer; begin anf:=nil; for i:= 1 to length(zahl) do begin neu:=TKnoten.create(strtoint(zahl[i])); neu.nummer:=strtoint(copy(zahl,i,1)); neu.next:=anf; anf:=neu; end; end;
procedure Tliste.add(zahl:string); var zahlstr:string; lauf,lauf2: Tknoten; i,h: integer; begin lauf:= bignum.anf; lauf2:= bignum1.anf; anf:=nil; h:= 0; anf:= lauf; zahlstr:= ''; for i:= 1 to length(zahl) do begin neu:=TKnoten.create(strtoint(zahl[i])); neu.nummer:=strtoint(copy(zahl,i,1)); neu.next:=anf; anf:=neu; end; ausgabe2; while lauf <> nil do begin zahlstr:= zahlstr+ inttostr((lauf.nummer+lauf2.nummer) mod 10 + h); h:= (lauf.nummer + lauf2.nummer) div 10; lauf:= lauf.next; end; form1.panel3.Caption:=zahlstr; end;
function Tliste.ausgabe:string; var zahlstr:string; lauf:Tknoten; begin zahlstr:=''; lauf:=anf; while lauf <> nil do begin zahlstr:= zahlstr + inttostr(lauf.nummer); lauf:=lauf.next; end; result:=zahlstr; form1.panel1.caption:=zahlstr; end;
function Tliste.ausgabe2:string; var zahlstr:string; lauf:Tknoten; begin zahlstr:=''; lauf:=anf; while lauf <> nil do begin zahlstr:= zahlstr + inttostr(lauf.nummer); lauf:=lauf.next; end; result:=zahlstr; form1.panel2.caption:=zahlstr; end;
procedure Tliste.multi(koeff:integer); var lauf: Tknoten; h: integer; zahlstr: string; begin h:= 0; lauf:=anf; zahlstr:= ''; form1.panel2.caption:= ' x '+inttostr(koeff)+' '; if koeff= 0 then begin anf:= nil; form1.panel3.caption:= '0'; end else while lauf <> nil do begin zahlstr:=zahlstr + inttostr((lauf.nummer mod 10 * koeff)+h); h:= lauf.nummer div 10; lauf:= lauf.next; end; form1.panel3.caption:= zahlstr; end;
destructor Tliste.destroy; var alt1,alt2:TKnoten; begin alt1:=neu; while alt1<>nil do begin alt2:=alt1; alt1:=alt1.next; alt2.free; end; inherited destroy; end;
end. |
Liebe Grüße, und bitte helft mir noch einmal...