Soru: Kullanıcıdan bir sayı alarak ekrana verilen sayı boyutlarında *’lardan oluşan içi dolu bir kare kodu yazınız.

Çözen : Şadi Evren ŞEKER

Yukarıdaki soruyu 4 ayrı dil için (C,C++,JAVA ve C#) ayrı ayrı çözeceğim. Böylelikle okuyucu bu diller arasında mukayese yapabilecek ve bildiği bir dilden diğer dillere kolayca geçebilecektir.

Çözüm:

Soru, yapısı itibariyle 2 boyutlu bir şekil gerektirmektedir. 2 boyutlu bir şekil için 2 adet iç içe döngü (nested loop) kullanılması yeterlidir. Buradaki amaç, döngülerden birisinin yatay diğerinin düşey eksende çalışmasıdır. Sorunun a şıkkı için JAVA dilinde çözüm aşağıdaki şekilde yazılabilir:

import java.util.Scanner;
public
class kare{
public
static
void main(String args[]){
   Scanner in = new Scanner(System.in);
   int boyut;
   System.out.println("Karenin boyutlarını giriniz: ");
   boyut = in.nextInt();
   for(int i = 0;i<boyut;i++){ //her satir icin
      for(int j = 0;j<boyut;j++){ // boyut kadar yildiz bas
         System.out.print("*");
      }
      System.out.println(); // alt satira gec
   }
 }
}

Yukarıdaki kodun çalışan hali aşağıdaki şekildedir:

ÏϧÏKarenin boyutlarını giriniz:
¼¼§Ï5
ÏϧÏ*****
ÏϧÏ*****
ÏϧÏ*****
ÏϧÏ*****
ÏϧÏ*****

Benzer uygulamayı C dilinde aşağıdaki şekilde yazabiliriz:

#include <stdio.h>
#include <conio.h>
int main () {
   printf("boyutu giriniz");
    int boyut;
    scanf("%d",&boyut);
    for(int i = 0;i<boyut;i++){ //her satir icin
       for(int j = 0;j<boyut;j++){ // boyut kadar yildiz bas
          printf("*");
       }
       printf("n"); // alt satira gec
    }
    getch();
    return 0;
}

Yukarıdaki kodun örnek ekran çıktısı da aşağıda verimiştir:

Yukarıdaki soruyu C++ dilinde çözecek olursak:

#include <iostream.h>
int main () {
cout << "boyutu giriniz" ;
int boyut;
cin >> boyut;
for(int i = 0;i<boyut;i++){ //her satir icin
   for(int j = 0;j<boyut;j++){ // boyut kadar yildiz bas
      cout <<"*" ;
   }
   cout << endl; // alt satira gec
}
system("PAUSE");
return 0;
}

Yukarıdaki kod Dev-CPP ile kodlanmıştır ve ekran çıktısı aşağıdaki şekildedir:

Son olarak aynı soruyu C# dilinde yazacak olursak:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{


class
Program

{


static
void Main(string[] args)

{


Console.WriteLine(“boyutu giriniz”);


int boyut;

boyut = Console.Read();

boyut = boyut – 48;


// ascii int çevir (0-9 arasi için)


for (int i = 0; i < boyut; i++)

{ //her satir icin


for (int j = 0; j < boyut; j++)

{ // boyut kadar yildiz bas


Console.Write(“*”);

}


Console.WriteLine(); // alt satira gec

}

}

}

}

Yorumlar

  1. Şadi Evren ŞEKER

    Yukarıdaki kodlarda sadece sınır değerlerinde * sembolü bastırmak istiyorsanız bu durumu birer if ile kontrol edebilirsiniz. Basitçe döngünün ilk ve son elemanları için * diğer durumlar için (else) boşluk ” ” karakteri bastırmanız yeterlidir.

erengul için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir