Donanım Haber Forum
Ana Sayfa | Kayıt ol | Profilim | Gelen Kutusu | DH Hız Aşırtma VT | Adres Defteri | Email'le üyeliklerim | Benim forumlarım | Fotoğraf Albümleri
Favorileriniz | Üyeler | Arama | SSS | Şikayet listesi | Uyarı listesi | Nick işlemleri
Algoritma

İlgili konuları bak: (bu forumda | tüm forumlarda)

Bu isimle girdiniz: Guest
Bu konudaki kullanıcılar: hiç
  Basılabilir versiyon
Tüm forumlar >> [Web Tasarım - Programlama] >> Yazılım Geliştirme >> Delphi / C++ /Vb >> Algoritma Sayfa: [1]
Giriş
Mesaj << Daha eski konu   Daha yeni konu >>
Lythari
Uzaklaştırılmış

Cezası bitmiş fakat kullanıcı giriş yapmamıştır

 8 Ekim 2008; 0:49:19 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

klavyeden girilen 4 haneli bir sayinin ekrana acilisini yazicaz ancak algoritma ve akıs semasi olarak
örnek:
a1:basla
a2:sayi gir gibi

not:ilk olarak sayi 4 haneli olmali bunu kontrol etmeli
not2:ekrana su sekilde yazilacak mesela 9324 girdim ekrana 9000 300 20 4 olarak gelicek .
bunu nasil yapicam yardimci olabilirmisiniz
tskler ederim.
sehlor

Mesaj: 1083


 8 Ekim 2008; 1:07:28 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

sayinin 4 haneli olup olmadigini kontrol edebilirsin sanirim, diger soruna gelince olay $u:

karakter e cevirip split edeceksin.
elinde 4 elemanli bir dizi olacak
sirasiyla

dizi[0] = 9;
dizi[1] = 3;
dizi[2] = 2;
dizi[3] = 4;

Deger 4 Basamakta Sabit Oldugu Icin i$in Cok Kolay
dizi[0] *=1000; // 9-*1000 = 9000
dizi[1] *=100; // 3*100 = 300;
dizi[2] *=10; // 2*10 = 20;
dizi[3] ayni $ekilde kalacak.

bunlarida ekrana bastiracaksin.
bu kdr basit.

ayrica hangi dilde lazim ?


< Bu mesaj bu kişi tarafından değiştirildi sehlor -- 8 Ekim 2008; 1:04:08 >


_____________________________

Lythari
Uzaklaştırılmış

Cezası bitmiş fakat kullanıcı giriş yapmamıştır

 8 Ekim 2008; 8:45:29 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

işte dilde lazim degil algoritmasi lazim =)

a1.basşa
a2.a sayısını girin
a3.eger a 9999 dan byük ise tekrar sayi giridiniz veya 1000den kücük ise
a4.burdan sonrasi yok iste bu girilen 4 haneli sayiyi nasil algoritmada nasil anlaticam
sehlor

Mesaj: 1083


 8 Ekim 2008; 9:20:59 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

a3. sayi<1000 veya sayi >9999 | ba$a don
a4. sayi 4 haneli
a5. sayiyi basamaklarina ayir
a6. onlar basamagini 10 ile carp
a7. yuzler basamagini 100 ile carp
a8. binler basamagini 1000 ile carp
a9. sonucu goster

nesi zorki ?

_____________________________

Lythari
Uzaklaştırılmış

Cezası bitmiş fakat kullanıcı giriş yapmamıştır

 8 Ekim 2008; 9:29:20 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

heh iste bende bu sekilde düsündüm ama aklima bu 4 haneli sayiyi nasil ayiririm kısmı kaldi kod olarak göstermissin tesekkür ederim.

ISIS

 

Mesaj: 141


 8 Ekim 2008; 10:18:38 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

1. çözüm : sistemde tamsayı fonksiyonu olduğu varsayılıyor ve
girilen sayı işaretsiz tamsayı olacak :
- başla
- sayı oku (işaretsiz tamsayı giriş )
- sayı sıfır ise bitir'e git
- sayı < 0 ise HATA'ya git
- sayı < 1000 ya da sayı > 9999 ise HATA'ya git
- sayıyı hanelere ayır :
- - - H1 <- tamsayıfonksiyonu(sayı /1000) * 1000 // sayı 9876 ise 9000
- - - H2 <- tamsayıfonksiyonu(sayı /100) * 100 - H1// sayı 9876 ise 9800-9000=800
- - - H3 <- tamsayıfonksiyonu(sayı /10) * 10 - H1 - H2 // sayı 9876 ise 9870-9000-800=70
- - - H4 <- sayı - H1 - H2 - H3 // ...
- ekrana H1, H2, H3 ,H4 yazdır
- başla'ya git
- HATA : ekrana "4 haneli pozitif sayı girin, çıkış için sıfır girin" yaz, başla'ya git
- bitir

