PDA

Tam Sürümünü Görmek İçin : Ters Piramit


takilberime
17/01/2007, 07:22
Merhaba arkadaşlar foruma yakın zamanda kayıt oldum ilk mesajımı yazmak bugüne nasipmiş.
Neyse benim C de yapmak istediğim bişi var ama işin içinden çıkamıyorum.Mantıken düşününce 3 for döngüsü yetiyor gibi ama bu for döngülerini birbirleri ile ilişkilendiremiyorum.Çıktısını almak istediğim şekil ;

*******
*****
***
*
Yardımcı olursanız çok sevinicem arkadaşlar


KamilORS
17/01/2007, 07:58
Sabah sabah aklıma şöle bişey geldi. biraz amatörce ama :) Ama siz Kendin Bu mantıkla 3. for föngüsünü kurabilirsiniz.


int i,j,a=0;
for(i=7; i>0; i=i-2)
{
if(a==0)
cout<<"";
else if(a==1)
cout<<" ";
else if(a==2)
cout<<" ";
else if(a==3)
cout<<" ";


for(j=0; j<i; j++)
{
cout<<"*";
}

cout<<endl;
a++;
}

scripter
17/01/2007, 08:13
#include stdio.h
#include conio.h
int a = 9;
int b = 10;
int c = 7;
int m = 0;
for (int j=1;j<=b;j++)
{
a = a-2;
m = c-a;
for(int k=1;k<=m;k++){printf(" ");}
for(int i=1;i<=a;i++){printf(" * ");}
printf("\n");
}


bu arada PHP'de yazip sonra C'ye cevirdim.. C'de bir satir bile yazmishligim yoktur

php'si:
<?
$a = 9;
$b = 10;
$c = 7;
for ($j=1;$j<=$b;$j++)
{
$a = $a-2;
$m = $c-$a;

for($k=1;$k<=$m;$k++)
{
print "&nbsp;";
}
for($i=1;$i<=$a;$i++)
{
print " * ";
}
print"<br>";
}
?>

acehreli
17/01/2007, 08:14
Ic ice for donguleri yerine tek bir for dongusu icinden soyle islevler cagirmak isini cok kolaylastiracaktir:


void bosluk_birak(int genislik);
void cizgi_ciz(int genislik, char karakter);


Hatta bosluk_birak islevini cizgi_ciz'i bosluk karakteriyle cagirarak halledebilirsin:


void bosluk_birak(int genislik)
{
cizgi_ciz(genislik, ' ');
}


O islevleri yazdiktan sonra, tek bir for dongusu icinden genisliklerini dogru olarak cagirirsan isin tamamdir.

Ali

takilberime
18/01/2007, 05:50
Aslında kafamda bi algoritma var ama koda dökemiyorum .
Şimdi bir for döngüsünün içine 2 tane birbirinden bağımsız for döngüsü yerleştirsek.
Temel for göngüsü piramidin satırları için
alttaki döngü boşluk basan onun altındaki 2.for döngüsünden bağımsız olanda yıldızları basan diye kağıt kalemde bişiler çizdim ama şöyle bi sorun var.Boşluk basan foru piramidin satirlarını basan for döngüsü ile ilişkilendirmem gerek.

for(sutun=5;sutun>0;sutun--){
for( ;bosluk=5-i;bosluk++){
printf(" ");}
for(yildiz=7;yildiz< .......){
printf("*");}
printff("\n");}

bunun gibi bişi ama yapamadım hala..
Başka yöntemlerle de eminim olur ama benim bu problemi nested loops larla çözmem gerek oldugu için böyle yapmam lazım.

acehreli
18/01/2007, 19:06
takilberime, sen benim mektubumu gormedin herhalde. Bak, senin mektubundan bir once yazmistim.

Burasi bir sohbet ortami oldugu icin, soylenenleri kulak arkasi yapmak kaba kaciyor. Eger benim soylediklerimi anladiysan, neden ise yaramadigini dusundugunu konusalim. Yok eger anlamadiysan, sor da anlasalim?

Senin sorununu ic ice dOngulerle (senin "nested loop" dedigin) cozmen gerekmiyor. Eger ogretmenin oyle oldugunu soyluyorsa, onu bana yolla, ben ona programcilik ogretmeyi ogreteyim.

Ali

Revne
18/01/2007, 21:22
Denemedim ama soyle bir mantık olabilir...

#define PIRAMID_SIZE 7

void PriramidCiz()
{
int i=0;
for(i=0;i<PIRAMID_SIZE;i++)
{
BoslukBirak(i);
}
}

void BoslukBirak(int i)
{
int j=0;
for(j=0;j<i;j++) printf(" ");
for (j=i;j<PIRAMID_SIZE-i;j++) printf("*");
}

Kolay Gelsin...

Orn
22/03/2007, 13:56
takilberime, sen benim mektubumu gormedin herhalde. Bak, senin mektubundan bir once yazmistim.

Burasi bir sohbet ortami oldugu icin, soylenenleri kulak arkasi yapmak kaba kaciyor. Eger benim soylediklerimi anladiysan, neden ise yaramadigini dusundugunu konusalim. Yok eger anlamadiysan, sor da anlasalim?

Senin sorununu ic ice dOngulerle (senin "nested loop" dedigin) cozmen gerekmiyor. Eger ogretmenin oyle oldugunu soyluyorsa, onu bana yolla, ben ona programcilik ogretmeyi ogreteyim.

Ali
selamlar,
haklısın hocam ama bu hafta ıcı bızım hoca da bu pıramıde cok benzer bır seyı yanı bır kum saatını nested loops larla cozmemızı ıstedı. ic ice ye gerek yok demıssın dıger cozumu de yazarsan bızım ıcın cok ıyı olur

acehreli
22/03/2007, 21:34
maro, noktalama isaretleri kullanmadigin icin ne soyledigini anlayamiyorum. Benden cozum istiyorsun saniyorum ama hem bu forumda odev cozmuyoruz hem de senin icin iyi olmasi icin senin cozmeye calisman gerekiyor.

Ic iceye gerek yok dedigim yerde iki tane islev yazilabilecegini soylemistim ya... Iste o islevler kullanilarak tek bir for dongusuyle yapilabilir.

Ali