Problem1: When I tried outputting a printf "error message" at dividing by zero, it screwed up my code and no output was shown at all.
Problem2: When I perform an operation, I get 8 results instead of 5.

``````#include <stdio.h>
//Defining a few "functions" which will be used in the main function
#define MAX 5
float v1[MAX], v2[MAX], v3[MAX];  //First input vector, second input vector, and result vector respectively
//Defining "getVec" which will get each of 5 vectors that the user inputs
void getVec( float v[] )  {
int c, i;
for(i=0; i<MAX; ++i)  {
printf( "Element %d: ", i+1 );
scanf( "%f", &v[i] );
while( (c= getchar()) !='\n' ) {
c= getchar(); 	/* 'flush' stdin */
}
}
}
//In turn, showVec will output the vectors typed or calculated
void showVec( float v[] )  {
int i;
for(i=0; i<MAX-1; ++i)  {
printf( "%.2f ", v[i] );
printf( "%.2f ", v[MAX-1] );
}
}
//Defining the addition process for all 5 vector components
int i;
for(i=0; i<MAX; ++i)  {
v3[i] = v1[i] + v2[i];
}
}
//Defining the subtraction for all 5 vector components
void sub()  {
int i;
for(i=0; i<MAX; ++i)  {
v3[i] = v1[i] - v2[i];
}
}
//Defining the multiplication for all 5 vector components
void mult() {
int i;
for(i=0; i<MAX; ++i) {
v3[i] = v1[i] * v2[i];
}
}
//Defining the division for all 5 vector components
void divide() {
int i;
for(i=0; i<MAX; ++i) {
v3[i] = v1[i] / v2[i];
}
}
//My main function, user interaction, and "stupid-proofing"
int main() {
int c;
int vecFlag= 1;  //if "vecFlag" is True, calculator starts and keeps looping
//If False -0-, it stops
char operation;

//Infinite loop until "return 0"
for(;;) {
if(vecFlag)  {
printf("\nGetting 1st vector of %d elements ...\n", MAX);
getVec( v1 ); /* vector is passed in and returned by 'reference' */
printf("\nGetting 2nd vector of %d elements ...\n", MAX);
getVec( v2 );
}
//User chooses the operation sign
printf( "Enter an operation from this list + - * / Your choice : " );
scanf( "%c", &operation );
c= operation;
while( c!='\n' ) {
c= getchar(); /* 'flush' stdin ... */
}
//If the user chooses +, addition is done using the "add" function I defined before
if( operation == '+' ) {
printf("\nShowing sum vector.\n");
showVec( v3 );
}
//If the user chooses -, subtraction is done using the "sub" function I defined before
else if( operation == '-' ) {
sub();
printf("\nShowing difference vector.\n");
showVec( v3 );
}
//If the user chooses *, multiplication is done using the "mult" function I defined before
else if( operation == '*' ) {
mult();
printf("\nShowing product vector.\n");
showVec( v3 );
}
//If the user chooses /, division is done using the "divide" function I defined before
else if( operation == '/' ) {
divide();
printf("\nShowing division result - remember: you cannot divide by zero.\n");
showVec( v3 );
}
//Anything, other than the 4 signs, will cause an error
else printf( "\nInput Error! Operation must be one of + - * / \n" );

//User decides whether they want to do more calculations
printf( "\nContinue? (y/n)" );
c= getchar();
if( c=='n' || c=='N' ) {
return 0;
}
while( c!='\n' ) {
c= getchar();	/* 'flush' stdin ... */
vecFlag= 0;
}
//User decides if the vectors for the new calculation are new ones
printf( "\nNew vectors? (y/n)" );
c= getchar();
if( c=='y' || c=='Y' ) {
vecFlag= 1;
}
while( c!='\n' ) {
c= getchar();	/* 'flush' stdin ... */
}
} //Closing "for" loop
}
//End of program``````

``````void showVec( float v[] ) {
int i;
for(i=0; i<MAX; ++i) {
printf( "%.2f ", v[i] );
}``````

``````void divide() {
int i;
for(i=0; i<MAX; ++i) {
if(v2[i]==0)
{
printf("Divide by zero error\n");
return;
}
v3[i] = v1[i] / v2[i];
}``````

You hadn't really "stupid-proofed" your code before. You had only warned the user not to enter zero, but displayed no error msg when he actually did.

On another note, you might want to use switch cases instead of if else ladders. In my opinion, it would give your code more clarity.

Be a part of the DaniWeb community

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