Gönderen Konu: Ordal-1 Bankamatik  (Okunma sayısı 7364 defa)

Çevrimdışı Ahmet Sakallı

  • Mezun olmuş OTOKON'cu
  • *
  • İleti: 2341
Ordal-1 Bankamatik
« : Mart 07, 2009, 08:12:39 ÖS »
Aklıma gelen oldukça basit bir soruyu paylaşayım dedim yeni başlayanlar için(benim gibi) alıştırma olur  :)

Öncelikle Ordal meraklı bi arkadaşımızdır ve gereksiz işlerle uğraşmaktan zevk alır.Günlerden birgün aklına bir bankamatik yapmak gelir.Ordal, bu makinenin parayı en az banknot sayısı ile vermesini istemektedir.Örneğin 80 lira çekmek isterse 1 tane 50lik banknot, 1 tane 20lik banknot , 1 tane de 10luk banknot alacaktır.Ayrıca bu makinenin içindeki banknotlar 100lük, 50lik, 20lik, 10luk, 5lik ve 1lik olmak üzere 6 tanedir.Ancak Ordal paraların nasıl verileceği olayını bir türlü kafasında oluşturamıyor, işte burada iş bize düşüyor    :)
« Son Düzenleme: Mart 08, 2009, 01:50:33 ÖÖ Gönderen: Ahmet Sakallı »

Çevrimdışı Cem Hakan

  • OTOKON Üyesi
  • *
  • İleti: 11
Ynt: Ordal-1 Bankamatik
« Yanıtla #1 : Ekim 12, 2009, 09:19:53 ÖS »
Yanıtlanmamış mı ki bu?

Ben yanıtlasam mı...

100,50,20,10,5 ve 1lik banknotlar mı varmış?

Verilmesi gereken parayı önce 100e böldürürüm, sonucun tam kısmı kadar 100 lira verdiririm, küsuratlı kısmını 100 ile çarpıp kalan parayı bulurum.

Sonra parayı 50e bölerim, sonucun tam kısmı kadar 50 lira verdirir, küsuratını kısmını 50 ile çarpıp devam ederim.

Aynı işlemi 20, 10, 5 ve 1 için de tekrar ettiririm. Eğer ki tam kısmı 0 ise atlatırım tabii ki.

Diyelim ki 268 lira var.

268/100 = 2,68. Tam kısmı iki ise 2 tane 100 lira. Kalanı 0,68. 100 ile çarpınca 68 lira kalır.

68/50=1,36. 1 tane 50 lira. Kalanı 0,36. 50 ile çarparım 18 lira kalır.

18/20=0,9. Atlatırım.

18/10=1,8. 1 tane 10 lira; 0,8*10=8 lira kalır.

8/5=1,6. 1 tane 5 lira, 5*0,6=3

3/1=3 tane 1 lira olayı kapatır.


I know Kung-fu.

Çevrimdışı Onur Varol

  • Mezun olmuş OTOKON'cu
  • *
  • İleti: 3029
Ynt: Ordal-1 Bankamatik
« Yanıtla #2 : Ekim 12, 2009, 09:38:07 ÖS »
Ozaman algoritma tamamsa lets code it :)

Çevrimdışı Serhat Büyükçolak

  • Mezun olmuş OTOKON'cu
  • *
  • İleti: 1130
  • C bilmeyen adam
Ynt: Ordal-1 Bankamatik
« Yanıtla #3 : Ekim 12, 2009, 09:50:24 ÖS »
Do  what the ordinaryus sez.... He is the  boss  ;D Code it plz  ;)
Sonra neden "C bilmeyen adam" diyorlar, hele bakıverin şuraya; http://plepa.com/2018/12/21/c-biliyor-musunuz/

Çevrimdışı İsmail ULUTÜRK

  • Mezun olmuş OTOKON'cu
  • *
  • İleti: 1386
  • Festina Lente
Ynt: Ordal-1 Bankamatik
« Yanıtla #4 : Ekim 12, 2009, 10:22:24 ÖS »
Adam algoritmayı yazmış sen de kodunu yazıver o zaman aa.
Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something.
- Robert Heinlein

Çevrimdışı Buse Baycan

  • Sr. Member
  • ****
  • İleti: 329
