lostyazilim
tr.link

C Programlama Dili / Yardım

6 Mesajlar 1.738 Okunma
acebozum
tr.link

myuceturk myuceturk "Hello World" Kullanıcı
  • Üyelik 17.06.2013
  • Yaş/Cinsiyet 29 / E
  • Meslek Üniversite Öğrencisi
  • Konum Kocaeli
  • Ad Soyad M** Y**
  • Mesajlar 68
  • Beğeniler 9 / 11
  • Ticaret 0, (%0)
Bir kaç gündür ödev üstünde uğraşıyoruz C programlama dilinde yapılacak ödevin belli bir yerine kadar geldik ancan daha ilerletemiyoruz malesef yardım edebilecek olan arkadaşlarımız varsa sevinirim.

Soru : Ekrana çizilecek ikiz üçgen(twin triangle) şeklinin boyutunu kullanıcıdan isteyerek kullanıcının girdiği boyutta ikiz üçgeni ekrana çizdireceğiniz bir program yazacaksınız. For veya while kullanmakta serbestsiniz.



Böyle bir üçgen yapılacak kullanıcından 5 değeri istenmiş burada biz sol taraftaki üçgeni yaptık ancak sağ taraftaki üçgeni bir türlü yapamıyoruz yardımcı olacak arkadaşlara şimdiden teşekkür ediyorum.
 

 

elektronikssl
webimgo

Batuhan Batuhan Kendine webmaster Kullanıcı
  • Üyelik 08.05.2011
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum Ankara
  • Ad Soyad B** B**
  • Mesajlar 3455
  • Beğeniler 783 / 1009
  • Ticaret 1, (%100)
Bir deneyeyim dedim ben de sol tarafı bitirdim ama sağ taraf işi karıştırdı, becerebilirsem dönüş yapacağım :)
 

 

myuceturk myuceturk "Hello World" Kullanıcı
  • Üyelik 17.06.2013
  • Yaş/Cinsiyet 29 / E
  • Meslek Üniversite Öğrencisi
  • Konum Kocaeli
  • Ad Soyad M** Y**
  • Mesajlar 68
  • Beğeniler 9 / 11
  • Ticaret 0, (%0)
