Как разделить программу на 2 файла? - C (СИ)
Формулировка задачи:
Дана программа простой калькулятор.
Нужно разделить ее на 2 файла. То есть операции "+ - * /" должны быть в другом файле.
Вот как это можно реализовать?(В С я новичок)
Вот сам исходный код
#include<stdio.h>
#include<math.h>
int main()
{
int x,y,ans,i;
int choice;
float div;
char loop;
ans=0;
do
{
printf("\n prodolzhit? (Y/N) : ");
scanf("%s",&loop);
if (loop=='y' || loop=='Y')/*Если пользователь вводит "y" или "Y"*/
{
printf("\n Vvedite 1 chislo: ");
scanf("%d",&x);
printf("\n Vvedite 2 chislo: ");
scanf("%d",&y);
printf("\n Viberite operaciu ");
printf("\n -------------------------------------- ");
printf("\n 1. '+' ");
printf("\n 2. '-' ");
printf("\n 3. '*' ");
printf("\n 4. '/' ");
printf("\n Vash vibor : ");
scanf("%d",&choice);
switch(choice)
{
case 1 :
{
ans = x+y;
printf("\n result = %d",ans);
break;
}
case 2 :
{
ans = x-y;
printf("\n result = %d", ans);
break;
}
case 3 :
{
ans = x*y;
printf("\n result = %d", ans);
break;
}
case 4:
{
div = x/y;
printf("\n result = %.2f", div);
break;
}
default:
printf("\n\n zapresheno!");
break;
}
}
else
printf("\n conec");
}while(loop=='y' || loop=='Y');
}Решение задачи: «Как разделить программу на 2 файла?»
textual
Листинг программы
#include<stdio.h>
#include<math.h>
double operation(int x,int y,int choice)
{
double ans=0;
switch(choice)
{
case 1 :
ans = x+y;
break;
case 2 :
ans = x-y;
break;
case 3 :
ans = x*y;
break;
case 4:
ans = (double)x/y;
break;
default:
;
}
return ans;
}
Объяснение кода листинга программы
- В данном коде функция operation выполняет арифметические операции над числами.
- При вызове функции operation передаются три аргумента: x, y, choice.
- В зависимости от значения переменной choice выполняется одна из пяти операций: сложение, вычитание, умножение, деление или ничего не происходит (возможно, это лишняя ветвь в switch-case операторе).
- Результат операции сохраняется в переменной ans.
- Возвращаемое значение функции — это ans.
- В случае, если значение choice не попадает ни под один из пяти вариантов в switch-case операторе, ничего не происходит (возможно, это лишняя ветвь в switch-case операторе).
- Прервать выполнение программы или выдать сообщение об ошибке при неправильном вводе не предусмотрено (возможно, это намеренное упрощение).
- При делении на ноль не происходит ошибки или исключения (возможно, это намеренное упрощение).
- В данном коде не используются массивы и динамическое выделение памяти.
- Данный код не содержит компонентов ввода-вывода, помимо функции printf.
- Данный код не обрабатывает исключительные ситуации, помимо возможного деления на ноль.
- Данный код не содержит вложенных функций.
- Данный код не содержит комментариев.
- В данном коде используется тип данных double для переменной ans, что позволяет ей хранить дробные числа с плавающей точкой.
- В данном коде используется оператор break для выхода из switch-case оператора.
- В данном коде используется оператор return для возврата значения из функции.
- В данном коде используется оператор default для обработки непредвиденных значений переменной choice.
- В данном коде используется оператор ; для завершения выражения.
- В данном коде используется оператор * для приведения типа данных x к типу double.
- В данном коде используется оператор / для деления x на y.