Periyodu ve doluluk oranı tamsayı olacak şekilde bir PWM işaretinin tek bir periyodunu çiziniz.

0 beğenilme 0 beğenilmeme
24 kez görüntülendi
image Kare dalga sinyali çizimi..C programlama konsol üzerinden:...

Acaba kodda iyileştirmeler yapılabilir mi ?
#include <stdio.h> int main() { int i;
int c1;//1 sırası yıldız
int c0;// sırası yıldız
int P;//periyot
int DO;//doluluk oranı
int sayac=0;//doluluk oranı için toplam boşluk
printf("Periyot degeri giriniz:\n");
scanf("%d",&P);
printf("Doluluk orani giriniz:\n");

scanf("%d",&DO);


c1 = (double)(P*DO/100);//1 sırası

c0 = (double)(P-(P*(DO/100)));//0 sırası

printf("1|");
for(i =1;i<=c1;i++)//doluluk değerine kadar yıldız yazdımak için gerekli for döngüsü
{
if(i<10)//tek basamaklı değer için yıldız.
{
printf("**");
sayac+=2;
}
else{
printf("***");//3 basamaklı değer için yıldız
sayac+=3;
}
}
for(i=0;i<11;i++)//0 1 arası düz çizgiler.
printf("\n |");
printf("\n0|");//0 satırına geçiren komut.
for(i =0;i<sayac+1;i++)//1 satırındaki yıldız sayısı kadar boşluk.
printf(" ");
for(i=c1;i<c0-1;i++)//0 satırındaki yıldız sayısı için.
{
if(i<10)
printf("**");
else
printf("***");
}
if(P==0 && DO==0)//doluluk oranı ve periyor 0 olursa yıldız basmaması için gerekli önlem.
return 0;
else
{ if(P<=10 )

printf("**");
else
{if(c1>10)//0 satırı için 2 basamaklı değerde problem olmaması için yazılan kod. printf("**");
else
printf("***");
} } printf("\n ");//periyor numaralarının bi alt satıra geçmesi için..
for(i=1;i<=P;i++)//periyot rakamları.
printf(" %d",i);
printf("\n");
return main(); //kodu tekrar çalıştırmak için kod.
return 0; }

2, Haziran, 2 Uygulamalı Bilgisayar Bilimi kategorisinde Foggy (91 puan) tarafından  soruldu
...