Teşekkürler :) hocamız sol taraftaki üçgen için 2*(size-1) demişti ancak islemi yaptırdıktan sonra döngüde nasıl kullanıcaz bilmiyorum :(

*size burada kullanıcının girdiği sayı
 

 

Metin Metin metinli.com Kullanıcı
  • Üyelik 28.03.2011
  • Yaş/Cinsiyet 31 / E
  • Meslek SEO Analisti ve Siber Güvenlik
  • Konum Ankara
  • Ad Soyad M** Y**
  • Mesajlar 1399
  • Beğeniler 61 / 582
  • Ticaret 18, (%94)
Sol taraftaki üçgeni yaptığınızı varsayıyorum. Sağ taraftaki üçgen için bu sefer tabandan yukarıya doğru başlayabilirsiniz.

Döngüye sokup tepe noktasını sabit bir değer ile belirleyip (gösterdiğiniz görsele göre tepe değeri 1 olabilir) ona geldiğinde yıldız koyma işlemini durdurabilirsiniz.

Bir diğer yöntem ise satır satır yapacaksanız sol ve sağ tarafta bulunan üçgenlerin tepe noktaları arasındaki mesafe, verilen değerin 2 katının 2 eksiği şeklinde oluyor. Her iki üçgeninde tepe noktalarını, tabandaki işaretlerin toplamından çıkardığınızda aradaki mesafeyi de satırlarda bir döngüye sokarak sıralı bir döngüye sokabilirsiniz.

Örnek şu şekilde;



Girilen değer 5 olduğu zaman tepe noktaları arasındaki mesafe (2 x 5 - 2) 8 oluyor ve bu sayı her satırda 2'nin katlarınca azalıyor. İlk adımda yukarıda çizdiğim kırmızı çizgiye düşebilecek noktaların toplamını bulduk. Sonrasında ise mavi çizgiye düşen toplam nokta sayısı ise (2 x 4 - 2) 6 oluyor.

Fonksiyon ise (2 x #satırnumarasi - 2) şeklinde oluyor. Örneğin 3. satırdaki kahverengi çizgili yere düşen nokta sayısını bulmak için (2 x 3 - 2) 4 yapmalısınız. Satır numaralarını alttan sayman gerekiyor, çünkü tepe noktası sabit ama girilen değer pozitif tam sayılardan başlatıp sonsuza kadar gidebilir. Yani satır numarası yukarıdan aşağı geldikçe azalacaktır.

Şimdi bu ne işe yaradı diyeceksin. :)

Satır satır noktalar yazdırdığını düşünelim.

Birinci satırda bir nokta yazdın, sonrasında ise yukarıda anlattığım denkleme göre çıkan sayı kadar boşluk koydun ve bir nokta daha yazdırdın. (Bu işlem ile her iki üçgenin tepe noktasını oluşturmuş oldun.)

İkinci satırda da iki nokta yazdın, sonrasında ise yine verdiğim denkleme göre çıkan sayı kadar boşluk koyup iki tane daha nokta koydun.

En altın birinci satır olduğunu varsayıyorum demiştim. İki üçgeninde tabanları arasında boşluk olmadığı için denklemi uyguladığında (2 x 1 - 2) 0 boşluk koyman gerektiğini anlayabilirsin. Yani 1. satıra geldiğinde yada fonksiyon 0 boşluk koyman gerektiğini söylediğinde döngüyü durdurup sonuçları sunabilirsin.

Z. satırda A kadar nokta yazdırıp (2 x Z - 2) kadar boşluk koyup A kadar nokta yazdırıp bir alt satıra geçeceksin. 1. satıra geldiğinde (aynı zamanda verdiğim denklemle oluşturduğun fonksiyonun cevabı 0 boşluk koyman gerektiğini söyleyene kadar) döngüyü çalıştırdığında olay tamamdır.

(Yukarıdaki genel ifadedeki A yukarıdan aşağıya doğru sayılan satır numarasıdır. Z ise aşağıdan yukarı olanı, bu kısım önemli.)

Bu işlemi verilen değere kadar devam ettirirsen sıkıntısız şekilde simetrik görüntülü üçgen üretebilirsin. :)

Sadece belirli şekilde algoritmayı açıklamak istedim, madem ödev bunu dökmek ise size kalsın. :)
myuceturk

kişi bu mesajı beğendi.

Yazar, yazılım geliştirici, SEO Analisti ve siber güvenlik uzmanı.
wmaraci
wmaraci

Batuhan Batuhan Kendine webmaster Kullanıcı
  • Üyelik 08.05.2011
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum Ankara
  • Ad Soyad B** B**
  • Mesajlar 3455
  • Beğeniler 783 / 1009
  • Ticaret 1, (%100)
Metin hocamdan sonra bana diyecek bir şey kalmamış :)

C bilmiyorum, geçen sene okulda C# öğrendim mecburen bu dilde yapmak zorunda kaldım, ancak çok syntax farkı olmasa gerek.

http://pastebin.com/4BVscUgF

Çıktı şöyle oluyor:

myuceturk

kişi bu mesajı beğendi.

myuceturk myuceturk "Hello World" Kullanıcı
  • Üyelik 17.06.2013
  • Yaş/Cinsiyet 29 / E
  • Meslek Üniversite Öğrencisi
  • Konum Kocaeli
  • Ad Soyad M** Y**
  • Mesajlar 68
  • Beğeniler 9 / 11
  • Ticaret 0, (%0)
Yardımlarınız için çok teşekkür ederim :) Program sorunsuz bir şekilde çalışıyor. Çok saolun
 

 

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al