Numara karşısına numara oluşturma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Numara karşısına numara oluşturma

Mesaj gönderen delphist »

S.a. Arkadaşlar benim yapmak istediğim bir sey var...Toplam 5 hane olması gerekiyor...
00001
00002
00003
00004
bu numaralar 99999 kadar gidiyor. Benim yapmak istediğim ise şu bu numaraların karşısında başka bir numara oluşmasını istiyorum bi mantıkla ve bu numaralar 99999 geçmeyecek ve hepsinin bir karşılığı olacak ve birbirlerine benzemeyecekler.

Örneğin 00001 karşılığı 2300 olsun 2300 de otomatikmen 00001 olmuş oluyor...99999 tane nonun karşılığına yine 99999 tane numaradan farklı karşılıklar gelmesini istiyorum bi türlü düşünemdim yapamadım. Bunun yolu nedir nasıl yapabilirim. Yardımlarınızı bekliyorum.

İyi Çalışmalar
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

bence 2 tablo oluştur.
tablo1 : no1, no2
tablo2 : no_base

tablo1deki no1 alanını 1den 100e kadar doldur mesela
tablo2deki no_base alanını da 1den 100e kadar doldur.

tablo1in ilk kaydından başla ve random ile tablo2den bir kayıt seçip tablo1in no2 alanına yaz. tablo2den seçilen kaydı sil.

işlem tamamlandığı zaman tablo1 şöyle bir hal alacaktır.
no1 no2
1 -- 67
2 -- 45
3 -- 12
4 -- 65
5 -- 11
....

umarım bir fikir verebilmişimdir.
kolay gelsin.
mero
Üye
Mesajlar: 109
Kayıt: 04 Mar 2005 04:54

Mesaj gönderen mero »

Biraz basit oldu ama işinize yarar umarım. Üzerinde biraz daha oynama yaparak daha fazla karıştırabilirsiniz.

Kod: Tümünü seç

function karistir1(deger:integer):integer;
var
 karistirac:integer;
begin

 if (deger mod 3)=0 then
   karistirac:=23412; //bu rakamın 3 e bölümü 0
 if (deger mod 3)=1 then
   karistirac:=18631; //bu rakamın 3 e bölümü 1
 if (deger mod 3)=2 then
   karistirac:=34214; //bu rakamın 3 e bölümü 2



 if deger>=99999-karistirac then
   begin
    karistir1:=99999-(deger-(99999-karistirac));
    exit;
   end;

 karistir1:=99999-(deger+karistirac);

end;
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

ama bir mantık içerisinde bu noyu vermem lazım. Yani elimde hiç veri olmasa ben tekrar bu noları bulmak istesem bulmam lazım. :cry:
mero
Üye
Mesajlar: 109
Kayıt: 04 Mar 2005 04:54

Mesaj gönderen mero »

İsterseniz bulabilirsiniz. Numaraların karşılıkları değişmiyor. Yani rastgele numaralar üretmiyor. 1 in karşılığı her zaman 81367 dir. 81367 nin karşılığıda 1.

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
var
 i:integer;
begin
for i:=1 to 99999 do
  begin
   memo1.Lines.Add(inttostr(i));
   memo2.Lines.Add(inttostr(karistir1(i)));
  end;
end;
Kullanıcı avatarı
bluekid
Kıdemli Üye
Mesajlar: 541
Kayıt: 11 Haz 2004 10:45
İletişim:

Mesaj gönderen bluekid »

y=(a*x+b)mod 100000

x = verilen sayı
y = sonuç

a ve b herhangi bir tamsayı
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
99999 a tamamlayacak şekilde kullansanız olmaz mı?
mesela 1 için karşılık 99 998 ,
2 için 99 997 yapsanız
...
25 için 99 974 gibi

yani sayıyı ve karşılığını topladığınız zaman 99 999 etsin.

Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@delphist

- Sanıyorum veri şifreleme -pardon şifreleme yanlış veya eksik oldu- gerçek verilere erişimi, üçüncü şahıslar için zorlaştırma üzerine bir çalışma yapmak isteniyor.

- Redhouse sözlük (7 mb'lık veritabanı olan eski sürümü sanıyorum, 34000 kelime hazneli idi ve tümü rahatlıkla görüntülenebiliyor) bu metodu kullanıyor ama çok büyük bir hata yapmış, bunları sıralı kullanmış... 8)

- Kendi projende sıralı olmasına mani ol ki, çözümü zor olsun. Kaynak numaradan yola çıkıldığında, sonuçlar da sıralı çözümler sunacağından riski ortadan kaldırmıyor.
Resim
Resim ....Resim
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

s.a. Aynen dediğin gibi muharrem abi...Hay ağzınla bin yaşa...verdiğin örnek içinde teşekkür ederim...Dikkat edicem bir kaç şekilde deniyorum bittiği zaman buraya sonucu yazacağım. Belki bir başkasınında işine yarar...:)
mero
Üye
Mesajlar: 109
Kayıt: 04 Mar 2005 04:54

Mesaj gönderen mero »

Olay anladığım kadarı ile muharrem abinin dediği gibi sözlük tarzında bir program. Redhouse veri tabanını bende görmüştüm ama nasıl olduğunu tam olarak hatırlamıyorum.

-Şimdi olayı sözlük yapımı gibi birşey olarak düşünürsek. İki tablomuz var birinde türkçe kelimler diğerinde ingilizce kelimeler var.

-1 nolu tabloda türkçe kelimelerin yanlarındaki bir alanda ikinci tablodaki ingilizce karşılığı olan kelimenin sira numarası yazıyor. diyelim 1 yazıyor. diğer tablodan gidip 1 nolu kelimeye baktığımızda türkçe kelimenin ingilizce karşılığını buluyoruz.
Anladığım kadarı ile bizim burdaki amacımız 3. şahıs bu tabloya baktığında kelimeleri eşleştiremesin. Yani yukarıdaki gibi kullanmamız gerekiyor.

- Eğer birinci tabloda bir kelimenin yanıda 1 yazıyorsa bu diğer tabloda mesala 12742 tekabül edecekki biri baktığında eşleştiremesin.

Anlamış mıyım?

Muharrem abi demişki:
- Kendi projende sıralı olmasına mani ol ki, çözümü zor olsun. Kaynak numaradan yola çıkıldığında, sonuçlar da sıralı çözümler sunacağından riski ortadan kaldırmıyor.
Eğer anlamış isem muharrem abinin dediği gibi sıralı nasıl olmayacak?

Sonuçta 2. tabloya gidebilmesi ve o tablodan geriye dönebilmesi için(adam kelimenin ingilizcesine baktığında türkçeyi bulmak için) belli bir mantık ile gidip gelmesi gerekir. Yani random yapamayız.
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

yok hayır sözlük yazılımı değil ama muharrem abi orda güzel bir benzetme yaparak benim yapmak istediğim şeyi anlattı kısaca...eyvallah
Cevapla