C++ da Veriyi Arayan Fonksiyon Nasıl Yazılır?

Bu konuyu okuyanlar

mean2493

Öğrenci
Dosyalama kullanılarak bir notpade en az 1000 kelimelik bir bir veri tutturulacak. istediğimiz veriyi arayan fonksiyon yazılacak(Brute Force algoritması). arkadaşlar bu program için acil yardım edebilirmisiniz.
 

mean2493

Öğrenci
eyvallah kardeş. ama istediğim gayet açık. bir .txt uzantılı dosyaya 1000 kelime atıyacam. istediğim kelimeyide aratacağım. bunu algoritması yada odu hakkında bir yardım bekliyorum.
 

errno

Doçent
Cezalı
Merhaba,

Brute Force algoritması zamandan kazanmak için kullanılıyor genelde, ama gelin görün ki teknik sadece ilk bulduğu yere geri dönmesi ile de ün salan bir yapısı var. Yani kod, aradığınız harfi ilk bulduğunda sırasıyla eşleştirmelere devam ediyor, ardından uyumsuzluk esnasında tekrar kaldığı yerden devam ediyor. Burada harf harf mi yoksa kelime kelime mi işlem yapılacak. Bir C# veya VB.NET olsaydı didik etmezdim, ancak C/C++ da bu detaylı bir işlemdir.

Mesela, siz çok sade anlattığınızı düşünürken yazdıklarınızdan;

1-) 1000 kelime var ama kaydedeceğiniz txt dosyası bir UTF-8 mı yoksa ASCII tipli mi ?
2-) Atanacak kelimelere lokalizasyon uygulanması gerekecek mi (veya tarama yapılırken..) ?
3-) Atama işlemi esnasında mı tarama yapılacak yoksa atamadan sonra mı tarama yapılacak ?
4-) Arama işlemini kelime bazında yazmışsınız ancak Brute Force harf harf çalışır..
5-) Ayrıca taramayı dosya içinden mi yoksa bir stream üzerinden mi yapmak istyorsunuz ?
6-) Local mi yoksa Web Brute ile mi ilgileniyorsunuz ?

Daha da sıralanabilir.. Demek istediğim; basite adığınız bir cümle içerisinden C/C++ için yüzlerce soru çıkarılabilir. Yine de sizin istediğiniz gibi olsun, yani kelime olarak sade bir text dosyasında arama. Win32 Console projesi açıp deneyebilirsiniz.

Kod:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

/* base */
inline void error(const string& s)
{
   throw runtime_error(s);
}

/* base */
inline void error(const string& s, const string& s2)
{
   error(s + s2);
}


int _tmain(int argc, _TCHAR* argv[])
{
   cout << "Please enter input file name : ";
   string iname;
   cin >> iname;
   ifstream ist{ iname };

   if (!ist) error("can't open input file", iname);
   cout << "file found" << endl;

   unsigned int curr = 0;
   string line;
   string search = "Test10"; /*Aranacak değer*/

  while (getline(ist, line)) 
  {
       curr++;
       if (line.find(search, 0) != string::npos)
      {
           cout << "Bulunan : " << search << " Bulunan Satır : " << curr << endl;
       }
   }

   int st = 0;
   cin >> st;
}

Saygılarımla
 

SDN Son Haberler

Son mesajlar

Üst