İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

C++ yardım!!

sharlk01.06.20107 cevap2.525 görüntüleme
2008'den beri387 mesaj
#1
Arkadaşlar c++ da bir ödevim var ama ben işin içinden bir türlü çıkamadım yapamadım yardım edecek arkadaşlar veya ilgielcenecekler varsa cavabını yazabilirlermi acaba ??

soru:Kullanıcının girdiği sayıyı ikili arama sistemiyle bulan c++ programının kodlarını yazınız.?
Cevaplar
2008'den beri6.607 mesaj
#2
Mantığın nasıl olması gerektiğini açıkliyim:

Sayısı 2'ye böldürüp kalanlarını diziye atacaksın. En son diziyi tersten yazdıracaksın. Bir de en son kalan bölümü yazdıracaksın. 2'ye bölümünden kalanı bulmak için mod kullanacaksın. Yani:
int kalan = (sayi % 2);
sharlk Konuyu açan
2008'den beri387 mesaj
#3
biraz karışık anlatmışsın anlayamadım :(
2007'den beri29 bin mesaj
#4
Necati soruyu yanlış anlamışsın sayıyı 2lik sisteme çeviren programı istememiş. Binary(ikilik) arama olayı var ya onu istemiş.
2010'den beri1.941 mesaj
#5
C de ikili arama kodu her yerde var google yaz çok rahat bulursun C++ da çevir bi zahmet..Ama bence kendin yazmaya çalış yoksa zor öğrenirsin..Hatta üçlü arama var yapmaya çalış diziyi üçe bölüp aramayı yapıyor ben açılışı üçlü aramayla yapmıştım çok mutlu olmuştum :)
2008'den beri6.607 mesaj
#6
__kadıköyRAP__ dedi: ↑
Necati soruyu yanlış anlamışsın sayıyı 2lik sisteme çeviren programı istememiş. Binary(ikilik) arama olayı var ya onu istemiş.
Pardon ben yanlış anlamışım :rolleyes:
Neyse Binary Search algoritması:

#include <iostream>

#define  SIZE  10  // 10 tane rastgele sayı üretilir
int main()
{
 int i, k;
 int a[SIZE];
 int val;
 int low, mid, high;
 
 srand(time(0));
 for (k = 0; k < SIZE; ++k)
  a[k] = rand() % 100;
   
 
 for (i = 0; i < SIZE - 1; ++i)
  for (k = 0; k < SIZE - 1 - i; ++k)
   if (a[k] > a[k + 1]) {
    int temp = a[k];
    a[k] = a[k + 1];
    a[k + 1] = temp;
   }
 printf("Dizi degerleri:\n");
 for (k = 0; k < SIZE; ++k)
  printf("%d ", a[k]);
 
 
 printf("\n\nAranacak deger = ");
 scanf("%d", &val);
 
 low = 0;
 high = SIZE - 1;
 
 while (low <= high) {
  mid = (low + high) / 2;
  if (a[mid] == val)
   break;
  if (a[mid] > val)
   high = mid - 1;
  else
   low = mid + 1;  
 }
 
 if (low > high)
  printf("Bulunamadi!");
 else
  printf("Bulundu! a[%d] = %d", mid, val);
  scanf("%d");
 
 return 0; 
}
2009'den beri9 mesaj
#7
sanirim binary seach(ikili arama) yi soruyosun... bu aramayi iki sekilde yapabilirsin istersen recursive(özyinelemeli) yada iterative(yinelemeli) yontem ile yapabilirsin...

direk kodu vermeyip te isin aslini anlatmanin sizin yarariniza olacaktir...

asagida anlatacagim mantigi recursive yada iterative olarak da dusunebilirsiniz onemli hatirlatma bir dizide ikili arama yapabilmek icin dizinin oncelikle sirali olmasi gerekir

ilk olarak arama yapılacak dizi ve aranacak anahtar degeri bilmemiz gerekiyor sonrasinda ise, gelen diziye her defasinda iki ye boleriz eger ikiye boldugumuzde cikan deger li array elemani (arr[cikan deger]) aranan anahtar degerden buyukse sol tarafi (arr[cikan deger] in sol tarafindaki elemanlardan olsun parca arrayi) ikiye boleriz veya kucukse sag tarafi ikiye boleriz eger esitse zaten aranan anahtar eleman bulunmustur ve programi sonlandiririz

yani;

1,5,7,8,9,12,34,45,56 dizimiz olsun aranacak anahtar deger de 34 olsun once yukaridaki anlattigima gore ikiye parcalariz sonra (yani 9 un sag tarafi yeni arama yapacagimiz dizimiz olur),
12,34,45,56 parcalamadan sonra dizimiz bu hale gelir sonra bi daha parcalariz (45 in sol tarafi yeni arama yapacagimiz dizimiz olur)
12,34 yeni olusan bu dizimizi yine parcalarsak
34 (ve anahtar degeri bulduk):thumbup:
2010'den beri23 mesaj
#8
Cocugun ıyıce kafası karıstı bence bence sen sorunu adam akıllı yazsan sana gore bıcevap verebılırım anlayacagın dılde ..

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.