Табуляция функций с использованием оператора цикла с постусловием 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;
}