Çalışma ekran görüntüsü:
Çalışma kodu:
#include<stdio.h>
#include<conio.h>//getch komutuyla ekranda tutmak için hata vermemesi için kullandim
int main(){
int a,b,c,d,e,f,g;//degiskenleri tanimladim
char z=0;
while (z!='q'){//bu döngüyü q yani çýkýþ girilene kadar çýkmamasý için kullandým
fflush(stdin);//enter etkisini yok etmek yani program hata verdikten sonra hafýzayý sifýirlamak hatayýi bir kez verdirmek için kullandým
printf("\n\n\t##########################################################\n");//ekranda gözüken seçim seçeneklerini burada yazdým
printf("\t>>>>>> <<<<<<\n");
printf("\t>>>>>> DRAWING MATHEMATICAL SIGNALS SHAPE <<<<<<\n");
printf("\t>>>>>> <<<<<<\n");
printf("\t>>>>>> a : Draw a summation shape <<<<<<\n");
printf("\t>>>>>> b : Draw a division shape <<<<<<\n");
printf("\t>>>>>> c : Draw a multiplication shape <<<<<<\n");
printf("\t>>>>>> q : Terminate the program <<<<<<\n");
printf("\t>>>>>> <<<<<<\n");
printf("\t##########################################################\n\n");
printf("\tChoose one of them,please:\n");//burada seçilecek seçimi istedim ve aldýrdým
scanf("%c",&z);
while((z=='a')||(z=='b')||(z=='c')){//seçim bu koþullar içinde olduðu sürece devamlýlýðý saðlamak için bunun sebebi a deðiþkenine rakam yerine karakter girince döngüyü saðlamak için
if (z=='a'){//z karakteri a olunca toplama iþlemini seçtirmek için
printf("\nEnter width of the summation shape(as an odd number):\n");//burada toplamýn boyutunu istiyor ve alýyor
scanf("%d",&a);
if (0==a%2){//girilen sayý çiftse hata vermemesi için koydum tek sayý girilmezse yanlýþ çýktý vermesin diye
b=a/2;//integerýn yarýsýný alýp
f=b-1;//integerin yarýsýndan 1 çýkardýk ki aþaðýdaki for döngüsü için o kadar boþluk býraksýn diye
for (d=0;b>d;){//bu döngü de alttaki döngünün ayný integer deðeri kadar tekrarlanmasý için koydum
for(c=0;f>c;){//bu döngü sayýnýn yarýsý kadar boþluk býraktýrýr ve sonuna * koyar
printf(" ");
c=c+1;}
printf("*\n");//boþluklardan sonra yýldýzý koyup yeni satýra geçer
d=d+1;}
for(e=0;a>e;){//artý iþaretinin orta kýsmýndaki uzun iþareti girilen deðer kadar girmesini saðladým
printf("*");
++e;}
printf("\n");//artýnýn orta kýsmý tamamlanýnca yeni satýra geçip üstteki döngünün aynýsýný oluþturmasýný saðladým
for (d=1;b>d;){//bu döngü de alttaki döngünün ayný integer deðeri kadar tekrarlanmasý için koydum d nin üstte 3 for döngüsünden farklý deðil ama d=1 olmasýnýn sebebi orta kýsýmda 1 tane * kullanýlmýþ olmasý
for(c=0;f>c;){//bu döngü sayýnýn yarýsý kadar boþluk býraktýrýr ve sonuna * koyar
printf(" ");
c=c+1;}
printf("*\n");//boþluklardan sonra yýldýzý koyup yeni satýra geçer
d=d+1;}}
else {//girilen sayý tekse toplam sembolünü ona göre yaptým
e=a-1;//sayýnýn tek olmasý durumunda 1 çýkarark float olmasýný engellemek istedim geri kalan kýsým üstteki artý iþareti döngüsünün ayný daha net anlatmak için ayrý ayrý yazdým
b=e/2;
for (d=0;b>d;){
for(c=0;b>c;){
printf(" ");
c=c+1;}
printf("*\n");
d=d+1;}
for(e=0;a>e;){
printf("*");
++e;}
printf("\n");
for (d=0;b>d;){
for(c=0;b>c;){
printf(" ");
c=c+1;}
printf("*\n");
d=d+1;}}}
if (z=='b'){//burada bölme sembolünü yaptým aþaðýda geniþliðini istiyor ve ona göre yerleþtiriyor üstteki ve alttaki yýldýzlarý
printf("\nEnter width of the division shape(as an odd number):\n");
scanf("%d",&a);
printf("\n");
if(0==a%2){//sayýnýn çift girilince hata vermemesi amacýyla koydum
b=a/2;//sayý çiftse 2 ye böler ve o kadar boþluk verir ve yýldýz koyarak orta kýsýma geçer
for(c=0;b>c;){//boþluk verir ve yýldýz koyarak orta kýsýma geçer
printf(" ");
++c;}
printf("*\n");
for(d=0;a>d;){//bölme iþleminin orta kýsmý yani burada girilen sayý kadar * iþareti koyuyor
printf("*");
++d;}
printf("\n");
for(c=0;b>c;){//boþluk verir ve yýldýz koyarak orta kýsýma geçer
printf(" ");
++c;}
printf("*\n");}
else{//integer a tek olursa yerleþtirme iþleminde hata olmasýn diye 2. bir seçenek koydum
e=a-1;//sayý tekse 1 çýkarýr ki float olmasýn
b=e/2;
for(c=0;b>c;){//boþluk verir ve yýldýz koyarak orta kýsýma geçer
printf(" ");
++c;}
printf("*\n");
for(d=0;a>d;){//bölme iþleminin orta kýsmý yani burada girilen sayý kadar * iþareti koyuyor
printf("*");
++d;}
printf("\n");
for(c=0;b>c;){//boþluk verir ve yýldýz koyarak orta kýsýma geçer
printf(" ");
++c;}
printf("*\n");}}
if (z=='c'){//burada çarpma iþlemi için a yý istiyor ve ona göre çarpma iþaretini yazýyor
printf("\nEnter width of the multiplication shape(as an odd number):\n");
scanf("%d",&a);
b=a;//a yý ve b yi ayrý ayrý kullanacaðýmdan çoðalttým da denilebilir
e=a-1;//burada orta kýsým hariç bulunan deðerin yarýsý kadar V þeklinde * iþareti koyar
e=e/2;//sayýnýn yarýsýný da burada alýyor
for(d=0;e>d;){
printf("*");//ilk baþta * koyar
b=b-2;//burada saynýn her seferinde 2 azaltarak orta kýsýma gelecek boþluk sayýsýný bulurlar
for(c=0;b>c;){//boþluk bu döngüde konulur
printf(" ");
++c;}
printf("*");// boþluk konulduktan sonra * iþareti koyarlar
++d;
printf("\n");//yeni satýra geçerler
for(f=0,g=((a-b)+1)/2;g>f;){//bu döngüde orta kýsma gelecek olan boþluk sayýsýný bulup tekse veya çiftse ona göre * iþareti koyuyor
printf(" ");
++f;}}
if (1==a%2){//çarpma iþleminin orta kýsýmýna eðer girilen deðer tekse tek yýldýz
printf("*\n");}
else{//girilen deðer çiftse orta kýsma 2 tane yýldýz koyuyor ki kayma belli olmasýn yani sayý çift girerse hatayý gizlesin diye
printf("**\n");
for(f=0,g=((a-b)+1)/2;g>f;){//orta kýsýma gelecekboþluðu tekrar koyuyor ve alttaki döngüde X in kalan kýsmý olan ters V yi çiziyor burada o orta kýsmýný yaptým
printf(" ");
++f;}
printf("**\n");}
for(d=0;e>d;){//burada üstteki iþlemi her defasýnda 2 arttýrarak tam tersini yaptým
for(f=0,g=((a-b)-1)/2;g>f;){
printf(" ");
++f;}
printf("*");//birinci kýsma ayni * karakterine kadar ki boþluk sayýsýný bulup o kadar boþluk koydum ve * ý koydum
b=b+2;
for(c=2;b>c;){//burada da * iþaretinden sonraki 2. yýldýzýn konulacaðý yere kadar olan boþluk miktarýný girdim
printf(" ");
++c;}
printf("*");//ve * iþaretini koyup
++d;
printf("\n");}}//yeni satýra geçtim
a=0;//burada iþlem yapýlýnca a yý sýfýrlayýp hafýzada kalan kýsmýný sonraki iþlemde karakter girerse hafýzada kalaný yazmasýn diye yaptým
break;}
if (z=='q'){//eðer z karakterine q deðeri girilirse çýkýþ yaparken bunu belirtmesi için koydum ve breakle de döngü dýþýna attým gerçi döngü koþulu z!='q' ama garantiye almak için
printf("\n\n\t##########################################################\n");
printf("\t<<<<< program terminates >>>>>");
printf("\n\t##########################################################\n");
break;}
if (((z!='a')&&(z!='b')&&(z!='c')&&(z!='q'))||((a==0)&&(b==0))){//bunlarýn koþullarýn dýþýnda hata vermesi için kullandým yani z nin 'a','b','c','q' olmadýðýnda ve a ya sayý harici giriþlerde iþlem yapmaz ve hata verir
printf("\t----------------------------------------------------------------\n");
printf("\t!!!<<<<< you assign wrong try again >>>>>!!!\n");
printf("\t----------------------------------------------------------------\n");}}
getch();//programýn açýk kalmasý için kullandým çýkýþtan sonra
}