954,500 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Complex Numbers

Any tips on starting a complex number calculator program?

jcr1
Newbie Poster
12 posts since Nov 2004
Reputation Points: 10
Solved Threads: 0
 

This is what i have at the moment.#include
void main()
{

int a_real,a_imaginary;
int b_real,b_imaginary;

printf ("a real = ");
scanf ("%d",&a_real);

printf ("a imaginary = ");
scanf ("%d",&a_imaginary);

printf ("b real = ");
scanf ("%d",&b_real);
printf ("b imaginary = ");
scanf ("%d",&b_imaginary);


}

jcr1
Newbie Poster
12 posts since Nov 2004
Reputation Points: 10
Solved Threads: 0
 

Hello,

It might help to know what type of calculator program you are looking for. You might want to structure it so that the user has to input a function...

Welcome to the Calculator Program.
 Would you like to Add, Subtract, Divide, or Multiply (A,S,D,M)?
 
 You chose to _
 
 Please enter in your 1st Number:  __
 Please enter in your 2nd Number: __
 
 Your answer is:  ____
 
 Would you like to calculate another?


Now, keep these things in mind:

* DO NOT ALLOW YOUR COMPUTER TO DIVIDE BY ZERO. That could crash out the computer, and give the user a nasty message. Put a check in there to ensure that b <> 0

* Be careful with the imaginary numbers. Review how they work.

* If you have to add trig functions, then make sure they follow the rules too.

* How are you going to handle exponents?

Some enhancement ideas:

* Implement a memory function that can store a value to be compared with later.

* Implement a small array, say 25 numbers, that you can average together or sort out (kinda like an adding machine thing).

Christian

kc0arf
Posting Virtuoso
Team Colleague
1,937 posts since Mar 2004
Reputation Points: 121
Solved Threads: 57
 

cheers, i do need the user to put in a function either +,-,/,*.To calculate the complex number e.g. (1+j2) + (-6-j6) and it has to output the results in cartesian co-ordinates.

jcr1
Newbie Poster
12 posts since Nov 2004
Reputation Points: 10
Solved Threads: 0
 

What is wrong with the if statement, according to my notes its right but it keeps telling me ! expression syntax.
#include
void main()
{

int a_real,a_imaginary;
int b_real,b_imaginary;
int complex_number;

int enter_operator;
printf ("a real = ");
scanf ("%d",&a_real);

printf ("a imaginary = ");
scanf ("%d",&a_imaginary);

printf ("b real = ");
scanf ("%d",&b_real);
printf ("b imaginary = ");
scanf ("%d",&b_imaginary);
printf ("Enter operator = ");
scanf ("%d",&enter_operator);
if (enter_operator = +);
complex_number = (a_real+b_real)+j(a_imaginary+b_imaginary);
if (enter_operator = -)
complex_number = (a_real-b_real)+j(a_imaginary-b_imaginary);


}

jcr1
Newbie Poster
12 posts since Nov 2004
Reputation Points: 10
Solved Threads: 0
 

>according to my notes its right
And your notes have to be correct? Nope, sorry.

>void main()
int main ( void )

>int enter_operator;
char enter_operator;

>scanf ("%d",&enter_operator);
scanf ("%c",&enter_operator);

>if (enter_operator = +);
if (enter_operator == '+')

>if (enter_operator = -)
else if (enter_operator == '-')

>}
return 0;
}

Clear?

Narue
Bad Cop
Administrator
15,460 posts since Sep 2004
Reputation Points: 6,464
Solved Threads: 1,401
 

That,s no good either,it's given me more errors.

jcr1
Newbie Poster
12 posts since Nov 2004
Reputation Points: 10
Solved Threads: 0
 

>That,s no good either
Then you're doing it wrong.

>it's given me more errors
Please start giving us workable information instead of complaining about your mythical non-working code. Your idiocy isn't entertaining anymore. More specifically, post the errors you get, and the code that causes them.

Narue
Bad Cop
Administrator
15,460 posts since Sep 2004
Reputation Points: 6,464
Solved Threads: 1,401
 

