Mega Code Archive

 
Categories / Delphi / Algorithm Math
 

100 basamaklı sayıları toplamak

Unit Unit1; Interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; Type TForm1 = Class(TForm) Topla : TButton; // Form üzerine bir buton koyun ve adını Topla yapın Sayi_1 : TEdit; // Form üzerine bir Edit koyun ve adını Sayi_1 yapın Sayi_2 : TEdit; // Form üzerine bir Edit koyun ve adını Sayi_2 yapın Sonuc : TLabel; // Form üzerine bir Label koyun ve adını Sonuc yapın Procedure ToplaClick(Sender:TObject); Function Hesapla(Sayi_1,Sayi_2:String):String; Function FormatString(Yazi:String):String; Function WriteOutput(Rakam:Integer):String; Function RemoveExcessZeros(Yazi:String):String; Private Public End; Var Form1 : TForm1; Sayi : String; Implementation {$R *.dfm} Function TForm1.Hesapla(Sayi_1,Sayi_2:String):String; Var Birinci_Sayi : Array[1..100] Of Char; Ikinci_Sayi : Array[1..100] Of Char; Sayi_1_Uzunlugu : Integer; Sayi_2_Uzunlugu : Integer; x,y,z : Integer; Deger_1,Deger_2 : Integer; Alt_Toplam : Integer; Yazi_1 : String; Yazi_2 : String; Ara_Toplam : Integer; Yazi_3 : String; Begin Result:=''; Sayi:=''; Yazi_3:=''; Sayi_1_Uzunlugu:=0; Sayi_2_Uzunlugu:=0; Deger_1:=0; Deger_2:=0; Alt_Toplam:=0; Sayi_1:=FormatString(Sayi_1); Sayi_2:=FormatString(Sayi_2); Sayi_1_Uzunlugu:=Length(Sayi_1); Sayi_2_Uzunlugu:=Length(Sayi_2); Yazi_1:=''; Yazi_2:=''; Yazi_1:=Sayi_1; Yazi_2:=Sayi_2; For x:=100 DownTo 1 Do Birinci_Sayi[x]:=Yazi_1[x]; For y:=100 DownTo 1 Do Ikinci_Sayi[y]:=Yazi_2[y]; Ara_Toplam:=0; For z:=100 DownTo 1 Do Begin Deger_1:=StrToInt(Birinci_Sayi[z]); Deger_2:=StrToInt(Ikinci_Sayi[z]); Alt_Toplam:=Deger_1+Deger_2; If Ara_Toplam>0 Then Begin Alt_Toplam:=Alt_Toplam+Ara_Toplam; Ara_Toplam:=0; End; If Alt_Toplam>9 Then Begin Ara_Toplam:=0; Yazi_3:=''; Ara_Toplam:=Alt_Toplam; Yazi_3:=IntToStr(Alt_Toplam); Result:=WriteOutput(StrToInt(Yazi_3[2])); Ara_Toplam:=StrToInt(Yazi_3[1]); End Else Result:=WriteOutput(Alt_Toplam); End; Result:=RemoveExcessZeros(Result); End; Function TForm1.FormatString(Yazi:String):String; Var Hane_No : Integer; Begin Result:=''; For Hane_No:=1 To 100-Length(Yazi) Do Yazi:='0'+Yazi; Result:=Yazi; End; Function TForm1.WriteOutput(Rakam:Integer):String; Begin Result:=''; Sayi:=IntToStr(Rakam)+Sayi; Result:=Sayi; End; Function TForm1.RemoveExcessZeros(Yazi:String):String; Var Yeni_Yazi : String; Load : Boolean; Hane_No : Integer; Begin Result:=''; Yeni_Yazi:=''; Load:=False; For Hane_No:=1 To Length(Yazi) Do Begin If Yazi[Hane_No]<>'0' Then Load:=True; If Load=False Then Begin If Yazi[Hane_No]<>'0' Then Load:=True; End Else Yeni_Yazi:=Yeni_Yazi+Yazi[Hane_No]; End; Result:=Yeni_Yazi; End; Procedure TForm1.ToplaClick(Sender: TObject); Begin Sonuc.Caption:=Hesapla(Sayi_1.Text,Sayi_2.Text); End; End. // Kolay gelsin. // // Hakan HAMURCU // // hakan@hamurcu.com