Табуляция функций с использованием оператора цикла с постусловием 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. Вот мое решение:
#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(); 
}
Программа не работает (На экран выводится только a=1 и значение функции при x=0) Что-то здесь не так (но вот что? )

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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5
Похожие ответы