int main (void)
{

int a_real,a_imaginary,j;
int b_real,b_imaginary;
int complex_number;

char enter_operator;
printf ("a real = ");
scanf ("%d",&a_real);

printf ("a imaginary = ");
scanf ("%d",&a_imaginary);

printf ("b real = ");
scanf ("%d",&b_real);
printf ("b imaginary = ");
scanf ("%d",&b_imaginary);
printf ("Enter operator = ");
scanf ("%c",&enter_operator);
if (enter_operator == '+') complex_number = (a_real+b_real)+j(a_imaginary+b_imaginary);

printf ("\ncomplex number is %d\n",complex_number);
else if (enter_operator == '-');
complex_number = (a_real-b_real)+j(a_imaginary-b_imaginary);
printf ("\ncomplex number is %d\n",complex_number);

else if (enter_operator == '/');
complex_number = ((a_real*b_real+a_imaginary*b_imaginary)/(b_real*b_real)+(b_imaginary*b_imaginary))+j((a_imaginary*b_real-a_real*b_imaginary)/(b_real*b_real+b_imaginary*b_imaginary));
printf ("\ncomplex number is %d\n",complex_number);

else if (enter_operator == '*');
complex_number = ((a_real*b_real)-(a_imaginary*b_imaginary))+j((a_real*b_imaginary)+(a_real*b_real));
printf ("\ncomplex number is %d\n",complex_number);
return 0;
}
errors
call of notification
misplaced else
code has no effect

jcr1
Newbie Poster
12 posts since Nov 2004
Reputation Points: 10
Solved Threads: 0
 

I assume #include int main (void)
{

int a_real,a_imaginary,j;
int b_real,b_imaginary;
int complex_number;

char enter_operator;
printf ("a real = ");
scanf ("%d",&a_real);

printf ("a imaginary = ");
scanf ("%d",&a_imaginary);

printf ("b real = ");
scanf ("%d",&b_real);
printf ("b imaginary = ");
scanf ("%d",&b_imaginary);
printf ("Enter operator = ");
scanf ("%c",&enter_operator);
if (enter_operator == '+')
{
complex_number = (a_real+b_real)+j(a_imaginary+b_imaginary);

printf ("\ncomplex number is %d\n",complex_number);
}
else if (enter_operator == '-')
{
complex_number = (a_real-b_real)+j(a_imaginary-b_imaginary);
printf ("\ncomplex number is %d\n",complex_number);
}
else if (enter_operator == '/')
{
complex_number = ((a_real*b_real+a_imaginary*b_imaginary)/(b_real*b_real)+(b_imaginary*b_imaginary))+j((a_imaginary*b_real-a_real*b_imaginary)/(b_real*b_real+b_imaginary*b_imaginary));
printf ("\ncomplex number is %d\n",complex_number);
}
else if (enter_operator == '*')
{
complex_number = ((a_real*b_real)-(a_imaginary*b_imaginary))+j((a_real*b_imaginary)+(a_real*b_real));
printf ("\ncomplex number is %d\n",complex_number);
}
return 0;
}


First, if in anif statement you have more than one single instruction, you have to put these instructions between { and }
Second, else if (expr) does not ever end with a ;

frrossk
Posting Whiz in Training
220 posts since Sep 2004
Reputation Points: 17
Solved Threads: 9
 

Thanks that's sorted

jcr1
Newbie Poster
12 posts since Nov 2004
Reputation Points: 10
Solved Threads: 0
 

Whats up with this program it lets me put the numbers in but dose not output the answer from the calculations?

