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

57 lines
1.6 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<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define SIZE 120
int main(){
char pol[SIZE];
memset(pol,'\0',SIZE*sizeof(char));//заповняэ масив ПОЛ знаком \0
int ch=0;
for(int idx=0;1;idx++ ){
ch=getchar();
if(ch==EOF||ch==' ')break;
pol[idx]=ch;
} //записуэ з клавыатури в ПОЛ
for(int i=0, p=0;i<strlen(pol);i++){//перевыряэ на нормальний ввыд
if(pol[i]=='\n')p++;
else if((pol[i]<='9'&&pol[i]>='0')||(pol[i]=='.')||(pol[i]==EOF)||(pol[i]==' '));
else if(p==0){
printf("Nepodarilo sa nacitat zaklad x\n");//виводить помилку якщо в нас немаэ першого числа
return 0;
}
else {
printf("Nepodarilo sa nacitat polynom na %d mieste.\n", p);//виводить якщо знайде символ який не э цифрою ы не э особливим знаком
return 0;
}
}
int koef=-1;
for(int i=0;i<strlen(pol);i++){
if(pol[i]=='\n')continue; //вираховуэ елементи полыному
else for(int i2=0;pol[i]!='\n';i++,i2++);
koef++;
}
long double x=0;
char *end = NULL;
char *start = pol;
x=strtof(start,&end);
//шукаэ Х
start=end;
long double num=0;
for(int i=0;i<koef;i++){
long double p=1, n=0;
n=strtof(start,&end);
start=end;
p=pow(x,(koef-i)-1);
num+=p*n;
} //Вираховуэ всьо
num=round(num*100)/100;
printf("Vysledok je: %.2Lf\n", num);
return EXIT_SUCCESS;
}