Arama butonu
Bu konudaki kullanıcılar: 1 misafir
14
Cevap
3325
Tıklama
0
Öne Çıkarma
c# txt dosyası karşılaştırma!!
V
15 yıl
Teğmen
Konu Sahibi

Arkadaşlar C# ile 2 txt dosyasını karşılaştırıp aynı olan kelimeleri ekrana nasıl yazdırabilirim?

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



K
15 yıl
Yüzbaşı

quote:

Orijinalden alıntı: vurucu05


Arkadaşlar C# ile 2 txt dosyasını karşılaştırıp aynı olan kelimeleri ekrana nasıl yazdırabilirim?



aynı yerde aynı olan kelimeleri mi?
yoksa arama mı?


Bu mesaja 1 cevap geldi.
V
15 yıl
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: kuduk


quote:

Orijinalden alıntı: vurucu05


Arkadaşlar C# ile 2 txt dosyasını karşılaştırıp aynı olan kelimeleri ekrana nasıl yazdırabilirim?



aynı yerde aynı olan kelimeleri mi?
yoksa arama mı?



iki txt dosyasındaki aynı olan kelimeleri bulup ekrana yazdırcak.


Bu mesaja 1 cevap geldi.
B
15 yıl
Yüzbaşı

Ben böyle yapardım;
1-) 2 txt'yi de oku.
2-) Okuduğun yazıyı bir string'e at.
3-) string[] txtDizi1 = txt1.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); fonksiyonu ile 2 tane dizi elde et.
4-) Artık elinde 2 txt dosyasınında tüm kelimeleri bir dizide. İç içe döngü ile çok rahat arayabilirsin.


Bu mesaja 1 cevap geldi.
V
15 yıl
Teğmen
Konu Sahibi

Hocam bu yöntemle yaptım ama 40320 adet kelimeyi 62500 kelime içinde arama yapmam lazım o yüzden çok yavaş oluyor.Daha iyi açıklamam gerekirse txt1 in içinde 40320 kelime var ve bu kelimelerden birtanesi txt2 dosyasında bulunan 62500 kelimeden bir tanesiyle aynı, bu aynı olan kelimeyi bulup ekrana yazdırcak. bunun daha hızlı yapabilcem bi karşılaştırma yöntemi yok mu? Veri tabanı kullansam hızlı olur mu?

ben txtleri diziye aktarıp şu yöntemi kullandım:

for(int k=0;k<40320;k++)
for(int j=0;j<62500;j++)
{
if(dizi[k] == dizi2[j])
{
kelime=dizi[k];
messageBox.Show(kelime);
}
}

bu yöntem çok yavaş olduğu için verimsiz.Daha hızlı nasıl yaptırabilirim?





< Bu mesaj bu kişi tarafından değiştirildi vurucu05 -- 20 Mayıs 2010; 18:46:09 >
Bu mesaja 2 cevap geldi.
M
15 yıl
Er

hash table kullan bu sorununu çözecektir;)

Murat AKKAN |mSharp
Bilgisayar Mühendisi

http://www.muratakkan.net





< Bu mesaj bu kişi tarafından değiştirildi msharp -- 20 Mayıs 2010; 18:41:39 >

B
15 yıl
Yüzbaşı

Diziye atmak mı uzun sürüyor? Yoksa taramak mı? Eğer diziye atmak kısa sürüyorsa Array.Sort işlemi ile yapabilirsin. (Tabi string dizisini destekliyorsa). Ondan sonra kelimeyi daha hızlı bulursun diye tahmin ediyorum. Açıkcası kullanmadım hiç ama daha hızlı sonuç elde edersin diye umuyorum.

NOT: Yaptıktan sonra bilgilendirirsen sevinirim :)


Bu mesaja 1 cevap geldi.
V
15 yıl
Teğmen
Konu Sahibi

Diziye atmak çok kısa sürüyor ama taraması çok uzun sürüyor. array.sort dizileri sıralıyor diye biliyorum nasıl kullanacağımki karşılaştırmada?


Bu mesaja 1 cevap geldi.
B
15 yıl
Yüzbaşı

Array.Sort ettikten sonra Array.BinarySearch ile daha kısa sürede bulursun bulmak istediğin kelimeyi.


Bu mesaja 1 cevap geldi.
V
15 yıl
Teğmen
Konu Sahibi

Dediğinizi bir araştırayım bende kullanmadığım için pek bilgim yok.


Bu mesaja 1 cevap geldi.
V
15 yıl
Teğmen
Konu Sahibi

verdiğiniz bilgi için saolun dediğiniz yöntem daha hızlı çözdü.


Bu mesaja 2 cevap geldi.
K
15 yıl
Yüzbaşı

indeks kullanaraz belirgin bir biçimde hızlanırsınız.

eğer ki c# 2 ve üzerinde yer alan özel fonksiyon ve çözümleri kullanmaktan kaçınıyorsanız;

bir matrisin birinci boyutunu kelimelerin ilk harfleri , ikincisini ise ayırdığınız kelimeleri kümelemek için iki boyutlu bir matris oluşturun:http://msdn.microsoft.com/es-es/library/aa288453(VS.71).aspx
daha sonra her iki text dosyasındaki kelimeleri matrise ilk harflerine göre atın
matrisin boyutlarını karşılık gelen boyut içinde çift döngü ile arayın





< Bu mesaj bu kişi tarafından değiştirildi kuduk -- 20 Mayıs 2010; 22:09:58 >
Bu mesaja 1 cevap geldi.
V
15 yıl
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: kuduk

indeks kullanaraz belirgin bir biçimde hızlanırsınız.

eğer ki c# 2 ve üzerinde yer alan özel fonksiyon ve çözümleri kullanmaktan kaçınıyorsanız;

bir matrisin birinci boyutunu kelimelerin ilk harfleri , ikincisini ise ayırdığınız kelimeleri kümelemek için iki boyutlu bir matris oluşturun:http://msdn.microsoft.com/es-es/library/aa288453(VS.71).aspx
daha sonra her iki text dosyasındaki kelimeleri matrise ilk harflerine göre atın
matrisin boyutlarını karşılık gelen boyut içinde çift döngü ile arayın


ilginiz için teşekkürler ama söylediğiniz olayı biraz daha açar mısınız?


Bu mesaja 1 cevap geldi.
B
15 yıl
Yüzbaşı

quote:

Orijinalden alıntı: vurucu05

verdiğiniz bilgi için saolun dediğiniz yöntem daha hızlı çözdü.

Rica ederim. İyi çalışmalar...



K
15 yıl
Yüzbaşı

text dosyasından kelimeleri boşlukları bulup ayırırken ilk baştaki harf kaçıncı harf ise o harfe ait array e atın. daha sonra a harfi ile başlayan ali kelimesini 2. text dosyasının a array i içinde arayın.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.