#include <stdio.h>


 int main (void)
{

int a_real,a_imaginary;
int b_real,b_imaginary;
int complex_number;
char j;
char enter_operator;
printf ("a real = ");
scanf ("%d",&a_real);

printf ("a imaginary = ");
scanf ("%d",&a_imaginary);

printf ("b real = ");
scanf ("%d",&b_real);
printf ("b imaginary = ");
scanf ("%d",&b_imaginary);
printf ("Enter operator = ");
scanf ("%c",&enter_operator);

if (enter_operator == '+')
{
complex_number += (a_real+b_real)+(a_imaginary+b_imaginary);

printf ("\ncomplex number is %c\n",complex_number);
}
else if (enter_operator == '-')
{
complex_number -= (a_real-b_real)+(a_imaginary-b_imaginary);
printf ("\ncomplex number is %c\n",complex_number);
}
else if (enter_operator == '/')
{
complex_number /= ((a_real*b_real+a_imaginary*b_imaginary)/(b_real*b_real)+(b_imaginary*b_imaginary))+((a_imaginary*b_real-a_real*b_imaginary)/(b_real*b_real+b_imaginary*b_imaginary));
printf ("\ncomplex number is %c\n",complex_number);
}
else if (enter_operator == '*')
{
complex_number *= ((a_real*b_real)-(a_imaginary*b_imaginary))+((a_real*b_imaginary)+(a_real*b_real));
printf ("\ncomplex number is %c\n",complex_number);
}
return 0;
}
jcr1
Newbie Poster
12 posts since Nov 2004
Reputation Points: 10
Solved Threads: 0
 

don't start a new thread when dealing with your old problem...

http://www.daniweb.com/techtalkforums/thread13701.html

and use code tags and hopefully indentation to make your code somewhat readable.
Have you tested what the value of your "enter_operator" actually is after the input?
Should it even go into one of your if-statements?

jwenting
duckman
Team Colleague
8,392 posts since Nov 2004
Reputation Points: 1,662
Solved Threads: 337
 

sorry am in a rush with this program,whats code tags and how do i check what the input is ?

jcr1
Newbie Poster
12 posts since Nov 2004
Reputation Points: 10
Solved Threads: 0
 
jwenting
duckman
Team Colleague
8,392 posts since Nov 2004
Reputation Points: 1,662
Solved Threads: 337
 

No, what are they?

jcr1
Newbie Poster
12 posts since Nov 2004
Reputation Points: 10
Solved Threads: 0
 
#include <stdio.h>


int main (void)
{

int a_real,a_imaginary;
int b_real,b_imaginary;
int complex_number;
char j;
char enter_operator;
printf ("a real = ");
scanf ("%d",&a_real);

printf ("a imaginary = ");
scanf ("%d",&a_imaginary);

printf ("b real = ");
scanf ("%d",&b_real);
printf ("b imaginary = ");
scanf ("%d",&b_imaginary);
printf ("Enter operator = ");
scanf ("%c",&enter_operator);

if (enter_operator == '+')
{
complex_number += (a_real+b_real)+(a_imaginary+b_imaginary);

printf ("\ncomplex number is %c\n",complex_number);
}
else if (enter_operator == '-')
{
complex_number -= (a_real-b_real)+(a_imaginary-b_imaginary);
printf ("\ncomplex number is %c\n",complex_number);
}
else if (enter_operator == '/')
{
complex_number /= ((a_real*b_real+a_imaginary*b_imaginary)/(b_real*b_real)+(b_imaginary*b_imaginary))+((a_imaginary*b_real-a_real*b_imaginary)/(b_real*b_real+b_imaginary*b_imaginary));
printf ("\ncomplex number is %c\n",complex_number);
}
else if (enter_operator == '*')
{
complex_number *= ((a_real*b_real)-(a_imaginary*b_imaginary))+((a_real*b_imaginary)+(a_real*b_real));
printf ("\ncomplex number is %c\n",complex_number);
}
return 0;
}
jcr1
Newbie Poster
12 posts since Nov 2004
Reputation Points: 10
Solved Threads: 0
 

don't start a new thread when dealing with your old problem...

http://www.daniweb.com/techtalkforums/thread13701.html

and use code tags and hopefully indentation to make your code somewhat readable. Have you tested what the value of your "enter_operator" actually is after the input? Should it even go into one of your if-statements?

Went ahead and merged these two threads together. Let's make sure that we keep topics all inclusive in one thread.

alc6379
Cookie... That's it
Team Colleague
2,820 posts since Dec 2003
Reputation Points: 186
Solved Threads: 147
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You