Şimdi Ara

Biri Allah rızası için şu algoritmayı çözsün pascal için

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
8
Cevap
0
Favori
419
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Slm Arkadaşlar

    Bilgisayar müh. hazırlık okuyorum ve seneye hazırlık olsun diye programlama öğreniyorum.
    bir pascal kitabından çalışıyorum. 5. bölümün sonundaki bir bir soruyu çözemedim.

    Soru:
    Klavyeden girilen bir sayı ve krakteri okuyan ve aşağıdaki gibi ekrana yazdıran prog. yaz.
    örnek:
    sayı 7 ve karakter * olsun


    yazınca doğru çıkmıyor siz resme bakın

    not: girilen sayı çift ise program bir ekler.

    sorun:
    şimdi ben burda her türlü döngüyü denedim ama bir türlü her satırda (n+2) kadar karakter yazdırmayı bulamadım. yani 1 3 5 kere

    cevabı bulan arkadaş belki de programcılık hayatımı kurtaracak
    şimdiden teşekkürler

     Biri Allah rızası için şu algoritmayı çözsün pascal için



    < Bu mesaj bu kişi tarafından değiştirildi foobar -- 27 Şubat 2007; 13:11:01 >







  • pascal syntaxını bilmiyorum ama for benzeri bir yapı yok mu pascal'da?

    Bak sana şöyle bir Java kodu vereyim, buradan esinlenebilirsin belki{
     
    import java.util.Scanner;

    public class Baklava2{
    public static void main(String args[]){
    Scanner klavye = new Scanner(System.in);
    System.out.println("N: ");
    int N = klavye.nextInt();

    for(int i=1; i<N; i++)
    System.out.print(" ");
    System.out.println("*");

    for(int i=1; i<=2*N-3; i++){
    for(int j=Math.abs(N-(i+1)); j>0; j--)
    System.out.print(" ");
    System.out.print("*");
    for(int j=1; j<=2*N-3-2*Math.abs(N-i-1); j++)
    System.out.print(" ");
    System.out.println("*");
    }

    for(int i=1; i<N; i++)
    System.out.print(" ");
    System.out.println("*");
    }
    }


    programın çıktısı
     Biri Allah rızası için şu algoritmayı çözsün pascal için




  • for(i=1;i<=sayi;i+=2)
    {for(k=1;k<=i;k++)
    printf("*")
    printf("\n")
    }
    for(i=sayi-2;i>=1;i-=2)
    {for(k=1;k<=i;k++)
    printf("*")
    printf("\n")
    }

    böyle bişey olabilir belki. bu C dilinde ama pek farki yok.bir de baklava dilimi gibi çıkmaz.o şekilde çıkması için gotoxy komutu kullanılabilir yada başka yolları da olabilir

    *
    ***
    *****
    *******
    *****
    ***
    *
    böyle cikar.
  • tesekkürler arkadaslar tam cevap için ugrasıyorum
    donanimhaber de buldum
    burada aynı algoritma sabit 5 sayısı için yazılmış ama benimki sabit değil o zaman iş değişiyor

    uses crt;
    var
    a,b,c:integer;
    begin clrscr;
    for a:=1 to 3 do begin
    if a=1 then c:=1;
    if a=2 then c:=3;
    if a=3 then c:=5;
    for b:=1 to c do
    write('A');
    writeln;
    end;
    for a:=1 to 2 do begin
    if a=1 then c:=3;
    if a=2 then c:=1;
    for b:=1 to c do
    write('A');
    writeln;
    end;
    readln;
    end.



    < Bu mesaj bu kişi tarafından değiştirildi foobar -- 27 Şubat 2007; 21:24:17 >
  • En basit yöntemle açıklıyorum.

    bir tane method yaz (adı row olsun diyelim)

     
    row(int space, int star)

    bu row methodu , 2 tane paremetre alıyor
    ve ekrana space sayisi kadar bosluk , star sayisi kadar yildiz yazdiriyor.




     

    main method

    mainde ise tek yapman gereken şey
    boşluk sayisini ve yildiz sayisini ayarlamak.
    daha sonra bu space and star değişkenlerini row methoduna göndermek.
    aşağı satıra geçmek


    sana tam bir Algoritma vermedim, sadece problemi basite indirgeyip çözmeyi gösterdim.
    ( algoritmada en önemli şey basite indirgemektir. )

    Sen bu yöntemi kullanarak biraz uğraş.
    eğer yapamazsan söyle matlabta yaptığım algoritmayı sana gönderiyim.

    kolay gelsin




  • tam olarak kodu bu ama c dilinde

    #include<stdio.h>
    #include<conio.h>
    int sayi=23,i,k,x,y;
    main()
    {
    clrscr();
    if (sayi%2==0) sayi=sayi+1;
    x=(sayi+1)/2;
    y=1;
    for(i=1;i<=sayi;i+=2)
    {
    gotoxy(x,y);
    for(k=1;k<=i;k++)
    printf("*");
    printf("\n");
    y++;
    x--;
    }
    x=2;
    for(i=sayi-2;i>=1;i-=2)
    {
    gotoxy(x,y);
    for(k=1;k<=i;k++)
    printf("*");
    printf("\n");
    y++;
    x++;
    }
    getch();
    return 0;
    }

    sayi değerini istediğin gibi değistir ama fazlası ekranın standart yapısına (80x25 karakter) uymuyor
  • Dostum bende aynısnı php ile hazırladım koddan sonra tam istediğin olay oluyor. Açıklamak gerekirse 3 kez döngü gerekti. For dongüsü, birde hesaplatman lazım. Ve alt ve üstü iki ayrı sistemde çözdüm. Sonuç olarak zorlu bir algoritmaydı.


    $al=$_GET['al'];

    $bosluk=$al-1;

    for($k=$al+1;$k>1;$k-=2)
    {
    $z=2;// Katsayımız
    $bosluk=$k-$z;
    $yildiz=$al-($bosluk);

    for($c=0;$c<$bosluk/2;$c++)
    {
    echo "-";
    }
    for($c=0;$c<$yildiz;$c++)
    {
    echo "*";
    }
    for($c=0;$c<$bosluk/2;$c++)
    {
    echo "-";
    }
    echo "<br />";
    }//işlemi Verilen sayi/2 kez yaz

    for($k=0;$k<floor($al/2);$k++)
    {

    $bosluk=($k+1)*2;
    $yildiz=$al-$bosluk;
    for($c=0;$c<floor($bosluk/2);$c++)
    {
    echo "-";
    }
    for($c=0;$c<$yildiz;$c++)
    {
    echo "*";
    }
    for($c=0;$c<floor($bosluk/2);$c++)
    {
    echo "-";
    }
    echo "<br />";
    }//işlemi Verilen sayi/2 kez yaz


    Evet biraz karışık ama yapacak bişey yok. İstediğin yeri tek tek açıklamaya çalışırım




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • arkadaslar cevaplar için tesekkurler programlamaya devam
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.