eğer "tamsayı fonksiyonu" tanımlı değil ya da kullanamıyorsak,
girilen değeri dizgi (string) olarak kabul edebiliriz :
2.
- başla
- sayı oku (dizgi - string)
- sayı "0" (sıfır) ise bitir'e git
- eğer sayının dizgi uzunluğu (örn. length, strlen vb.) 4 değilse HATA'ya git
- eğer dizginin 1. karakteri "+" ya da "-" ise HATA'ya git
- - - dizginin 1. karakterini ve "000" ekrana yaz // örn. "9" ise "9000" yazılacak
- - - dizginin 2. karakterini ve "00" ekrana yaz // örn. "8" ise "800" yazılacak
- - - dizginin 3. karakterini ve "0" ekrana yaz // örn. "7" ise "70" yazılacak
- - - dizginin 4. karakterini ekrana yaz // ...
- başla'ya git
- HATA : ekrana "4 haneli pozitif sayı girin, çıkış için sıfır girin" yaz, BASLA'ya git
- bitir

Sayının 4 haneye ayrılmasının kodlaması ise, eğer tamsayı işlevi varsa
(kullandığın dile ait "div", "trunc", "int", gibi bir fonksiyon)
1. algoritmadaki tamsayı işlevi ile olabilir
örn. delphi için yazalım (trunc ya da div kullanabiliriz)
H1 := (sayi div 1000) * 1000;
H2 := (sayi div 100) * 100 - H1;
:

Eğer string isteniyorsa ,
yine delphiden (pascal) örnek verelim :

sayi[1] içinde 1. hane olacak, sayi[2] içinde 2. hane vb..
indisi kullanarak, ilgili haneye ulaşabilirsin. Ancak burada hanenin katsayısı vardır,
gerçek değeri değil. Hanenin sırasına göre ekrana yazdırırken peşine sıfır yazdırmalısın.
örn.
writeln(sayi[1] + "000");
writeln(sayi[2] + "00");
gibi..
Delphi dışında örn. C ile yazacaksan, indis değeri 1'den değil 0'dan başlar...

_____________________________

En korkunç düşman, unutulmuş olandır..
Lythari
Uzaklaştırılmış

Cezası bitmiş fakat kullanıcı giriş yapmamıştır

 8 Ekim 2008; 12:16:14 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

arkadasim cok cok tesekkür ederim =)
bide akıs semasini yaptimmi ödev tamamdir
üniye geldik hala ödev yav
Ulas_KAMACI

 

Mesaj: 111


 8 Ekim 2008; 16:18:49 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.


quote:

Orjinalden alıntı: ISIS

1. çözüm : sistemde tamsayı fonksiyonu olduğu varsayılıyor ve
girilen sayı işaretsiz tamsayı olacak :
- başla
- sayı oku (işaretsiz tamsayı giriş )
- sayı sıfır ise bitir'e git
- sayı < 0 ise HATA'ya git
- sayı < 1000 ya da sayı > 9999 ise HATA'ya git
- sayıyı hanelere ayır :
- - - H1 <- tamsayıfonksiyonu(sayı /1000) * 1000 // sayı 9876 ise 9000
- - - H2 <- tamsayıfonksiyonu(sayı /100) * 100 - H1// sayı 9876 ise 9800-9000=800
- - - H3 <- tamsayıfonksiyonu(sayı /10) * 10 - H1 - H2 // sayı 9876 ise 9870-9000-800=70
- - - H4 <- sayı - H1 - H2 - H3 // ...
- ekrana H1, H2, H3 ,H4 yazdır
- başla'ya git
- HATA : ekrana "4 haneli pozitif sayı girin, çıkış için sıfır girin" yaz, başla'ya git
- bitir

eğer "tamsayı fonksiyonu" tanımlı değil ya da kullanamıyorsak,
girilen değeri dizgi (string) olarak kabul edebiliriz :
2.
- başla
- sayı oku (dizgi - string)
- sayı "0" (sıfır) ise bitir'e git
- eğer sayının dizgi uzunluğu (örn. length, strlen vb.) 4 değilse HATA'ya git
- eğer dizginin 1. karakteri "+" ya da "-" ise HATA'ya git
- - - dizginin 1. karakterini ve "000" ekrana yaz // örn. "9" ise "9000" yazılacak
- - - dizginin 2. karakterini ve "00" ekrana yaz // örn. "8" ise "800" yazılacak
- - - dizginin 3. karakterini ve "0" ekrana yaz // örn. "7" ise "70" yazılacak
- - - dizginin 4. karakterini ekrana yaz // ...
- başla'ya git
- HATA : ekrana "4 haneli pozitif sayı girin, çıkış için sıfır girin" yaz, BASLA'ya git
- bitir

