0

Hi,

I seem to be having a problem with my code below, which I would like to be able to use to return 2 values from the result of a quadratic equation operation. The eReturn function takes care of negative square root values. I'm not getting any errors back, just both of my results as 0.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void eReturn()
{
    printf("\nOne or both of your answers is complex.\n");
    return;
}

void QuadFormula(float a, float b, float c)
{
    float x1, x2, y, dis, *d, *e;


    dis = ((b*b)-(4*a*c));

    if (dis<0)
    eReturn();

    else if (dis>0)

    {
        y = sqrt(dis);

        x1 = (-b+y)/(2*a);
        x2 = (-b+y)/(2*a);

        d = &x1;
        e = &x2;
    }
}



int main()
{
    float a, b, c, *d, *e, result1, result2;


    printf("Please enter your value for a: ");
    scanf("%f", &a);

    printf("\nPlease enter your value for b: ");
    scanf("%f", &b);

    printf("\nPlease enter your value for c: ");
    scanf("%f", &c);

    QuadFormula(a, b, c);

    result1 = *d;
    result2 = *e;

    printf("\nThe results of the calculation  (%.0fx^2 + %.0fx + %.0f) are %f and %f", a, b, c, result1, result2);
}

Any help would be appreciated :)

Collin

4
Contributors
3
Replies
5
Views
4 Years
Discussion Span
Last Post by Miorfs
0

void functions like eReturn, don't return anything, so putting the word "return" in there, is completely superflous.

And you can only return one item from a function. If you need more, I'd send it to the function as a pointer in the parameter. Say I want to return i and sum. I could do it this way:

int myIvariable, sum=0;

myIvariable = myFunction(&sum); //sending the address of sum
//now myIVariable has the value of i from myFunction(), and sum has a new value, also.
printf("myIvariable: %d,  sum: %d \n",myIvariable, sum);

int myFunction(int *sum) { //*sum is now the sum amount and "sum" is a pointer
   int i;
   for(i=0;i<22;i++) //a simple for loop
      *sum += i;

   return i;
}

If that doesn't help you, run through a C tutorial (there are scads of them on the net), because this is a very important concept in C.

Edited by Adak

0

Hi, Collin.

The variables *d and *e are never passed passed into the function QuadFormula.

The main program calls the subroutine, and assigns *d and *e to result1 and result2, without ever passing them in to the routine.

Also, I would recommend initializing variables before using them. That way you are always starting from a known quantity. As the programs you write get bigger and more complicated, it is better to have them initialized than have to face an "Undefined Variable" error later on.

0

hi colin,i think this would be help

#include <stdio.h>
#include <stdlib.h>
#include<math.h>

int main()
{
    float A,B,C,test;
    float x1,x2;

    printf("This program will solve the quadratic equations\n");

    printf("\nEnter the integer value a,b and c for the equations Ax^2 + Bx + C\n\n\n");

    printf("Enter the value of integer A : \n\n");
    scanf("%d", &A);
    printf("Enter the value of integer B : \n\n");
    scanf("%d", &B);
    printf("Enter the value of integer C : \n\n");
    scanf("%d", &C);

    test=(B*B)-(4*A*C);//to know if it valid or not

    if(test<0)
    {
        printf("This equations do not have the root\n\n\n");
    }

    else if (test==0)

    {
        x1=-B/(2*A);
        printf("\n\nThe value of X is : %.2f\n\n", x1);
    }

    else
    {
        x1=(-B + sqrt(test)/(2*A));

        x2=(-B - sqrt(test)/(2*A));

        printf("\n\nThe values of X is %.2f and %.2f\n\n",x1,x2);

    }

    getchar();



}
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.