Vasudha Dixit Ответов: 1

Можем ли мы использовать оператор return для возврата значения из пользовательской функции?


В этой факториальной программе при вводе любого нечислового или отрицательного числа программа должна попросить сдать значение в аренду, но на выходе программа завершается.

Это потому, что я возвращаю -1 в функции display ()? Если это так, то обязательно ли возвращать значение переменной(или другой функции) функции, если функция предназначена для возврата значения?

Пожалуйста, объясните мне, как использовать оператор return для проверки значения без выхода из программы

Что я уже пробовал:

#include <stdio.h>

int display();
void fact_fun(int num_fact);

int main()
{
    int num = 0;
    char next;

    next=display();
    
    if(next==-1) //WHEN ANY CHARACTER OR NEGATIVE NUMBER IS ENTERED IT WILL ASK TO RENTER
    {
        printf("\nOnly positive number is allowed");
        display();
    }

    while(next>=0) //WHEN NEGATIVE NUMBER IS ENTERED IT WILL END THE LOOP
 {
    num = next;
    fact_fun(num);
    next=display();
 }
    return 0;
}

int display()
{
    char inp[10]={0};
    int  input;
    int index=0;
    printf("\nEnter number to find factorial or press ENTER KEY to exit : ");

    while(((input=getchar())!=EOF)&(index<10))
    {
        if((input>='0')&&(input<='9'))
        {
            inp[index++]=input;
        }
        else if(input=='\n')
            break;
        else
            return -1;
    }
    input=atoi(inp);

    return input;
}

void fact_fun(int num_fact)
{
int fact =1;
    if(num_fact == 0)
    {
        printf("\nFactorial of %d is 1",num_fact);
        return;
    }
    else
    {
        for(int i = 1; i<= num_fact; i++)
        {
            fact = fact*i;
        }
        printf("\nFactorial of %d is %d",num_fact,fact);
    }
}

1 Ответов

Рейтинг:
0

Richard MacCutchan

printf("\nOnly positive number is allowed");
display();

Вы не фиксируете значение, возвращаемое функцией отображения.
Вы должны нам петлю, чтобы получить действительный номер, что-то вроде:
do
{
    printf("\nEnter number to find factorial or press ENTER KEY to exit : ");
    next = display()
    if (next == 0)
        return;
    if (next == -1)
    {
        printf("\nOnly positive number is allowed");
        continue;
    }
    fact_fun(next);
} while (1);