Ynt: Ordal-1 Bankamatik
« Yanıtla #5 : Ekim 12, 2009, 10:29:18 ÖS »
kodu optimize etmek gerek biraz :) örneğin küçük - büyük karşılaştırma işlemi, bölme işleminden daha hızlıdır ve 100'lükleri tükettikten sonra ya 1, ya 0 50'lik verilebilir zaten. dolayısıyla kalan parayı 50 ile karşılaştırarak, büyükse 1 tane 50 ekleyip paradan 50 çıkarmak, küçükse aynen işleme devam etmek gerekir. yine diğer bölmelerden önce bu karşılaştırmaları yapmak belli durumlarda programı hızlandırabilir. aklınızda bulunsun ;)

* Tahmin edebileceğiniz gibi bunu Ufuk yazdı.
« Son Düzenleme: Ekim 13, 2009, 12:26:02 ÖÖ Gönderen: Buse Baycan »

Çevrimdışı Cem Hakan

  • OTOKON Üyesi
  • *
  • İleti: 11
Ynt: Ordal-1 Bankamatik
« Yanıtla #6 : Ekim 14, 2009, 01:48:02 ÖS »
C bilmediğim için Cde yazamam ama Javascript'te olayı bir for döngüsüne sığdırabilirim diye düşünüyorum. Kütüphaneden girdiğim için test edemedim henüz ama hata olacağını sanmıyorum.

function ordal(girilenpara){

var bk=[100,50,20,10,5,1];
var kalanpara,oran,ksrt;
var miktar=new Array();

for(var k=0;k<6;k++){

if(k==0){ oran=girilenpara/bk[k]; }
else{ oran=kalanpara/bk[k]; }

miktar[k]=parseInt(oran);
ksrt=oran-parseInt(oran);
kalanpara=ksrt*bk[k];

document.write(miktar[k]+" adet"+bk[k]+" lira"+"<br>");

}

}




Çevrimdışı Ilgaz Somer

  • OTOKON Üyesi
  • *
  • İleti: 123
Ynt: Ordal-1 Bankamatik
« Yanıtla #7 : Haziran 20, 2011, 05:29:49 ÖS »
Kod: [Seç]
#include<stdio.h>

main()
{
     
      int x,i, kalanPara;
      int yatirilanPara;
      int banknot[6] = {100,50,20,10,5,1};
      printf("Yatirilicak para miktarini giriniz");
      scanf("%d", &yatirilanPara);
      for( i=0 ; i <= 5 ; i ++ )
      {
           
           x = yatirilanPara / banknot[i];
      printf("%d tane %d 'lik banknot \n" , x, banknot[i]);
      kalanPara = yatirilanPara% banknot[i];
      yatirilanPara= kalanPara;
      }
      while(1);
     
      }





Forumda takılırken karşıma çıktı yapiyim dedim.

Çevrimdışı Can Berk Aykaç

  • Mezun olmuş OTOKON'cu
  • *
  • İleti: 319
Ynt: Ordal-1 Bankamatik
« Yanıtla #8 : Haziran 23, 2011, 12:22:46 ÖÖ »
kankalar ben böyle bişey yazdım doğrumudurr bi söyleyin derleyici çalıştırıyo ama algoritmayı doğru kurmuşmuyum yani =)  :)  :D ;D

#include<iostream>
#include<stdlib.h>
#include <cstdlib>
using namespace std;

int main(void)
{
    int k ;
    int a,b,c,d,e,f;
   
    cout << " para miktarini giriniz: " ;
    cin >> k ;
    a = k/100;
    b = (k%100)/50;
    c = (k%50)/20;
    d = (k-((100*a)+(50*b)+(20*c)))/10;
    e = (k%10)/5;
    f = (k%5);
   
    cout << "100'luk banknot adedi: " << a << endl;
    cout << "50'lik banknot adedi: " << b << endl;
    cout << "20'lik banknot adedi: " << c << endl;
    cout << "10'luk banknot adedi: " << d << endl;
    cout << "5'lik banknot adedi: " << e << endl;
    cout << "1'lik banknot adedi: " << f << endl;
   
    system("pause");


    return  0 ;
}
« Son Düzenleme: Haziran 23, 2011, 11:35:31 ÖÖ Gönderen: Can Berk Aykaç »