Any tips on starting a complex number calculator program?

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 …``````

>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 …

>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.

I assume #include <stdio.h>

``````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 …``````

and use code tags and hopefully indentation to make your code somewhat readable.
Have you tested what the value of …

## All 17 Replies

This is what i have at the moment.#include <stdio.h>
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);

}

commented: Use code tags. And don't use void main(). +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 _

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

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.

What is wrong with the if statement, according to my notes its right but it keeps telling me ! expression syntax.

``````#include <stdio.h>
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);

}
``````

>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?

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

>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.

``````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
misplaced else
code has no effect

commented: Use code tags. +0

I assume #include <stdio.h>

``````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 an if 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 ;

Thanks that's sorted

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;
}``````

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?

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

No, what are they?

``````#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;
}``````