I'm in college, and one of my previous assignments in my C class was to write a program that can solve a quadratic equation to give the x coordinates. I did all that, but I felt it could do with some refining and, more so, experimentation... I'm still in the middle of all the tweaks, so the code is kind of butchered, and I've commented out a lot of what I previously had in case I need it later on, but I've run into an issue that I just can't seem to figure out for some reason... I'll leave out all the code that actually deals with solving the equation, as what I'm having trouble with is just passing the values of the variables from one function to another.

What I'm trying to do is make it so that whenever asked for the variables 'a', 'b', and 'c', if the user inputs a character rather than a digit, or a digit that's just insane to begin with, the program tells the user they input an unrecognized value, and to please retry. This is while looped so that any similar occurrences will lead to the same result, until a valid number is input(anything below like 2billion or not a character). Once the user inputs a valid response for the first variable, the program will then move on to the second, where everything, including the while loop, is identical, same goes for the third. From there, I'm aiming for the program to take the values that the user input and carry them to a fourth function where it will actually use the values to solve the equation, but I can't seem to figure out how to call user input variables from 3 (technically 6, since the functions that are looped will need to be called upon once a valid response is given) separate functions to be ran through the one that solves it. So far the furthest I've got is just an error saying "too few arguments for function to call" anytime any of the functions are told to run run_calc(), the function that solves the equation. Like I mentioned, I've been experimenting a good bit with it, so some of the code might be pointless, I'll be cleaning it all up after I get things figured out...
The purposes of the different functions are as follows:

main acts as the facilitator for looping the entire program
input_a asks for the first variable of the equation
input_b asks for the second
input_c asks for the third
run_calc runs the whole equation
no_letters_a is for if the first variable isn't a valid response
no_letters_b is for the second variable
no_letters_c is for the third
wrong_choice is if the user inputs an invalid response when asked if they want to repeat

If anyone could help me with this, I'd really appreciate it... been working on it for the past couple days now, and have GOT to get started on my other classes' assignments... haha

Code:
#include <stdio.h>#include <math.h>



//void single_quad();
void wrong_choice();
void no_letters_a();
void no_letters_b();
void no_letters_c();
void input_a();
void input_b();
void input_c();
void run_calc();

int main(double a, double b, double c)
{
    double a;
    double b;
    double c;

    char choice = ' ';


    do
    {
        input_a();
        getc(stdin);

        printf("\nIf you would like to input another equation, please hit 'y', otherwise hit 'n':\t");
        scanf_s("%c", &choice, 1);

        if (choice == '%c')
        {
            do
            {
                wrong_choice();
                getc(stdin);
            } while (choice != 'y', choice != 'n');//here goes the function for when a character other than 'y' or 'n' is input
        }
        printf("\n");

    }while (choice == 'y');
    
    return 0;
}

void input_a()
{
    double a;

    printf("Please enter the variable for 'a':\t");
    scanf_s("%lf", &a);
    if (a == '%lf')
    {
        do
        {
            no_letters_b();
            getc(stdin);
        } while (a > 2000000000 || a < -2000000000);
    }
    input_b();    
    return a;
    //printf("%lf\n", a);
}

void input_b()
{
    double b;

    printf("Please enter the variable for 'b':\t");
    scanf_s("%lf", &b);
    if (b == '%lf')
    {
        do
        {
            no_letters_b();
        }while (b > 2000000000 || b < -2000000000);
    }
    input_c();
    return b;
}

void input_c()
{
    double c;

    
    printf("Please enter the variable for 'c':\t");
    scanf_s("%lf", &c);
    if (c == '%lf')
    {
        do
        {
            no_letters_c();
        }while (c > 2000000000 || c < -2000000000);
    }
    run_calc();// it's here I keep running into an issue, "too few arguments in function to call" is all I get
    return c;
}

void run_calc(double a, double b, double c)
{
    double a_calc = a;
    double b_calc = b;
    double c_calc = c;
    
    printf("\na = %lf\nb = %lf\nc = %lf\n", &a_calc, &b_calc, &c_calc);

    double d = -a_calc;
    double e = -b_calc;
    double f = -c_calc;

|
|
|
|//all these lines are where the equation's code is, took up well over half the post with that alone so I cut it out
|
|
}

void wrong_choice()
{
    char choice = ' ';

    printf("I'm sorry, that selection is not recognized, please input 'y' for yes or 'n' for no.");
    scanf_s("%c", &choice, 1);
    printf("\n");
}

void no_letters_a()
{
    double a;

    getc(stdin);
    printf("\nI'm sorry, you have input an unrecognized value, please input a numeric digit:\t");
    scanf_s("%lf", &a);

    if (a < 2000000000 && a > -2000000000)
    {
        input_b();
    }
    else
    {
        no_letters_a();
    }

}

void no_letters_b()
{
    double b;

    printf("\nI'm sorry, you have input an unrecognized value, please input a numeric digit:\t");
    scanf_s("%lf", &b);
    if (b < 2000000000 && b > -2000000000)
    {
        input_c();
    }
    else
    {
        no_letters_b();
    }
}

void no_letters_c()
{
    double a;
    double b;
    double c;

    printf("\nI'm sorry, you have input an unrecognized value, please input a numeric digit:\t");
    scanf_s("%lf", &c);
    if (c < 2000000000 && c > -2000000000)
    {
        run_calc();
    }
    else
    {
        no_letters_c();
    } }