macrofish

hecko3

May 19th, 2013
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 10.12 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define PI 3.14159
  5. #define MAX 50
  6.  
  7. #define hor 196
  8. #define ver 179
  9. #define kon_p 195
  10. #define kon_l 180
  11.  
  12. void vykresli_schema(char x, int pocet);
  13. int i, j, k;
  14. char **schema;
  15.  
  16. typedef struct
  17. {
  18.         double Xc;//celkova admit/imp
  19.         double f;//freq
  20.         double R;//celkovy odpor
  21.         double odpory[MAX];
  22.         double kondenzatory[MAX];//pole kondenzazatoru pro max 50 kondenzazatoru
  23.         double kapacitance[MAX];//pole impedanci/admitanci ...nejak to  pojmenuj jestli sem to pojmenoval spatne xD
  24. }obvod;
  25.  
  26.  
  27.  
  28. int main()
  29. {
  30.     //vytvoření dynamického pole, není potřeba dynamického.
  31.     schema = (char **)malloc(22 * sizeof(char *) );
  32.     for ( i = 0; i<22; i++)
  33.         schema[i] = (char *)malloc(3 * sizeof(char *) );
  34.  
  35.  
  36.         printf("*********************************************\n**********Vypocet odporu kondenzatoru********\n*********************************************\n\n");
  37.         obvod p;
  38.         p.R=0;
  39.         p.Xc=0;
  40.         p.f=0;
  41.         char x;
  42.         char a;
  43.         int i;
  44.         int pocet=0;
  45.         printf("chcete pocitat seriove nebo paralelne?'s'/'p'\n");
  46.         scanf("%c",&x);
  47.         fflush(stdin);
  48.  
  49.         if ((x=='p')^(x=='s'))                                  // ^ = XOR  (exclusive or) vysledek je true kdyz je PRAVE jedna podminka pravda..dalo by se normalne i OR ale timhle udelas mozna vetsi dojem :D
  50.         {
  51.                 printf("chcete pocitat kondenzatory nebo rezistory? (k / r)\n");
  52.                 fflush(stdin);
  53.                 scanf("%c",&a);
  54.                 fflush(stdin);
  55.                 if (a=='k')
  56.                         {
  57.                                 printf("kolik kondenzatoru chcete pocitat?\n");
  58.                                 scanf("%d",&pocet);
  59.                                 vykresli_schema(x,pocet);
  60.                                 fflush(stdin);
  61.                                 printf("zadejte frekvenci\n");
  62.                                 scanf("%lf",&p.f);
  63.                                 printf("zadavejte hodnoty jednotlivych kapacit:\n");
  64.                                 for(i =0; i <pocet;i++)
  65.                                 {
  66.                                         printf("C%d: ",i);
  67.                                         scanf("%lf",&p.kondenzatory[i]);
  68.                                 }
  69.  
  70.                                 for(i=0;i<pocet; i++)                                                   //vypocteme jednotlive admitance
  71.                                 {
  72.                                         p.kapacitance[i]=2*PI*p.f*p.kondenzatory[i];
  73.                                 }
  74.        
  75.  
  76.                                 if (x=='s')                                                                             // v pripade ze jde o seriove tak z nich udelame prevracenou hodnotu a mame impedance
  77.                                 {
  78.                                         for(i=0;i<pocet;i++)
  79.                                         {
  80.                                                 p.kapacitance[i]=(1/p.kapacitance[i]);
  81.                                         }
  82.                                 }
  83.  
  84.                                 for(i = 0; i < pocet; i++)                                      //sectem admitance/impedance
  85.                                 {
  86.                                         p.Xc+=p.kapacitance[i];
  87.                                 }
  88.  
  89.                                 if (x=='p')
  90.                                 {
  91.                                         printf("celkova admitance je: %lf\n",p.Xc);             //a vypisem bud se slovem admitance
  92.                                 }
  93.                                 if(x=='s')
  94.                                 {
  95.                                         printf("celkova impedance je: %lf\n",p.Xc);             //nebo impedance..jiank sou ty prinf uplne stejne
  96.                                 }
  97.  
  98.                                 p.Xc=1/p.Xc;
  99.  
  100.                                 if (x=='s')
  101.                                 {
  102.                                         printf("pro kontrolu, celkova admitance by byla: %lf\n",p.Xc);
  103.                                 }
  104.  
  105.  
  106.                                 if (x=='p')
  107.                                 {
  108.                                         printf("pro kontrolu, celkova impedance by byla: %lf\n",p.Xc);
  109.                                 }
  110.                         }
  111.  
  112.  
  113.                 else if (a=='r')
  114.                         {
  115.                                 printf("kolik rezistoru chcete pocitat?\n");
  116.                                 scanf("%d",&pocet);
  117.                                 fflush(stdin);
  118.                                 printf("zadavejte hodnoty jednotlivych odporu:\n");
  119.                                 for(i =0; i <pocet;i++)
  120.                                 {
  121.                                         printf("R%d: ",i);
  122.                                         scanf("%lf",&p.odpory[i]);
  123.                                 }
  124.  
  125.                                 if (x=='s')
  126.                                 {
  127.                                         for(i=0; i <pocet; i++)
  128.                                         {
  129.                                                 p.R+=p.odpory[i];
  130.                                         }
  131.                                         printf("celkovy odpor rezistoru obvodu v seriovem zapojeni je: %lf\n",p.R);
  132.                                 }
  133.  
  134.                                 if (x=='p')
  135.                                 {
  136.                                         for (i=0;i<pocet;i++)
  137.                                         {
  138.                                                 p.R+=1/p.odpory[i];
  139.                                         }
  140.                                         p.R=1/p.R;
  141.                                         printf("celkovy odpor rezistoru obvodu v paralelnim zapojeni je: %lf\n",p.R);
  142.                                
  143.                                 }
  144.                         }
  145.                 else
  146.                 {
  147.                         printf("spatna volba\n");
  148.                 }
  149.         }
  150.         else
  151.         {
  152.                 printf("spatna volba\n");
  153.         }
  154.         return 0;
  155.  }    
  156. void vykresli_schema(char x, int pocet)
  157. {
  158.     if (x=='s')
  159.     {
  160.         for(i = 0; i < 3; i++)
  161.         {
  162.             for(j = 0; j < 22; j++)
  163.             {
  164.                 if (i==1)
  165.                     schema[i][j] = hor;
  166.                 else
  167.                     schema[i][j] = 0;
  168.             }
  169.         }
  170.  
  171.         if (pocet>=1)
  172.         {
  173.             schema[1][2] = kon_l;
  174.             schema[1][3] = 0;
  175.             schema[1][4] = kon_p;
  176.         }
  177.         if (pocet>=2)
  178.         {
  179.             schema[1][6] = kon_l;
  180.             schema[1][7] = 0;
  181.             schema[1][8] = kon_p;
  182.         }
  183.         if (pocet>=3)
  184.         {
  185.             schema[1][10] = kon_l;
  186.             schema[1][11] = 0;
  187.             schema[1][12] = kon_p;
  188.         }
  189.         if (pocet>=4)
  190.         {
  191.             schema[1][14] = kon_l;
  192.             schema[1][15] = 0;
  193.             schema[1][16] = kon_p;
  194.         }
  195.         if (pocet>=5)
  196.         {
  197.             schema[1][18] = kon_l;
  198.             schema[1][19] = 0;
  199.             schema[1][20] = kon_p;
  200.         }
  201.  
  202.         for(i = 0; i < 3; i++)
  203.         {
  204.             printf("\t\t\t");
  205.             for(j = 0; j < 22; j++)
  206.             {
  207.                 printf("%c", schema[i][j]);
  208.             }
  209.             printf("\n");
  210.         }
  211.     }
  212.  
  213.     if (x=='p')
  214.     {
  215.         if (pocet == 1)
  216.         {
  217.             for(i = 0; i < 3; i++)
  218.             {
  219.                 for(j = 0; j < 22; j++)
  220.                 {
  221.                     if (i==1)
  222.                         schema[i][j] = hor;
  223.                     else
  224.                         schema[i][j] = 0;
  225.                 }
  226.             }
  227.  
  228.  
  229.             schema[1][10] = kon_l;
  230.             schema[1][11] = 0;
  231.             schema[1][12] = kon_p;
  232.  
  233.             for (k = 0; k < pocet; k++)
  234.             {
  235.                 for(i = 0; i < 3; i++)
  236.                 {
  237.                     printf("\t\t\t");
  238.                     for(j = 0; j < 22; j++)
  239.                     {
  240.                         printf("%c", schema[i][j]);
  241.                     }
  242.                     printf("\n");
  243.                 }
  244.             }
  245.         }
  246.         else
  247.         {
  248.             for(i = 0; i < 3; i++)
  249.             {
  250.                 for(j = 0; j < 22; j++)
  251.                 {
  252.                     if (i==2)
  253.                         schema[i][j] = hor;
  254.                     else
  255.                         schema[i][j] = 0;
  256.                 }
  257.             }
  258.  
  259.             schema[2][0] = 218;
  260.             schema[2][21] = 191;
  261.             schema[2][10] = kon_l;
  262.             schema[2][11] = 0;
  263.             schema[2][12] = kon_p;
  264.  
  265.             for(i = 0; i < 3; i++)
  266.             {
  267.                 printf("\t\t\t");
  268.                 for(j = 0; j < 22; j++)
  269.                 {
  270.                     printf("%c", schema[i][j]);
  271.                 }
  272.                 printf("\n");
  273.             }
  274.  
  275.             for (k=0; k<pocet-1; k++)
  276.             {
  277.                 for(i = 0; i < 3; i++)
  278.                 {
  279.                     for(j = 0; j < 22; j++)
  280.                     {
  281.                         if (i==2)
  282.                             schema[i][j] = hor;
  283.                         else if ((j==0 || j==21) && pocet >= 2)
  284.                             schema[i][j] = ver;
  285.                         else
  286.                             schema[i][j] = 0;
  287.                     }
  288.                 }
  289.  
  290.                 schema[2][0] = (pocet < 3 ? 192 : (k == pocet-2 ? 192 : 195));
  291.                 schema[2][21] = (pocet < 3 ? 217 : (k == pocet-2 ? 217 : 180));
  292.                 schema[2][10] = kon_l;
  293.                 schema[2][11] = 0;
  294.                 schema[2][12] = kon_p;
  295.  
  296.                 for(i = 0; i < 3; i++)
  297.                 {
  298.                     printf("\t\t\t");
  299.                     for(j = 0; j < 22; j++)
  300.                     {
  301.                         printf("%c", schema[i][j]);
  302.                     }
  303.                     printf("\n");
  304.                 }
  305.             }
  306.  
  307.  
  308.  
  309.  
  310.  
  311.         }
  312.  
  313.  
  314.     }
  315.  
  316.  
  317.  
  318.  
  319. }
Advertisement
Add Comment
Please, Sign In to add comment