Any tips on starting a complex number calculator program?
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);
}
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
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 ?
http://www.daniweb.com/techtalkforums/announcement.php?f=8&announcementid=3
ever heard of debuggers (or debug statements?).
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.