Как сделать так, чтобы процедура типа void возвращала значение? - C (СИ)
Формулировка задачи:
Доброго времени суток! Ребят, помогите поправить процедуру. Она должна быть типа void, но при этом нужно, чтобы возвращала значение. Заранее благодарю
#include <stdio.h>
#include <math.h>
#include <conio.h>
void digit(int n, float &S)
{
S=0;
while(n!=0)
{
S=S+n%10;
n=n/10;
}
}
int main() {
int n;
float S;
printf("VVedite natural'noe chislo: ");
scanf("%d",&n);
digit(n,S);
if (S>10) printf("\nVerno");
else printf("\nNe verno");
getch();
}Решение задачи: «Как сделать так, чтобы процедура типа void возвращала значение?»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <conio.h>
void
digit(int n, float* s)
{
float t;
t = 0;
while(n!=0) {
t += n%10;
n /= 10;
}
*s = t;
}
int
main(void)
{
int n;
float s;
printf("VVedite natural'noe chislo: ");
scanf("%d", &n);
digit(n, &s);
if (s>10)
printf("Verno\n");
else
printf("Ne verno\n");
getch();
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек:
для работы с выводом на экран, для выполнения математических операций и для работы с клавиатурой и мышью. - Создание функции digit с типом возвращаемого значения void и двумя аргументами типа int и float*. Функция принимает целое число n и указатель на переменную типа float s. Внутри функции объявлена временная переменная t типа float.
- В цикле while происходит перебор цифр числа n. На каждой итерации к переменной t прибавляется остаток от деления n на 10, а затем n делится на 10.
- По завершении цикла, значение переменной t присваивается переменной s.
- В функции main создается переменная типа int n для ввода числа и переменная типа float s для хранения результата.
- С помощью функции scanf вводится натуральное число.
- Вызывается функция digit с передачей в нее значения переменной n и адреса переменной s.
- С помощью условного оператора if проверяется, больше ли значение переменной s 10. При этом выводится соответствующее сообщение на экран.
- Вызов функции getch для приостановки работы программы до нажатия клавиши.
- Завершение функции main с возвратом значения 0.