Язык Си в примерах/Задача «Расчёт сопротивления схемы»: различия между версиями

Содержимое удалено Содержимое добавлено
мНет описания правки
Нет описания правки
Строка 28:
Вход#3 Выход#3
(3 0 1) 4
 
 
 
#include <stdio.h>
 
int read_S(double*);
int read_A(double*);
int read_B(double*);
 
int read_space() {
int c ;
do { c = getchar(); } while ( c==' ' || c=='\n' || c=='\t' );
}
 
int read_number(double *r) {
return ( scanf("%lf", r) == 1 );
}
 
int read_A(double *r) {
int c;
if( (c=getchar()) == '(') {
double q;
*r = 0;
if( ! read_S(r) ) return 0;
while( read_S(&q) ) {
*r += q;
}
if( (c=getchar()) == ')') {
return 1;
} else {
return 0;
}
} else {
ungetc(c, stdin);
return 0;
}
}
 
int read_B(double *r) {
int c;
if( (c=getchar()) == '[' ) {
double q;
*r = 0;
if( ! read_S(r) ) return 0;
*r = 1 / *r;
while( read_S(&q) ) {
if(q != 0) *r += 1 / q;
}
*r = 1 / *r;
if( (c=getchar()) == ']' ) {
return 1;
} else {
return 0;
}
} else {
ungetc(c, stdin);
return 0;
}
}
 
int read_S(double *r) {
return read_A(r) || read_B(r) || read_number(r);
}
 
 
int main() {
double r;
read_S(&r);
printf("%lf\n", r);
return 0;
}