yığıt ve kuyruk

Bu başlık kilitlidir. Yeni mesajlar gönderilemez veya mevcut mesajlar düzenlenemez.
selsoft
24-09-2004, 10:16   |  #1  
OP Yeni Üye
Teşekkür Sayısı: 0
32 mesaj
Kayıt Tarihi:Kayıt: Eyl 2004

bana yığıt ve kuyruk bilgi verecek biri veya birileri varmi

Son Düzenleme: selsoft ~ 21 Ekim 2004 13:43
small_ticket
29-09-2004, 01:00   |  #2  
Yıllanmış Üye
Teşekkür Sayısı: 0
167 mesaj
Kayıt Tarihi:Kayıt: Şub 2004

yani 24 girerse output olarak "yirmidört" mü verecek?

selsoft
29-09-2004, 09:44   |  #3  
OP Yeni Üye
Teşekkür Sayısı: 0
32 mesaj
Kayıt Tarihi:Kayıt: Eyl 2004

evet aynen öyle ama arada bir bosluk olsa iyi olur.ben aslında sadece 2 basamaklılar için yaptım ama 90 ve üstü bir sayi girince bilgisayar kafayı yiyor.

small_ticket
29-09-2004, 12:25   |  #4  
Yıllanmış Üye
Teşekkür Sayısı: 0
167 mesaj
Kayıt Tarihi:Kayıt: Şub 2004

şöle bişey yapabilirsin ilk önce girilen sayının kaç basamaklı olduğunu bulursun sonra 90 da kadar becerdiğin koda sadece yüz bin kısımlarını eklemen kalır istersen kodunu gönder belki daha iyi yardımcı olabiliris
iyi çalışmalar

mkavgaoglu
30-09-2004, 10:11   |  #5  
Yıllanmış Üye
Teşekkür Sayısı: 0
228 mesaj
Kayıt Tarihi:Kayıt: May 2004

once kendine bi sınır belirle.. 2 basamkalı 3 bas. ? sonra senin yazdıgın kodu buraya koy yardımcı olalım..

Banned
21-10-2004, 16:07   |  #6  
Banlandı
Teşekkür Sayısı: 0
161 mesaj
Kayıt Tarihi:Kayıt: Eki 2004

Kuyrukta, ilk giren ilk çıkar. Yığında (Yığıt lafı çok gıcık, kim uydurduysa) ise son giren ilk çıkar. Neyse...

Rakamları içeren bir dizimiz olsun; bunda, sondan başa doğru almaya başlayacağız rakamları. 452 sayısı için, önce 2'yi, sonra 5'i, sonra da 4'ü. Yani bu bir yığın olarak ele alınacak.

Sondan başlayarak, her rakama karşılık gelen bir metni, bir başka diziye ekleyeceğiz. Burada da ilk gelen, sonda kalacak...

Rakam-Metin eşleştirmesi için iki boyutlu bir dizi kullanabilirsiniz. Ya da azıcık daha uğraşıp, daha zekice olan kendi sisteminizi uygularsınız. Basit ve uğraştırmayacak yöntemde, dizimizin adı D olsun. D'nin ilk boyut indeksi, basamak sırasını ifade eder, ikinci boyut indeksi ise, rakamı. Yani, D[basamak][rakam] şeklinde. [Son bir boyut daha olacak; o da karakter dizisi olduğu için.]

D[1][0]="";
D[1][1]="Bir";
..
..
D[1][9]="Dokuz";
D[2][1]="On";
D[2][2]="Yirmi";
..
..
D[2][9]="Doksan";
D[3][1]="Yüz";
D[3][2]="İki Yüz";
..
..
..

Burada, D[1] ve D[2] için, her elemanın değiştiği; ama sonraki dizilerde, sadece birer kelimenin geldiğini ve önlerine D[1] dizisindeki elemanların eklendiğini dikkate alarak, daha güzel bir yapı kurmayı da deneyebilirsiniz. Bu yukarıdaki dizi, bu açıdan bakıldığında zekice bir çözüm değil; ama siz siz olun, eğer bir bakışta göremiyorsanız, önce aptal olanını yapın, sonra kırpıp kırpıp daha zeki hale getirin.

recepkl
17-12-2004, 22:04   |  #7  
Taze Üye
Teşekkür Sayısı: 0
15 mesaj
Kayıt Tarihi:Kayıt: Ara 2004

Bak kardeşim şunu aklına sok kuyruğa ilk giren ilk çıkar. Ama tabii uyanık olacaksın. Hele bizim Bayrampaşada daha da uyanık olacaksın. Zira ilk girdiğin ekmek kuyruğundan ilk çıkamayabilirsin. Sonra dikkat etmen gereken bir diğer hususta mesela 4 ekmek mi alacaksın o zaman
)
  ))  = if 4 ekmek
paran=(her ekmek 150.000tl)*4 o zaman 600.000
)
   )
  else (misafirleri hesap etmeyi unutma)+ 3ekmek
ahanda sonuç={( 7 ekmek için öde 1.050.000)}
  al sana program ama
