Sözlük Klasik Dosyalama

Ahbap

Harbi Üye
Forum Üyesi
Katılım
29 Mayıs 2019
Mesajlar
8,562
Tepkime puanı
2
Bu programın asıl amacı hash algoritması ile sözlük.txt içindeki bilgilerin yeniden sözlük1.txt içinde
organize edilmesidir.Hash algoritması kişinin kendi algoritmasıdır. Bir çeşit adres bilgisi ile direk
kelimeye erişimdir.Program öncelikle sözlük.txt den verileri okuyarak yeniden organize ederek sözlük1.txt
içine yerleştirir.Hash algoritmasında önemli olan iki kriter vardır. Birincisi dosya boyutunu azaltmak
ikincisi ise çakışma sayısının az olmasıdır.Ama ikisi birbirine karşıdır.Biraz daha açıklarsak çakışma
çok olursa daha sıkı yerleştirme yapacağından dolayı dosya boyutu küçülür ama oluşma zamanı (disket için) oldukça uzar.Eğer çakışma sayısı az olursa bu durumda oluşan dosya boyutu çok büyür ama bu sefer oluşma zamanı (disket için) oldukça azalır. Bu program disketlerde çalıştırılınca daha anlamlı olur. Olay şudurki en
iyi hash algoritmasını bulup hem oluşma zamanını hemde dosya boyutunu ortalama seviyeye çekmek gerekir.

Kod:
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include <string.h>
#include "Unit1.h"
 #include <io.h>
 #include <stdlib.h>
 #include <conio.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int hesapla(char dizi[]);
FILE *dosya,*dosya1;
  char ingilizce[36];   int k,search,dosyabasi,tut,kontrol2;
  char turkce[79];
  int i;
  char temp[115];
  char kelime[35];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Button2->Visible=False;
