pvjc22/du4/program.c
2022-03-31 13:13:17 +02:00

103 lines
2.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include<math.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
int ch=getchar();
char priklad[300];
int count=0;
for(int idx=0;1;idx++){
priklad[idx]=ch;
if(ch=='\n'){
count++;
}
ch=getchar();
if((priklad[idx]=='\n'&&ch=='\n')||ch==EOF){ // якщо вын знаходить 2 ентера або ЕОФ то воно закынчуэ считуват з рядка
break;
}
}
char *start=priklad, *end=NULL;
for(int c=0;c<count;c++){
int skip=0,z=0;
for(int idx=0;start[idx]!='\n';idx++){
if(start[idx]=='+'||start[idx]=='-'||start[idx]=='*'||start[idx]=='/'){
z=1;
}
if((start[idx]<'0'||start[idx]>'9')&&start[idx]!=' '&&start[idx]!='='&&start[idx]!='+'&&start[idx]!='-'&&start[idx]!='*'&&start[idx]!='/'&&start[idx]!='.'){
skip=1;
printf("CHYBA\n");
while((*start)!='\n')start++; //це все перевыряэ на дыйснысть того що я ввыв
start++;
break;
}
}
if(skip==1){
continue;
}
if(z==0){
while((*start)!='\n')start++;
start++;
printf("CHYBA\n");
continue;
}
float num1=strtof(start,&end);
if(end==start){
printf("KONIEC\n");
}
while((*start)!='+'&&(*start)!='-'&&(*start)!='/'&&(*start)!='*'){
start++;
}
char znak=(*start); //операцыю яку ми проводимо чи це мынус чи це плюс ы тд
start++;
float num2=strtof(start,&end);
start=end;
while(((*start)<'0'||(*start)>'9')&&(*start)!='-'){
start++;
}
float vysledok2=strtof(start,&end);
start=end;
start++;
//printf("%f\n",vysledok2);
float vysledok=0;
/*if(num2==0&&znak=='/'){
printf("CHYBA\n");
}*/
if(znak=='-'){
vysledok=num1-num2;
}
else if(znak=='+'){
vysledok=num1+num2;
}
else if(znak=='*'){
vysledok=num1*num2;
}
else if(znak=='/'){
vysledok=num1/num2;
}
vysledok=(round(vysledok*100))/100;//заукруглюэ
if (vysledok2-vysledok < 0.001 && vysledok2-vysledok > -0.001){ //
printf("OK\n");
}
else{
printf("ZLE\n");
}
}
// printf("%.3f\n", vysledok);
return EXIT_SUCCESS;
}