Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ------------------------------------MAIN------------------------------------
- // ul10.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include "ComplexMath.h"
- struct complex a;
- struct complex b;
- struct complex v; //vysledok
- int por; //vysledok
- typOperace operacia;
- formatZobrazeni format;
- int _tmain(int argc, _TCHAR* argv[])
- {
- printf("Zadaj typ operacie 1=sucet,2=rozdiel,3=sucin\n");
- scanf_s("%d",&operacia);
- printf("Zadaj realnu a imaginarnu zlozku 1.\n");
- scanf_s("%lf%lf",&a.real,&a.imag);
- printf("Zadaj realnu a imaginarnu zlozku 2.\n");
- scanf_s("%lf%lf",&b.real,&b.imag);
- v=operace( a, b, operacia );
- por=porovnanie( a, b);
- printf("Navratova hodnota funkcie porovnanie je: %d\n",por);
- tisk( v, algebraicky );
- tisk( v, geometricky );
- return 0;
- }
- ------------------------------------ComplexMath.h-----------------------------
- #ifndef __COMPLEXMATH_H__
- #define __COMPLEXMATH_H__
- enum typOperace{soucet= 1, rozdil, soucin};
- enum formatZobrazeni{algebraicky, geometricky};
- struct complex
- {
- double real;
- double imag;
- };
- struct complex operace( struct complex a, struct complex b, enum typOperace typ);
- int porovnanie( struct complex a, struct complex b);
- void tisk( struct complex a, enum formatZobrazeni format );
- #endif
- //
- ------------------------------------ComplexMath.cpp-----------------------------
- #include "ComplexMath.h"
- #include "stdafx.h"
- #include "math.h"
- #define PI 3.14
- struct complex x;
- struct complex operace( struct complex a, struct complex b, enum typOperace typ )
- {
- switch(typ){
- case 1:
- a.real=a.real+b.real;
- a.imag=a.imag+b.imag;
- break;
- case 2:
- a.real=a.real-b.real;
- a.imag=a.imag-b.imag;
- break;
- case 3:
- a.real=a.real*b.real-a.imag*b.imag;
- a.imag=a.real*b.imag+a.imag*b.real;
- break;
- default:
- printf("Zla operacia\n");
- break;
- }
- return a;
- }
- int porovnanie( struct complex a, struct complex b)
- {
- double velkostA;
- double velkostB;
- velkostA= sqrt((a.real)*(a.real)+(a.imag*a.imag));
- velkostB= sqrt((b.real*b.real)+(b.imag*b.imag));
- if(abs(velkostA)>abs(velkostB))
- return 1;
- if(abs(velkostA)<abs(velkostB))
- return -1;
- return 0;
- }
- void tisk( struct complex a, enum formatZobrazeni format )
- {
- char zn='\0';
- switch(format){
- case algebraicky:
- if(a.imag>=0){zn='+';}
- printf("%.3lf%c%.3lfj\n",a.real,zn,a.imag);
- break;
- case geometricky:
- //printf("[%.3lf;%.3lf]\n",a.real,a.imag);
- //alebo printf("%.3lf*e^j%.3lfdeg\n",a.real,zn,a.imag);
- x.real=sqrt((a.real)*(a.real)+(a.imag*a.imag));
- if(a.imag>0&&a.real>0)
- x.imag= atan(abs(a.imag/a.real));
- else if(a.imag>0 && a.real<0)
- x.imag= PI-atan(abs(a.imag/a.real));
- else if(a.imag<0 && a.real<0)
- x.imag=-(PI-atan(abs(a.imag/a.real)));
- else
- x.imag=-atan(abs(a.imag/a.real));
- printf("%.3lf * e^j%.0lf\n",x.real,x.imag*180/PI);
- break;
- default:
- printf("Zly format");
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment