Табуляция функций с использованием оператора цикла с постусловием do … while - C (СИ)
Формулировка задачи:
Задача: Напишите и отладьте программу для табуляции следующих функций с использованием оператора цикла с постусловием do … while:
Z = -a ex-3a, если 0 < x<= 3, a = 1; 1.5,
Z= -a (1+ln(x-3a)), если 3 < x <= 4, шаг x=a/2.
Вот мое решение:
Программа не работает (На экран выводится только a=1 и значение функции при x=0)
Что-то здесь не так (но вот что? )
#include <stdio.h> #include <math.h> #include <locale.h> #include <conio.h> #define e 2.7182 void main() { setlocale(LC_ALL, "RUS"); float a, x, z; printf("-----------------------------\n"); printf(" a | x | y |\n"); printf("-----------------------------\n"); a = 1; do { printf("%5.2f\n", a); x = 0; { z = -a*exp(x - (3 * a)); printf("%12.2f|%10.2f\n", x, z); x = x + (a / 2); } while (x <= 3); z = (-a)*(1 + log(fabs(x - (3 * a)))); printf("%12.2f|%10.2f\n", x, z); x = x + (a / 2); } while (x <= 4); printf("--------------------------------\n"); a = a + 0.5; while (a <= 1.6) _getch(); }
Решение задачи: «Табуляция функций с использованием оператора цикла с постусловием do … while»
textual
Листинг программы
#include <stdio.h> #include <math.h> #include <locale.h> #include <conio.h> #define e 2.7182 int main() { double a, x, z; setlocale(LC_ALL, "RUS"); a = 1; printf("-------------------------------------------------\n"); printf("|\t\tz= -a*exp(x - (3 * a))\t\t|\n"); do { x = a/2; printf("-------------------------------------------------\n"); printf("|\t a\t|\t x\t|\t y\t|\n"); printf("-------------------------------------------------\n"); do { z = -a*exp(x - (3 * a)); printf("|\t%4.2lf\t|\t%4.2lf\t|\t%4.2lf\t|\n", a, x, z); x = x + (a / 2); } while (x <= 3); a = a + 0.5; } while (a <= 1.5); printf("-------------------------------------------------\n\n"); a = 1; printf("-------------------------------------------------\n"); printf("|\tz= (-a)*(1 + log(fabs(x - (3 * a))))\t|\n"); do { x = 3 + a / 2; printf("-------------------------------------------------\n"); printf("|\t a\t|\t x\t|\t y\t|\n"); printf("-------------------------------------------------\n"); do { z = (-a)*(1 + log(fabs(x - (3 * a)))); printf("|\t%4.2lf\t|\t%4.2lf\t|\t%4.2lf\t|\n", a, x, z); x = x + (a / 2); } while (x <= 4); a = a + 0.5; } while (a <= 1.5); printf("-------------------------------------------------\n"); _getch(); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д