Sayının 4 haneye ayrılmasının kodlaması ise, eğer tamsayı işlevi varsa
(kullandığın dile ait "div", "trunc", "int", gibi bir fonksiyon)
1. algoritmadaki tamsayı işlevi ile olabilir
örn. delphi için yazalım (trunc ya da div kullanabiliriz)
H1 := (sayi div 1000) * 1000;
H2 := (sayi div 100) * 100 - H1;
:

Eğer string isteniyorsa ,
yine delphiden (pascal) örnek verelim :

sayi[1] içinde 1. hane olacak, sayi[2] içinde 2. hane vb..
indisi kullanarak, ilgili haneye ulaşabilirsin. Ancak burada hanenin katsayısı vardır,
gerçek değeri değil. Hanenin sırasına göre ekrana yazdırırken peşine sıfır yazdırmalısın.
örn.
writeln(sayi[1] + "000");
writeln(sayi[2] + "00");
gibi..
Delphi dışında örn. C ile yazacaksan, indis değeri 1'den değil 0'dan başlar...



Evet aralarında en profesyoneli budur yukarıalrdaki gibi başla eğer 4 ten küçükse filan olan mantığıdır ama yapay kod değildir.

_____________________________

ISIS

 

Mesaj: 141


 8 Ekim 2008; 21:52:36 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

Lythari Kolay gelsin; umarın işine yaramıştır. Ben üni.deyken,
2 haftada bir ödev teslim ederdik...
Bunlar ileride önüne çıkacak sorunlara kağıt-kalem kullanmadan
zihninde çözüm yolları bulman için çok iyi alıştırmalar.
Elinden geldiğince okuldaki konulara vakit ayır. Üni. aslında
okuyanlar için gerçek hayat öncesi "son sığınak"..
Ne kadar zor ve sıkıcı da gelse; sakın boşverme..

Ulas_KAMACI Sağolasın. Çözümüm en profesyonel olanı değil..
Bir çok noktaya dikkat etmeden yazdım çünkü Lythari'ye
hemen bir çözüm gerektiğini düşündüm. Daha çok hanelerin
nasıl ayrılacağına odaklanmıştı. Ben de o alana yoğunlaştım..
Ama örn. dizgi olarak girilmesi gerekiyorsa, sayının
başında ve sonunda boşluk olabilir; bunun silinmesine hiç değinmedim.. vb.

Sonuçta algoritma geliştirmenin formal bir mantığı yok.
Hem düşünce yapımızla ilgili hem de çokça deneyim.
Bir de herhangi bir sorunu daha küçük parçalara ayırmamız için
zihnimizde "modüler" teknikler geliştirmemize önayak oluyor..
Daha kaba bir ifade ile "böl ve yönet"i öğreniyoruz..


_____________________________

En korkunç düşman, unutulmuş olandır..
Lythari
Uzaklaştırılmış

Cezası bitmiş fakat kullanıcı giriş yapmamıştır

 9 Ekim 2008; 1:36:09 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

hepinize cok cok tesekkür ederim ancak dizileri daha görmedigimiz icin onu kullanamiyorum =)
digerinide tam cözemedim =) okuldan yeni geldim sanirim ondan
Sayfa:   [1]
Tüm forumlar >> [Web Tasarım - Programlama] >> Yazılım Geliştirme >> Delphi / C++ /Vb >> Algoritma Sayfa: [1]
Buraya git:



Donanım Haber Video İnceleme
Gears Of War 2 (Xbox 360)
Testere ile Locust doğramaya gidiyoruz.
Cebit 2008: KASIRGA
CPU Turkey yarışması kapsamında TOBB üniversitesi tarafından geliştirilen KASIRGA kod adlı işlemci
 


Yeni mesajlar Yeni mesajlar yok
Popüler konu, yeni mesajlar ile Popüler konu, yeni mesajlarsız
Kilitli yeni mesajlar ile Yeni mesajlar olmadan kilitli
 Yeni mesaj at
 Mesaja cevap at
 Yeni anket aç
 Oy kullan
 Kendi mesajımı sil
 Kendi konumu sil
 Mesaja değerlendir
 Mesajımı DH blog sayfama ekle
 
Reklamlar