Button3->Visible=False;
Edit1->Visible=False;
Edit2->Visible=False;
Label1->Visible=False;
Label2->Visible=False;
Label3->Visible=False;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::k1Click(TObject *Sender)
{
Application->Terminate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{ TDateTime saat=Time();
  Label2->Visible=True;
  Label2->Caption="Bağil Dosya Oluşturma Başladı: "+TimeToStr(saat);
  Label1->Visible=False;
  char kr;
  int adr;   int yaz=0;
 
  int kontrol;
 if((dosya=fopen("sozluk.txt","r"))==NULL)
   exit(6);
 if((dosya1=fopen("sözlük1.txt","w+"))==NULL)
   exit(6);
  for(i=0;i<658000;i++)
  putc(32,dosya1);
  while(feof(dosya)==NULL)
  {
  fgets(temp,115,dosya);
  for(i=0;i<35;i++)
  {ingilizce[i]=temp[i];}
  ingilizce[35]='\0';
  for(i=36;i<115;i++)
    {turkce[i-36]=temp[i]; }
  turkce[78]='\0';
  adr=hesapla(ingilizce);
  fseek(dosya1,adr*115,SEEK_SET);
  kr=getc(dosya1);
  fseek(dosya1,-1,SEEK_CUR);
  if(kr==32){
  fputs(ingilizce,dosya1);
  fputs(turkce,dosya1); }
  else{ yaz++;  kontrol=0;
 
  while(kontrol==0){
  fseek(dosya1,yaz*115,SEEK_SET);
  kr=getc(dosya1);
  fseek(dosya1,-1,SEEK_CUR);
  if(kr==32){
   fputs(ingilizce,dosya1);
  fputs(turkce,dosya1);kontrol=1; }
  else
  yaz++;}}
 }/*while1 bitti*/
 Label3->Visible=True;
 saat=Time();
 Label3->Caption="Bağil Dosya Oluşturma Bitti: "+TimeToStr(saat);
 Button1->Visible=False;
 Button2->Visible=True;
 Button3->Visible=True;
 Edit1->Visible=True;
 
 
}
 
//---------------------------------------------------------------------------
int hesapla(char dizi[]){
  long int adres=0;int i;
  for(i=0;i<35;i++)
  adres=dizi[i]+adres;
  adres=adres-1163;
  return adres; }
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{Label1->Visible=False;
 Label2->Visible=False;
 Label3->Visible=False;
   search=0;   tut=0;  dosyabasi=1;  kontrol2=0;
 for(i=0;i<35;i++)
   {kelime[i]=32;}
 strcpy(kelime,Edit1->Text.c_str());
 k=strlen(kelime);
 for(i=0;i<k;i++)
 {search=kelime[i]+search;}
 for(i=0;i<35-k;i++)
  {search=search+32;}
 search=search-1163;
 fseek(dosya1,search*115,0);
 fgets(temp,115,dosya1);
 for(i=0;i<35;i++)
  {ingilizce[i]=temp[i];}
 for(i=0;i<k;i++)
   {if(kelime[i]==ingilizce[i])
   tut++;}
 if(tut==k)
  { for(i=35;i<115;i++)
   {turkce[i-35]=temp[i];}
   Edit2->Visible=True;
   Edit2->Text=String(turkce);
   }
 else{
      while(kontrol2==0&&dosyabasi!=5722){ int tut2=0;
      fseek(dosya1,dosyabasi*115,SEEK_SET);
      fgets(temp,115,dosya1);
      for(i=0;i<35;i++)
      {ingilizce[i]=temp[i];}
      for(i=0;i<k;i++)
       {if(kelime[i]==ingilizce[i])
        tut2++;}
      if(tut2==k)
        {for(i=35;i<115;i++)
         {turkce[i-35]=temp[i];}
         Edit2->Visible=True;
          Edit2->Text=String(turkce);kontrol2=1;}
      else dosyabasi++;}}
 if(dosyabasi==5722||search==5722)
 {Edit2->Text="";
 ShowMessage("Böyle Bir Kelime Yok");
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{ Label1->Visible=False; int c;
  Label2->Visible=False;
  Label3->Visible=False;
  Edit2->Visible=False;
  c=MessageDlg("Silmek istediğiniz eminmisiniz?",mtWarning,TMsgDlgButtons()<<mbYes<<mbNo,0);
if(c==mrYes){  search=0;   tut=0;    dosyabasi=0;    kontrol2=0;
for(i=0;i<35;i++)
   {kelime[i]=32;}
 strcpy(kelime,Edit1->Text.c_str());
 k=strlen(kelime);
 for(i=0;i<k;i++)
 {search=kelime[i]+search;}
 for(i=0;i<35-k;i++)
  {search=search+32;}
 search=search-1163;
 fseek(dosya1,search*115,0);
 fgets(temp,115,dosya1);
 for(i=0;i<35;i++)
  {ingilizce[i]=temp[i];}
 for(i=0;i<k;i++)
   {if(kelime[i]==ingilizce[i])
   tut++;}
 if(tut==k)
  {fseek(dosya1,search*115,0);
   for(i=0;i<115;i++)
   {putc(32,dosya1);}
  }
 else{dosyabasi++;
      while(kontrol2==0&&dosyabasi!=5722){ int tut2=0;
      fseek(dosya1,dosyabasi*115,SEEK_SET);
      fgets(temp,115,dosya1);
      for(i=0;i<35;i++)
      {ingilizce[i]=temp[i];}
      for(i=0;i<k;i++)
       {if(kelime[i]==ingilizce[i])
        tut2++;}
      if(tut2==k)
        {fseek(dosya1,dosyabasi*115,SEEK_SET);
         for(i=0;i<115;i++)
         {putc(32,dosya1);}
        kontrol2=1;}
      else dosyabasi++;}}
      if(dosyabasi==5722||search==5722)
      ShowMessage("Zaten Böyle Bir Kelime Yok");}
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::about1Click(TObject *Sender)
{
Label2->Visible=False;
Label3->Visible=False;
Label1->Visible=True;
Label1->Caption="Designed by CELAL ATALAR 2003";
}
//---------------------------------------------------------------------------
 

Benzer konular

DarK

< MasaLFM.Net >
Forum Üyesi
Katılım
1 Nisan 2019
Mesajlar
620
Tepkime puanı
0
emeğine yüreğine sağlık
 

Nutella

Harbi Üye
Bayan Üye
Özel Üye
Katılım
2 Ocak 2021
Mesajlar
9,432
Tepkime puanı
8
Cinsiyet
  1. Bayan
Takım
Galatasaray
Paylaşım için teşekkürler.
 
İçerik sağlayıcı "paylaşım" sitelerinden biri olan Harbimekan.Com Forum, Eğlence ve Güncel Paylaşım Platformu Adresimizde 5651 Sayılı Kanun’un 8. Maddesine ve T.C.K’nın 125. Maddesine göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur. Harbimekan.Com sitesindeki konular yada mesajlar hakkında yapılacak tüm hukuksal Şikayetler için info@harbimekan.com yada iletişim sayfası üzerinden iletişime geçilmesi halinde ilgili kanunlar ve yönetmelikler çerçevesinde en geç 3 Gün (72 Saat) içerisinde Forum yönetimi olarak tarafımızdan gereken işlemler yapılacaktır.

Bu Site, Bilim ve Sağlık Haber Ajansı Üyesidir.

Yığıntı - 8kez - kaynak mağazam - Uğur Ağdaş