Значения двух функций, равномерно распределенных в диапазоне - C (СИ)
Формулировка задачи:
Задание. Вычислить значения двух функций в n равномерно распределенных в диапазоне а≤x≤b точках. Сформировать результаты таким образом, чтобы значения X, F1 и F2 были представлены двумерным массивом, состоящим из трех строк.
Моя программа:
Программа работает, но на экране мы видим уж очень "извращенную" матрицу. Подскажите, пожалуйста, что не так?
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "RUS");
double x, dx, a = 1, b = 3;
double A[3][12];
int i, j, n;
printf("Введите число точек \n");
scanf_s("%d", &n);
dx = fabs(b - a) / (n - 1);
x = a;
for (j = 0; j < n; j++)
{
A[1][j] = x;
A[2][j] = x*log(x)*log(x);
A[3][j] = sqrt(exp(x) - 1);
x = x + dx;
}
for (j = 0; j < n; j++)
{
printf(" A[%d]=%.2lf\t", A[1][j]);
printf(" A[%d]=%.2lf\t", A[2][j]);
printf(" A[%d]=%.2lf\n", A[3][j]);
}
_getch();
return 0;
}Решение задачи: «Значения двух функций, равномерно распределенных в диапазоне»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale.h>
void print_arr(char *s, double *A, int n)
{
int j;
printf("| %s |", s);
for (j = 0; j < n; j++)
{
printf(" %.2lf |", A[j]);
}
printf("\n");
for (j = 0;j < 7 + n * 9;j++)
putchar('-');
puts("");
}
int main()
{
setlocale(LC_ALL, "RUS");
double x, dx, a = 1, b = 3;
double A[3][12];
int i, j, n;
printf("Введите число точек: ");
scanf_s("%d", &n);
dx = fabs(b - a) / (n - 1);
x = a;
for (j = 0; j < n; j++)
{
A[0][j] = x;
A[1][j] = x*log(x)*log(x);
A[2][j] = sqrt(exp(x) - 1);
x = x + dx;
}
for (j = 0;j < 7 + n * 9;j++)
putchar('-');
puts("");
print_arr("X ", A[0], n);
print_arr("F1", A[1], n);
print_arr("F2", A[2], n);
_getch();
return 0;
}