Помогите найти ошибкув коде! - 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
суммируются, чтобы получить среднее значение. - Затем пользователю предлагается ввести количество строк для вывода среднего значения.
- В конце программы пользователю предлагается нажать любую клавишу для выхода из программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д