Any tips on starting a complex number calculator program?

-1

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);

}

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

0

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.

0

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

*Edited
by Dani*: Formatting fixed

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?

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.

-1

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

*Edited
by happygeek*: fixed formatting

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 **;**

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

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?

0

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

0

http://www.daniweb.com/techtalkforums/announcement.php?f=8&announcementid=3

ever heard of debuggers (or debug statements?).

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

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.

This topic has been dead for over six months. Start a new discussion instead.

Recommended Topics

My second while condition is being ignored and I don't understand why. I would think I have 1 and 0 = 0 so it would break out.

`while(fgets(line, sizeof line, ...`

Hi guys,

This is my first post and basically i require some help editing my current code to help display number of students with a mark of 40 or above ...

convert from: loops properly

convert to: loops back to from (should just loop back to convert to:)

need some guidance

```
#include<iostream>
using namespace std;
int main()
{
int num;
char ...
```