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
}
}
}
}
içi bos bı kare nasl yplr
yardm edin
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.
meraba yne bn karenn içini zarf gibi ypmk istsm nasl ypblrm yardm edermsnz
Karenin icine yazi yazip boyutunu nasil ayarlayabiliriz?