Burada Bayrampaşadaki ekmekçiler için, her ekmekçide zaman zaman elemanlar değişir. Bunlara sadece biri kelimeyle merhaba demen yerinde olacaktır. Ekmekçilerle daha sağlam bir yapı kurmak için daha çok konuşabilirsin.
Bu ilk bakışta zekice bir çözüm olmayabilir ama sen sen ol aptal olma, ekmek kuyruğuna erkenden gir
:)))))))))))))

Arkantos
11-02-2005, 22:42   |  #8  
Taze Üye
Teşekkür Sayısı: 0
11 mesaj
Kayıt Tarihi:Kayıt: Eyl 2004

Örnek olması açısından daha önceden bir tamsayı yığıt sınıfı yazmaya çalışmıştım onu gönderiyorum. Bu arada tasarımda bazı eksiklikler olabilir.

[ Tüm kodu seç ] [ Yeni Pencerede Göster ]
// yigit.h #if !defined YIGIT_H #define YIGIT_H const int yigitmaksimum = 16; class TamsayiYigit { public: TamsayiYigit () : enust_ (0) {} void Ekle (int sayi); int Cikar (); int Tepedeki () const; bool DoluMu () const; bool BosMu () const; private: int elemanlar_ [yigitmaksimum]; int enust_; }; #endif // yigit.cpp #include "yigit.h" #include <iostream> #include <stdexcept> using std::cout; using std::cin; using std::cerr; void TamsayiYigit::Ekle (int sayi) { // Taşmaya izin verme if (enust_ >= yigitmaksimum) throw std::range_error ("Yigit maksimum sinirina ulasti\n"); elemanlar_ [enust_] = sayi; ++enust_; } int TamsayiYigit::Cikar () { // Boş bir yığıttan eleman çıkarmaya kalkma if (enust_ <= 0) throw std::range_error ("Yigit bosken nesne cikaramam\n"); --enust_; return elemanlar_ [enust_]; } int TamsayiYigit::Tepedeki () const { // Boş bir yığıtın en üstündeki elemanı öğrenmeye kalkma if (enust_ <= 0) throw std::range_error ("Bos yigitin en ust elemani ogrenilemez\n"); return elemanlar_ [enust_ - 1]; } bool TamsayiYigit::DoluMu () const { return (enust_ == yigitmaksimum); } bool TamsayiYigit::BosMu () const { return (enust_ == 0); } int main () { try { int sayi; TamsayiYigit tamsayi; tamsayi.Ekle (1); tamsayi.Ekle (8); cout << "Bir sayi girin:"; cin >> sayi; cout << "Cikarilan sayi: " << tamsayi.Cikar () << "\n"; cout << "Cikarilan sayi: " << tamsayi.Cikar () << "\n"; cout << "Cikarilan sayi: " << tamsayi.Cikar () << "\n"; } catch (std::exception const & hata) { cerr << "HATA :" << hata.what () << "\n"; return 1; } catch (...) { cerr << "HATA :" << "Bilinmeyen bir hata var\n"; return 1; } }
Not : Özellikle main içinde aykırı durum oluşturacak şekilde düzenledim.

Bu da yığıt sınıfının daha iyi ve şablonlar kullanılarak yazılmış versiyonu. Böylece sınıfımızın diğer türlerle de çalışma imkanı oluyor.

Not : Bu ikinci kodu ben yazmadım.

[ Tüm kodu seç ] [ Yeni Pencerede Göster ]
// ikinci kod #include <algorithm> #include <assert.h> template <class T> class Yigit { T * nesneler_; int buyukluk_; int tepe_; void buyult() { int const eski_buyukluk = buyukluk_; buyukluk_ = ((buyukluk_ == 0) ? 2 : buyukluk_ * 3 / 2); T * yeni_nesneler = new T[buyukluk_]; std::copy(nesneler_, nesneler_ + eski_buyukluk, yeni_nesneler); delete[] nesneler_; nesneler_ = yeni_nesneler; } public: Yigit() : nesneler_(0), buyukluk_(0), tepe_(-1) {} ~Yigit() { delete[] nesneler_; } // push void ekle(T const & nesne) { ++tepe_; if (tepe_ == buyukluk_) { buyult(); } nesneler_[tepe_] = nesne; } // pop T cikart() { assert(tepe_ >= 0); --tepe_; return nesneler_[tepe_ + 1]; } T & tepe() { return nesneler_[tepe_]; } // Bu da sabit Yigit nesneleri icin T const & tepe() const { return nesneler_[tepe_]; } }; #include <iostream> using std::cout; int main() { int const adet = 3; Yigit<int> yigit; for (int i = 0; i != adet; ++i) { cout << "Ekliyorum: " << i << '\n'; yigit.ekle(i); } for (int i = 0; i != adet; ++i) { cout << "Cikarttim: " << yigit.cikart() << '\n'; } yigit.ekle (8); int const tepedeki = yigit.tepe(); yigit.cikart(); cout << "Cikarttim: " << tepedeki << '\n'; }