Tam Sürümünü Görmek İçin : Delphi ile Sayıyı Metine Çevirme #KAYNAK#
Bu fonksiyonu Copy/Paste yaparak kullanabilirsiniz. Fonksiyon geriye String çeviriyor dikkat.
function Cevir(Val : extended) : String;
const
hanex : array[0..2, '0'..'9'] of String = (
('', 'Bir ', 'İki ', 'Üç ', 'Dört ', 'Beş ', 'Altı ', 'Yedi ', 'Sekiz ', 'Dokuz '),
('', 'On ', 'Yirmi ', 'Otuz ', 'Kırk ', 'Elli ', 'Atmış ', 'Yetmiş ', 'Seksen ', 'Doksan '),
('', 'Yüz ', 'İki Yüz ', 'Üç Yüz ', 'Dört Yüz ', 'Beş Yüz ', 'Altı Yüz ', 'Yedi Yüz ', 'Sekiz Yüz ', 'Dokuz Yüz '));
katx : array[0..5] of String = ('', 'Bin ', 'Milyon ', 'Milyar ', 'Trilyon ', 'Katrilyon ');
var
Kat : Integer;
function _Cevir(sy : String) : String;
var
lsy, hn : Integer;
begin
Result := ''; if sy = '' then Exit;
if (sy = '1') and (kat = 1) then begin Result := 'Bin'; Exit; end;
hn := 0; lsy := length(sy);
while (hn < 3) and (hn < lsy)
do
begin
Result := hanex[hn, sy[lsy - hn]] + Result;
Inc(hn);
end;
Result := Result + katx[kat];
Inc(kat);
if lsy > 3 then Result := _Cevir(copy(sy, 1, lsy - 3)) + Result;
end;
begin
Result := ''; kat := 0;
Result := _Cevir(formatFloat('##0', int(Val)));
end;
Şeytan diyor: "C'de 10 satırda yaz şunu!" :D
Neyse mübarek gün, uymayım.. :)
@ee++
Geçenki wordlist olayını unutmuş değilim :D . Amaille yazıcam diyosan, yazdığım bi prog daha var, ama biraz illegal çizgide, onu şeytana uyup 10 satıra indir :)
@huzeyfe
olm. gaza getirme şunu, en hızlı diyoz 2ye katlıyo, en küçük diyoz, yarısı kadar yapıyo, bıraktırıcak walla bana bu işi...
(tabi bunlar heeep $aka...)
CrazyCat
13/11/2002, 09:23
Bi program en fazla bu kadar uzatılabilirdi :D
Bir ara bişeler yapmak için başlamıştım inşaat halinde bırakmışım. İskele için kullandığım kalaslarla harç için yığdığım çimento ve aletleri ayıklarsam bişeye benzer..
Şaka bi tarafa plansız olarak yazdığım için yanlış bir yol kullandığımı farkedince yarım bırakmışım. :D
Ama Çalışıyor. (tabi çalışmak amaç ise ii )
#include <iostream>
#include <string>
typedef char st[12];
typedef char stt[24];
st birler[10] = {"sifir","Bir","Iki","Uc","Dort", "Bes","Alti","Yedi","Sekiz","Dokuz"};
st onlar[10]= {"","On","Yirmi","Otuz","Kirk","Elli", "Altmis","Yetmis","Seksen","Doksan"};
class Basamak
{
long *sayi;
int basamak;
int basamak_say;
public:
static char yazi[100];
static char Yaziyla[100];
Basamak (long);
~Basamak ();
int basamak_adedi (void);
char YaziyaCevir (void);
};
char Basamak::yazi[100]="";
char Basamak::Yaziyla[100]=" ";
Basamak::Basamak (long a) // nesne yapıcı
{
sayi=new long;
*sayi = a;
}
Basamak::~Basamak () // nesne silici
{
delete sayi;
}
int Basamak::basamak_adedi (void) // üye fonksiyon
{
char buffer[100];
_itoa( *sayi, buffer, 10 );
yazi=buffer;
return (basamak_say=strlen(buffer));
}
char Basamak::YaziyaCevir (void)
{
stt Basamak_Yaz[8];
char Sonuc[100]="";
for (int x=basamak_say-1;x>=0;x--)
{
char m;
int kacinci=basamak_say-x;
switch( kacinci )
{
case 1:
if (basamak_say>1&atoi(&(m=(yazi[x])))==0) {
cout<<"yazi["<<x<<"]="<<yazi[x]<<" = "<<endl;
}
else {
strcat(Yaziyla,birler[atoi(&(m=(yazi[x])))]);
strcpy(Basamak_Yaz[0],birler[atoi(&(m=(yazi[x])))]);
}
break;
case 2:
strcat(Yaziyla,onlar[atoi(&(m=(yazi[x])))]);
strcpy(Basamak_Yaz[1],onlar[atoi(&(m=(yazi[x])))]);
break;
case 3:
if (atoi(&(m=(yazi[x])))!=1&atoi(&(m=(yazi[x])))!=0)
{
strcat(Yaziyla,birler[atoi(&(m=(yazi[x])))]);
strcat(Yaziyla,"Yuz");
strcpy(Basamak_Yaz[2],birler[atoi(&(m=(yazi[x])))]);
strcat (Basamak_Yaz[2],"Yuz");
}
else if (atoi(&(m=(yazi[x])))!=0){
strcat(Yaziyla,"Yuz");
strcpy(Basamak_Yaz[2],"Yuz");
}
break;
case 4:
if (atoi(&(m=(yazi[x])))!=1&atoi(&(m=(yazi[x])))!=0||basamak_say>4&atoi(&(m=(yazi[x])))!=0)
{
strcat(Yaziyla,birler[atoi(&(m=(yazi[x])))]);
strcat(Yaziyla,"Bin");
strcpy(Basamak_Yaz[3],birler[atoi(&(m=(yazi[x])))]);
strcat(Basamak_Yaz[3],"Bin");
}
else if (atoi(&(m=(yazi[2])))!=0||atoi(&(m=(yazi[3])))!=0)
{
strcat(Yaziyla,"Bin");
strcpy(Basamak_Yaz[3],"Bin");
}
else cout<<"yazi["<<x<<"]="<<yazi[x]<<" = "<<endl;
break;
case 5:
strcat(Yaziyla,onlar[atoi(&(m=(yazi[x])))]);
strcpy(Basamak_Yaz[4],onlar[atoi(&(m=(yazi[x])))]);
break;
case 6:
if (atoi(&(m=(yazi[x])))!=1&atoi(&(m=(yazi[x])))!=0)
{
strcat(Yaziyla,birler[atoi(&(m=(yazi[x])))]);
strcat(Yaziyla,"Yuz");
strcpy(Basamak_Yaz[5],birler[atoi(&(m=(yazi[x])))]);
strcat(Basamak_Yaz[5],"Yuz");
}
else if (atoi(&(m=(yazi[x])))==1)
{
strcat(Yaziyla,"Yuz");
strcpy(Basamak_Yaz[5],"Yuz");
}
break;
case 7:
if (atoi(&(m=(yazi[x])))!=0)
{
strcat(Yaziyla,birler[atoi(&(m=(yazi[x])))]);
strcat (Yaziyla,"Milyon");
strcpy(Basamak_Yaz[6],birler[atoi(&(m=(yazi[x])))]);
strcat(Basamak_Yaz[6],"Milyon");
}
else {
strcat(Yaziyla,"Milyon");
strcpy(Basamak_Yaz[6],"Milyon");
}
break;
case 8:
strcat(Yaziyla,onlar[atoi(&(m=(yazi[x])))]);
strcpy(Basamak_Yaz[7],onlar[atoi(&(m=(yazi[x])))]);
default :
cout<<endl;
}
}
for (int j=basamak_say-1;j>=0;j--)
{
strcat(Sonuc,Basamak_Yaz[j]);
}
cout<<"Sonuc ="<<Sonuc<<endl;
return (0);
}
int main(int argc, char *argv[])
{
long cevir;
cin>>cevir;
Basamak Yaziyla(cevir); // nesne yapıcı ile nesne oluşturuldu.
cout<<Yaziyla.basamak_adedi ();
cout<<endl;
Yaziyla.YaziyaCevir ();
// cout<<"yazi ="<<Yaziyla.yazi<<endl;
// cout<<"Yaziyla ="<<Yaziyla.Yaziyla<<endl;
system("PAUSE");
return 0;
}
@crazycat
Kutlarım çok başarılı. Amma... :) ee++ dan ses gelmiyosa (ki benimwordlistmaker'ı gösterdiğimde de bi süre gelmemişti.:) ) emin olkioturup en cimri kodları en kısa şekilde yazmaya başlamıştır. Hiç ummadığın algoritmalarla, bide öğretme isteği ile tutuşturu verir yeni derlemeyi...
Bak göreceksin :)
Ellerine sağlık :)
Yok yav.. Ne ugrascam.. Ugrastigim isleri bi bilsen.. :) :(..
bu dönemi nasıl özlüyorum forumda, anlatamam...
Forum Yazılımı : vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.