Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define PI 3.14159
- #define MAX 50
- #define hor 196
- #define ver 179
- #define kon_p 195
- #define kon_l 180
- void vykresli_schema(char x, int pocet);
- int i, j, k;
- char **schema;
- typedef struct
- {
- double Xc;//celkova admit/imp
- double f;//freq
- double R;//celkovy odpor
- double odpory[MAX];
- double kondenzatory[MAX];//pole kondenzazatoru pro max 50 kondenzazatoru
- double kapacitance[MAX];//pole impedanci/admitanci ...nejak to pojmenuj jestli sem to pojmenoval spatne xD
- }obvod;
- int main()
- {
- //vytvoření dynamického pole, není potřeba dynamického.
- schema = (char **)malloc(22 * sizeof(char *) );
- for ( i = 0; i<22; i++)
- schema[i] = (char *)malloc(3 * sizeof(char *) );
- printf("*********************************************\n**********Vypocet odporu kondenzatoru********\n*********************************************\n\n");
- obvod p;
- p.R=0;
- p.Xc=0;
- p.f=0;
- char x;
- char a;
- int i;
- int pocet=0;
- printf("chcete pocitat seriove nebo paralelne?'s'/'p'\n");
- scanf("%c",&x);
- fflush(stdin);
- 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
- {
- printf("chcete pocitat kondenzatory nebo rezistory? (k / r)\n");
- fflush(stdin);
- scanf("%c",&a);
- fflush(stdin);
- if (a=='k')
- {
- printf("kolik kondenzatoru chcete pocitat?\n");
- scanf("%d",&pocet);
- vykresli_schema(x,pocet);
- fflush(stdin);
- printf("zadejte frekvenci\n");
- scanf("%lf",&p.f);
- printf("zadavejte hodnoty jednotlivych kapacit:\n");
- for(i =0; i <pocet;i++)
- {
- printf("C%d: ",i);
- scanf("%lf",&p.kondenzatory[i]);
- }
- for(i=0;i<pocet; i++) //vypocteme jednotlive admitance
- {
- p.kapacitance[i]=2*PI*p.f*p.kondenzatory[i];
- }
- if (x=='s') // v pripade ze jde o seriove tak z nich udelame prevracenou hodnotu a mame impedance
- {
- for(i=0;i<pocet;i++)
- {
- p.kapacitance[i]=(1/p.kapacitance[i]);
- }
- }
- for(i = 0; i < pocet; i++) //sectem admitance/impedance
- {
- p.Xc+=p.kapacitance[i];
- }
- if (x=='p')
- {
- printf("celkova admitance je: %lf\n",p.Xc); //a vypisem bud se slovem admitance
- }
- if(x=='s')
- {
- printf("celkova impedance je: %lf\n",p.Xc); //nebo impedance..jiank sou ty prinf uplne stejne
- }
- p.Xc=1/p.Xc;
- if (x=='s')
- {
- printf("pro kontrolu, celkova admitance by byla: %lf\n",p.Xc);
- }
- if (x=='p')
- {
- printf("pro kontrolu, celkova impedance by byla: %lf\n",p.Xc);
- }
- }
- else if (a=='r')
- {
- printf("kolik rezistoru chcete pocitat?\n");
- scanf("%d",&pocet);
- fflush(stdin);
- printf("zadavejte hodnoty jednotlivych odporu:\n");
- for(i =0; i <pocet;i++)
- {
- printf("R%d: ",i);
- scanf("%lf",&p.odpory[i]);
- }
- if (x=='s')
- {
- for(i=0; i <pocet; i++)
- {
- p.R+=p.odpory[i];
- }
- printf("celkovy odpor rezistoru obvodu v seriovem zapojeni je: %lf\n",p.R);
- }
- if (x=='p')
- {
- for (i=0;i<pocet;i++)
- {
- p.R+=1/p.odpory[i];
- }
- p.R=1/p.R;
- printf("celkovy odpor rezistoru obvodu v paralelnim zapojeni je: %lf\n",p.R);
- }
- }
- else
- {
- printf("spatna volba\n");
- }
- }
- else
- {
- printf("spatna volba\n");
- }
- return 0;
- }
- void vykresli_schema(char x, int pocet)
- {
- if (x=='s')
- {
- for(i = 0; i < 3; i++)
- {
- for(j = 0; j < 22; j++)
- {
- if (i==1)
- schema[i][j] = hor;
- else
- schema[i][j] = 0;
- }
- }
- if (pocet>=1)
- {
- schema[1][2] = kon_l;
- schema[1][3] = 0;
- schema[1][4] = kon_p;
- }
- if (pocet>=2)
- {
- schema[1][6] = kon_l;
- schema[1][7] = 0;
- schema[1][8] = kon_p;
- }
- if (pocet>=3)
- {
- schema[1][10] = kon_l;
- schema[1][11] = 0;
- schema[1][12] = kon_p;
- }
- if (pocet>=4)
- {
- schema[1][14] = kon_l;
- schema[1][15] = 0;
- schema[1][16] = kon_p;
- }
- if (pocet>=5)
- {
- schema[1][18] = kon_l;
- schema[1][19] = 0;
- schema[1][20] = kon_p;
- }
- for(i = 0; i < 3; i++)
- {
- printf("\t\t\t");
- for(j = 0; j < 22; j++)
- {
- printf("%c", schema[i][j]);
- }
- printf("\n");
- }
- }
- if (x=='p')
- {
- if (pocet == 1)
- {
- for(i = 0; i < 3; i++)
- {
- for(j = 0; j < 22; j++)
- {
- if (i==1)
- schema[i][j] = hor;
- else
- schema[i][j] = 0;
- }
- }
- schema[1][10] = kon_l;
- schema[1][11] = 0;
- schema[1][12] = kon_p;
- for (k = 0; k < pocet; k++)
- {
- for(i = 0; i < 3; i++)
- {
- printf("\t\t\t");
- for(j = 0; j < 22; j++)
- {
- printf("%c", schema[i][j]);
- }
- printf("\n");
- }
- }
- }
- else
- {
- for(i = 0; i < 3; i++)
- {
- for(j = 0; j < 22; j++)
- {
- if (i==2)
- schema[i][j] = hor;
- else
- schema[i][j] = 0;
- }
- }
- schema[2][0] = 218;
- schema[2][21] = 191;
- schema[2][10] = kon_l;
- schema[2][11] = 0;
- schema[2][12] = kon_p;
- for(i = 0; i < 3; i++)
- {
- printf("\t\t\t");
- for(j = 0; j < 22; j++)
- {
- printf("%c", schema[i][j]);
- }
- printf("\n");
- }
- for (k=0; k<pocet-1; k++)
- {
- for(i = 0; i < 3; i++)
- {
- for(j = 0; j < 22; j++)
- {
- if (i==2)
- schema[i][j] = hor;
- else if ((j==0 || j==21) && pocet >= 2)
- schema[i][j] = ver;
- else
- schema[i][j] = 0;
- }
- }
- schema[2][0] = (pocet < 3 ? 192 : (k == pocet-2 ? 192 : 195));
- schema[2][21] = (pocet < 3 ? 217 : (k == pocet-2 ? 217 : 180));
- schema[2][10] = kon_l;
- schema[2][11] = 0;
- schema[2][12] = kon_p;
- for(i = 0; i < 3; i++)
- {
- printf("\t\t\t");
- for(j = 0; j < 22; j++)
- {
- printf("%c", schema[i][j]);
- }
- printf("\n");
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment