Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2010, 12:42   #1
Dafreak1992
Новичок
Джуниор
 
Регистрация: 18.02.2010
Сообщений: 1
Смущение Комментарии к программе "Расчёт сопротивления схемы"

Я нашел в интернете интересную программу, как я понял она может рассчитать сопротивление любой схемы. Вот ее описание: пользователь вводит вид схемы и сопротивления, параллельное соединение записывается в квадратных скобках, последовательное в круглых. Вот пример: http://ru.wikibooks.org/wiki/%D0%A4%...:PS-sample.png
Если не трудно, подпишите комментарии к каждой строке. Программа написана на языке Си. Входные данные - Строчка с описанием схемы.
Значения сопротивлений — действительные числа из отрезка [0, 100000]. Размер входа не превосходит 200000 байт.
Выход. Значение сопротивления схемы (с точностью до 0.1%) Пример: Вход#1
[2 2 2]
Выход#1 0.6666667

Вот сама программа:

#include <stdio.h>
int read_S(double*);
int read_A(double*);
int read_B(double*);
void read_space() {
int c ;
do { c = getchar(); } while ( c==' ' || c=='\n' || c=='\t' );
if( c != EOF ) ungetc(c, stdin);
}
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;
}
Dafreak1992 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. Каравай Microsoft Office Excel 13 17.02.2010 09:53
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Как написать "примочку" к программе стороннего производителя (TeamViewer)??? >>arty<< Помощь студентам 4 07.08.2009 14:32
Выводит ошибку "Unclarified identifier", хотя недавно запускалась в другой программе Alex Cones Общие вопросы Delphi 2 20.04.2009 21:31