Помогите найти ошибкув коде! - C (СИ)
Формулировка задачи:
#include <stdio.h>
#include <conio.h>
#include <math.h>
double A(double i, double j)
{
double a;
i++;
j++;
if(i>j) a=acos((i+j)/(2*i+3*j));
else if(i<j) a=cos(i+j);
else a=1.0;
return 1.0/a;
}
void FillMatr (double **, int );
void PrintMatr (double **, int );
void FillMatr (double **Ar, int n)
{
int i, j;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
Ar[i][j]=A(i,j);
}
}
//////////////////////////////////////////////////////////////////////////////
void PrintMatr (double **Ar, int n)
{
int i, j;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
printf("%-8.3lf ", Ar[i][j]);
}
printf(" \n");
}
}
int main (void)
{
unsigned N;
double **Ar; // äâóìåðГ*ûé Г¬Г*Г±Г±ГЁГў
double B[15]; // Г¬Г*Г±Г±ГЁГў Г± ñóììГ*ìè ñòðîê
do // ââîä N
{
printf("\n\tProgram makes array N*N (0<N<=15).\nEnter N:");
scanf("%u", &N);
}while(N>15);
FillMatr(Ar,N);
PrintMatr(Ar,N);
// Ïîäñ÷åò ñóìì ñòðîê
for(int i=0; i<N; i++)
{
B[i]=0.0;
for(int j=0; j<N; j++) B[i]+= (Ar[i][j]);
}
// Г‡Г*ïðîñ ГЁ âûâîä Г*ГіГ¦Г*îé ñòðîêè
int K=0;
printf("\t\nPleas enter number of string, K: \n");
scanf("%d", &K);
printf("%7.2lf", B[K-1]);
printf("\nPress any key to exit...");
getch();
}Решение задачи: «Помогите найти ошибкув коде!»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <math.h>
double A(double i, double j)
{
double a = 1.0;
i++;
j++;
if(i>j)
a=acos((i+j)/(2*i+3*j));
else
a=cos(i+j);
return 1.0/a;
}
void FillMatr (double Ar[][15], int n)
{
int i, j;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
Ar[i][j]=A(i,j);
}
}
void PrintMatr (double Ar[][15], int n)
{
int i, j;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
printf("%-8.3lf ", Ar[i][j]);
}
printf(" \n");
}
}
int main (void)
{
unsigned N;
double Ar[15][15]; // äâóìåðГ*ûé Г¬Г*Г±Г±ГЁГў
double B[15]; // Г¬Г*Г±Г±ГЁГў Г± ñóììГ*ìè ñòðîê
do // ââîä N
{
printf("\n\tProgram makes array N*N (0<N<=15).\nEnter N:");
scanf("%u", &N);
}while(N>15);
FillMatr(Ar,N);
PrintMatr(Ar,N);
// Ïîäñ÷åò ñóìì ñòðîê
for(int i=0; i<N; i++)
{
B[i]=0.0;
for(int j=0; j<N; j++) B[i]+= (Ar[i][j]);
}
// Г‡Г*ïðîñ ГЁ âûâîä Г*ГіГ¦Г*îé ñòðîêè
int K=0;
printf("\t\nPleas enter number of string, K: \n");
scanf("%d", &K);
printf("%7.2lf", B[K-1]);
printf("\nPress any key to exit...");
getch();
return 0;
}
Объяснение кода листинга программы
- Функция
FillMatrзаполняет матрицуArзначениями, возвращаемыми функциейA(i,j), гдеiиjявляются индексами элементов матрицы. - Функция
PrintMatrвыводит содержимое матрицыArна экран. - В функции
mainиспользуется циклdo-while, чтобы пользователь мог ввести допустимое значение размера матрицыN. - После заполнения и печати матрицы
Ar, значения элементов матрицыBсуммируются, чтобы получить среднее значение. - Затем пользователю предлагается ввести количество строк для вывода среднего значения.
- В конце программы пользователю предлагается нажать любую клавишу для выхода из программы.