Решения (задачи 240-252)
Задача 247.
// Рекурсивная функция "Факториал" #include "stdio.h" #include "conio.h" unsigned int factor(unsigned int k) { if (k == 1). return(1); else return(k*factor(k-1)); void main( unsigned int n; // число, факториал которого надо вычислить unsigned int f; // факториал числа п puts("Вычисление факториалаХп"); puts("Введите число, факториал которого надо вычислить"); printf(" › "); scanf("%u", &n); f = factor(n); printf("Факториал числа %u равен %u", n, f); printf("Хп Для завершения нажмите Enter"); getch();
Задача 248.
// Рекурсивный узор из окружностей #include <graphics.h> #include <stdio.h> #include <conio.h> #include <dos.h> #define PATHTODRIVER "c: WborlandcWbgiW" // элемент узора void elem(int x, int у, int r, int p) 11 у., у, г – координаты и радиус центра // основного элемента узора // р – порядок узора if (P) circle(x, у, г); delay(100); elem(x+r, у, r/2, р-1); elem(x, y-r, r/2, р-1); elem(x-r, у, r/2, р-1); +r, г/2, р-1); void main(void) { int gdriver = DETECT; // драйвер int gmode; // режим int errorcode; // код ошибки initgraph(&gdriver, &gmode, PATHTODRIVER); errorcode = graphresult(); if (errorcode = grOk) { elem(320, 240, 60, 5); // рисуем узор 5-го порядка outtext("Для завершения нажмите Enter"); getch(); closegraph(); // выход из графического режима else printf("Ошибка: %d\n", errorcode); puts("Для завершения нажмите Enter"); getch();
Задача 249.
// Вычисляет сопротивление // n-звенной электрической цепи #include <stdio.h> #include <conio.h> float rl(r2,r3; // величины сопротивлений, из которых состоит цепь // вычисляет сопротивление цепи n-го порядка float rсер(int n) { float r; // сопротивление цепи п if (n – 1) return(rl + r2 + гЗ); else { г = rcep(n-l); return (rl + r2*r/(r2+r) + r3); void main () { int refloat re; // количество звеньев (порядок) цепи // сопротивление цепи puts("Хп Вычисление сопротивления электрической цепи"); puts("Введите величины сопротивлений (Ом):"); printf("r1 › "); scanf("%f", &rl); printf("r2 › "); scanf("%f", &r2); printf("r3 › "); scanf("If", &r3); printf("Порядок цепи › "); scanf("%i", &n); re = rcep(n); // величины сопротивлений передаются // функции гсер через глобальные переменные printf("Сопротивление цепи:"); if (re > 100) { гс /= 1000; printf("%5.2f кОм\п", гс); else printf("%5.2f Ом\п", re); рииз("\п Для завершения нажмите Enter"); getch();