Другие языки программирования и технологии

Программирование на языке СИ с использованием подпрограммы-функции

Здравствуйте, нужна помощь с программой. Я написал программу, объявил функцию, но не знаю, где можно применить подпрограмму. Помогите, пожалуйста.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>

long int Task(long int);
long int x,n;
long int main() {
setlocale( LC_ALL,"Russian" );
long n,x;
x=0;
printf("Введите число");
scanf("%d", &n);
printf("\n");
while (n>0)
{
x=x*10+n%10;
n/=10;
}
printf("%d", x);
return(0);
getch();
}
Вы можете реализовать функцию Task так, чтобы она принимала параметром одно число и возвращала другое — обращенное. Сейчас у вашей функции только заголовок, а нужно еще тело:

long int Task(long int num) {
//Здесь тело с последующим возвращением результата через оператор return
}

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

long int Task(long int num) {
long result = 0;
while (num > 0)
{
result = result * 10 + num % 10;
num /= 10;
}
return result;
}

А в функции main вы вместо цикла просто вызываете функцию Task и ее результат присваиваете переменной x:

printf("Введите число");
scanf("%d", &n);
printf("\n");
x = Task(n);
printf("%d", x);
return(0);
getch();

Что произойдет? Значение переменной n станет аргументом для функции Task, то есть значением ее параметра num. Функция поработает с этим значением: обратит его цифры и положит результат в свою локальную переменную result. Затем функция вернет результат в точку вызова — в строчку x = Task(n); на место "Task(n)". И этот результат будет присвоен переменной x.

Также может быть смысл переименовать функцию Task, дав ей имя соответственно ее назначению. Например, не Task, а ReverseNumber.
Дмитрий Сушко
Дмитрий Сушко
95 479
Лучший ответ
Николай Цыганков Спасибо Вам огромное! Вы очень помогли)