#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int findChar(char str[], char c)
{
for(int i=0; i<strlen(str); i++)
{
if(str[i] == c) return i;
}
return -1;
}
int first(char str[], char copy[], int x)
{
if(x==0) return -1;
for(int i=0; i<x; i++)
{
copy[i] = str[i];
}
return 0;
}
int end(char str[], char copy[], int x)
{
if( (strlen(str)-1) == x) return -1;
int cpy=0;
for(int i=x+1; i<strlen(str); i++)
{
copy[cpy] = str[i];
cpy++;
}
return 0;
}
int main()
{
char text[100];
int x1,x2,x3,x4;
char copy1[50], copy2[50];
while(1)
{
printf("Введите числа и знак: ");
fgets(text, 100, stdin);
text[strlen(text)-1]='\0';
x1 = findChar(text, '+');
x2 = findChar(text, '-');
x3 = findChar(text, '/');
x4 = findChar(text, '*');
if(x1 == -1 && x2==-1 && x3==-1 && x4==-1)
printf("Неверный знак\n");
else
{
if(x1!=-1)
{
if( (first(text, copy1, x1))==0 )
{
if( (end(text, copy2, x1))==0 )
{
int num1=atoi(copy1);
int num2=atoi(copy2);
printf("Результат: %d\n", num1+num2);
}
else
printf("Второй операнд не указан\n");
}
else
printf("Первый операнд не указан");
}
else if(x2!=-1)
{
if( (first(text, copy1, x2))==0 )
{
if( (end(text, copy2, x2))==0 )
{
int num1=atoi(copy1);
int num2=atoi(copy2);
printf("Результат: %d\n", num1-num2);
}
else
printf("Второй операнд не указан\n");
}
else
printf("Первый операнд не указан");
}
else if(x3!=-1)
{
if( (first(text, copy1, x3))==0 )
{
if( (end(text, copy2, x3))==0 )
{
int num1=atoi(copy1);
int num2=atoi(copy2);
printf("Результат: %d\n", num1/num2);
}
else
printf("Второй операнд не указан\n");
}
else
printf("Первый операнд не указан");
}
else if(x4!=-1)
{
if( (first(text, copy1, x4))==0 )
{
if( (end(text, copy2, x4))==0 )
{
int num1=atoi(copy1);
int num2=atoi(copy2);
printf("Результат: %d\n", num1*num2);
}
else
printf("Второй операнд не указан\n");
}
else
printf("Первый операнд не указан");
}
for(int i=0;i<50;i++)
{
copy1[i]=' ';
copy2[i]=' ';
}
}
}
return 0;
}
Здесь использовано минимум библиотечных функций поэтому это хакерский код.