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]

47 Görüntülenme

5 Cevap

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

Profile picture for user artgelda
artgelda
05.08.2014 - 03: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]

 

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

Profile picture for user mehmetagca
mehmetagca
05.08.2014 - 01: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.

Serdar
05.08.2014 - 03:03
teşekkür evet gördüm
Profile picture for user artgelda
artgelda
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]

picture-6841-1381999680.jpg
fbahmetkaya
04.08.2014 - 02: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

picture-399-1379511904.jpg
halil
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

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