Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2014
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.55 KB | None | 0 0
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "math.h"
  4. #define _USE_MATH_DEFINES
  5. float* sygsinus(float f,int t, int czas){
  6.     int x;
  7.     float g=(float)czas/((float)t);
  8.     float y=0;
  9.     float* a=(float*)malloc(sizeof(*a)*t);
  10.     for(x=0;x<t;x++){
  11.         a[x]=sin(y*(3.1415));
  12.         y=(x+1)*g;
  13.     }
  14.     return a;
  15.     free(a);
  16.     }
  17.  
  18. float* prostokat(float f, int t, int czas){
  19.     float T=1/f;
  20.     float k=0;
  21.     int x=0;
  22.     float y=0;
  23.     float g=(float)czas/((float)t);
  24.     float* a=(float*)malloc(sizeof(*a)*t);
  25.     for(x=0;x<t;x++){
  26.         if(y>=((T/2)+k*T) && y<=(T+k*T)) a[x]=-1;
  27.         else a[x]=1;
  28.         if(y==(T+k*T))k=k+1;
  29.         y=(x+1)*g;
  30.  
  31.     }
  32.     return a;
  33.     free(a);
  34.  
  35. }
  36.  
  37. float* trojkat(float f, int t, int czas){
  38.     float T=(1/f);
  39.     float k=0;
  40.     float q=(4/T);
  41.     int x=0;
  42.     float y=0,j=0;
  43.     float g=(float)czas/((float)t);
  44.     float* a=(float*)malloc(sizeof(*a)*t);
  45.     for(x=0;x<t;x++){
  46.         a[x]=(q*y)-j;
  47.         if(y>=((T/4)+((T*k)/2))){
  48.             k=k+1;
  49.             q=(-1)*q;
  50.             if(j>=0)j=(-1)*(j+2);
  51.             else j=(-1)*(j-2);
  52.         }
  53.         y=(x+1)*g;}
  54.     return a;
  55.     free(a);
  56. }
  57.  
  58. float* pila(float f, int t, int czas){
  59.     float T=(1/f);
  60.     float k=0;
  61.     int x=0;
  62.     float y=0,j=0;
  63.     float g=(float)czas/((float)t);
  64.     float* a=(float*)malloc(sizeof(*a)*t);
  65.     for(x=0;x<t;x++){
  66.             a[x]=(2/T)*y+j;
  67.                 if(y>=((T/2)+(k*T))){
  68.                     k=k+1;
  69.                     j=j-2;
  70.                 }
  71.         y=(x+1)*g;}
  72.     return a;
  73.     free(a);}
  74.  
  75. float* zaszumienie(int t){
  76.     int x=0;
  77.     srand(time(NULL));
  78.     float* szum=(float*)malloc(sizeof(*szum)*t);
  79.     for(x=0;x<t;x++){
  80.         szum[x]=((rand()%(100))-(50))*(0.001);
  81.     }
  82.     return szum;
  83.     free(szum);
  84. }
  85.  
  86. int main(){
  87.     FILE *pt;
  88.     pt=fopen("C:\\Users\\Lenovo\\Desktop\\sygnaly\\sygnal.csv","w+");
  89.     if(pt==NULL){
  90.             printf("blad");
  91.             getchar();
  92.             return 0;}
  93.     int x,t,czas;
  94.     char typ;
  95.     float f,y=0;
  96.     char s[4];
  97.  
  98.     printf(" p - pila, s - sinus, t -trojkat, r-prostokat \n");
  99.     printf("Podaj typ sygnalu: ");
  100.     scanf(" %c",&typ);
  101.     printf("Podaj czestotliwosc: ");
  102.     scanf("%f",&f);
  103.     printf("Podaj ilosc probek:");
  104.     scanf("%i",&t);
  105.     printf("Podaj czas trwania sygnalu:");
  106.     scanf("%i",&czas);
  107.     printf("Dodac szum?");
  108.     scanf("%s",&s);
  109.  
  110.     char buffer[100],bifor[100];
  111.     float g=(float)czas/((float)t);
  112.     float* a=(float*)malloc(sizeof(*a)*t);
  113.     float* i=(float*)malloc(sizeof(*i)*t);
  114.     float* szum=((float*)malloc(sizeof(*szum)*t));
  115.  
  116.     if(s[0]=='t')szum=zaszumienie(t);
  117.  
  118.                 switch(typ){
  119.         case's':{
  120.             a=sygsinus(f,t,czas);
  121.             break;
  122.                }
  123.         case'r':{
  124.             a=prostokat(f,t,czas);
  125.             break;
  126.         }
  127.         case't':{
  128.             a=trojkat(f,t,czas);
  129.             break;
  130.         }
  131.         case'p':{
  132.             a=pila(f,t,czas);
  133.             break;
  134.         }}
  135.  
  136.                 for(x=0;x<t;x++){
  137.                 i[x]=y;
  138.                 y=(x+1)*g;
  139.                 if(s[0]=='t')a[x]=a[x]+szum[x];
  140.                     sprintf(bifor,"%f",i[x]);
  141.                         if(bifor[0]=='-')bifor[2]=',';
  142.                         else bifor[1]=',';
  143.                     sprintf(buffer,"%f",a[x]);
  144.                         if(buffer[0]=='-')buffer[2]=',';
  145.                         else buffer[1]=',';
  146.                 fprintf(pt,"=%s;=%s \n",bifor,buffer);}
  147.  
  148.  
  149.     getchar();
  150.     free(a);
  151.     free(i);
  152.     return 0;
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement