Turkcell | Geleceği Yazanlar

Soru & Cevap

*'lardan eşkenardörtgen oluşturma kodu yardım ?

04.08.2014 - 07:00

https://gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-101/algoritmaya-giris sayfasının son örneğinde verilen kod taslağını programlamaya çalışıyorum.merkezSatiri'ni Scanner ile kullanıcıdan aldım ama while(satır >0) 'daki satır nedir anlamadım yardım lütfen ?

[code]

package paket_A;

//*larla dinamik eşkenar dörtgen yazdırma
import java.util.Scanner;
public class Class074 {
    public static void main(String[] args){
        
        Scanner giris = new Scanner(System.in);                        
        int merkezSatiri;                                                            
        System.out.print(" merkez satırı kaç *'dan oluşun : ");       
        merkezSatiri = giris.nextInt();                                          
        
         int satirSayisi = merkezSatiri*2-1;
         int satirdakiYıldızSayisi = 1;
         int satirdakiBoşlukSayisi = merkezSatiri - satirdakiYıldızSayisi;
         
         while( satır > 0){
             ...
         }
    }
    

}

[/code]

3328 Görüntülenme

5 Cevap

Serdar
05.08.2014 - 15:05

illa for kullanmak zorunda kaldım ama çalışıyor : )

[code]

package eskenardortgenwhileile1;

public class EskenarDortgen2 {
        public static void main(String[] args){                
             int merkezSatiri = 5;    
             int satirSayisi = merkezSatiri*2-1;
             int satirdakiYildizSayisi = 1;
             int satirdakiBoslukSayisi = merkezSatiri - satirdakiYildizSayisi;
             int hangiSatirda = 1;
             
                 
                 while((satirSayisi > 0) & (hangiSatirda < merkezSatiri)){
                     
                      while(satirdakiBoslukSayisi > 0){
                         System.out.print(" "); //satıra boşluk bırakır
                         satirdakiBoslukSayisi--;
                      }     
                      for(int i = 1 ;i <= satirdakiYildizSayisi ;i++){
                     System.out.print(" *"); //satıra yıldız ve boşluk bırakır
                      }  
                          satirdakiYildizSayisi++;
                          
                     satirdakiBoslukSayisi = merkezSatiri - satirdakiYildizSayisi;
                     System.out.println();
                     satirSayisi--;
                     hangiSatirda++;
                }     
                 
                 while( (satirSayisi > 0) & (hangiSatirda >= merkezSatiri)){
                      while(satirdakiBoslukSayisi > 0){
                         System.out.print(" "); //satıra boşluk bırakır
                         satirdakiBoslukSayisi--;
                      }     
                      for(int i = 1 ;i <= satirdakiYildizSayisi ;i++){
                     System.out.print(" *"); //satıra yıldız ve boşluk bırakır
                      }
                      satirdakiYildizSayisi--;
                      
                     satirdakiBoslukSayisi = merkezSatiri - satirdakiYildizSayisi;
                     System.out.println();
                     satirSayisi--;
                     hangiSatirda++;
                
             }      
        }
    }

[/code]

 

     *
    * *
   * * *
  * * * *
 * * * * *
  * * * *
   * * *
    * *
     *

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Mehmet
05.08.2014 - 13:39


[code]while(satirdakiBoslukSayisi >= 0) { System.out.print(" "); }
[/code]

Burdaki yaptığın hatadan dolayı programın while döngüsünden çıkamıyor. Sonsuz döngüye giriyor. Sürekli boşluk yazdığından sen farkedememiş olabilirsin.

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Serdar
05.08.2014 - 15:03
teşekkür evet gördüm
Serdar
05.08.2014 - 11:51

ya dünden beri uğraşıyorum şu kod niye çalışmıyo bi yardım ?

[code]

package paket_A;

public class Class074
{
    public static void main(String[] args)
    {
                            
         int merkezSatiri = 5;    
         int satirSayisi = merkezSatiri*2-1;
         int satirdakiYildizSayisi = 1;
         int satirdakiBoslukSayisi = merkezSatiri - satirdakiYildizSayisi;
         
         while(satirSayisi > 0)
         {
             while (satirdakiYildizSayisi <= merkezSatiri)
             {
                  while(satirdakiBoslukSayisi >= 0)
                  {
                     System.out.print(" ");
                  }
                 System.out.print("*");  
                 if (satirdakiYildizSayisi < merkezSatiri)
                     satirdakiYildizSayisi++;
                 else
                     satirdakiYildizSayisi--;
                  }
             }
             
             System.out.print("\n");
             satirSayisi--;
             satirdakiBoslukSayisi = merkezSatiri - satirdakiYildizSayisi;
             
         }
          
    }

[/code]

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

ahmet kaya
04.08.2014 - 14:00

satır>0 dan olduğu sürece içindeki işlemi yap demek 

büyük ihtimalle while içinde satır değişkeni 1 azaltılıyordur 

kolay gelsin

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Halil Keskin
04.08.2014 - 07:16

Selam,

Satırsayısı değişkeni problemini çözecektir, problemi kendi başına çözüp programlamak için ugraşman sana daha fazla katkı saglar kanaatindeyim. 

İyi Çalışmalar

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Serdar
05.08.2014 - 15:03
evet zaten satırsayısı yazıyomuş anca gördüm

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.