Any tips on starting a complex number calculator program?

Recommended Answers

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

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
call of notification
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;
}

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?

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

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.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.