Элементы каждой строки прямоугольной матрицы заменить их дополнениями до максимального элемента же строки - C (СИ)
Формулировка задачи:
Не сочтите за сложность помочь с такой задачей.
Элементы каждой строки прямоугольной матрицы заменить их дополнениями до максимального элемента этой же строки. Определить, насколько при этом изменится общая сумма элементов матрицы.
Исходник есть, но прога работает неправильно.
Помогите, пожалуйста!!!
Добавлено через 33 секунды
Добавлено через 59 секунд
Нужна рабочая прога именно на СИ!!!!
Помогите, это срочно!!!!
#include <conio.h> #include <stdio.h> #include <stdlib.h> #include <math.h> const char PressKey[26]="Нажмите клавишу ВВОД"; int x[10][10]; int i,j; int xlmax; int n,m; char Reply; char IndPrinter; float MS_start,MS_end; FILE *F; //------ FILE пишется большими буквами //---------------------------------------------- void WaitEnter() { while (getch()!=13); } //----------------------------------------------- void PrintMatrix (int x[10][10], int n, int m) { int i,j=0; //clrscr(); for(i=0;i<n;i++) { for(j=0;j<m;j++) //---------------- здесь точка с запятой должна быть printf("%8d\n", x[i][j]); //-------------- x маленькая должна быть } printf("\n"); //--------------- точку с запятой пропустил } //----------------------------------------------- float GetMatrixSum (int x[10][10], int n, int m) { int i,j=0; float r=0; for(i=0;i<n;i++) for(j=0;j<m;j++) r=r+x[i][j];//--------------- тоже x маленькая //GetMatrixSum=r; //------- нету такой записи в C. return r; //------- а вот такая есть } //------------------------------------------------ void main() { if(((F=fopen("4x.dat","rt")))==NULL) { printf("Yshodniy fail ne naiden\n Dlya vihoda v Dos nazhmite " "lyubuyu klavishu\n"); getch(); exit(0); } clrscr(); /* IndPrinter=0; printf("Budet li ispolsovan printer (yes,no)?"); //-------- с кавычками перемудрил Reply=getch(); // ------ пропустил точку с запятой if((Reply=='Y')||(Reply=='y')||(Reply=='N')||(Reply=='n')) IndPrinter=1; */ MS_start=GetMatrixSum(x,n,m); printf("n=%i,m=%i,Summa vseh elementov=%f,X=",n,m,MS_start); PrintMatrix(x,n,m); for(i=0;i<n;n++) { xlmax=x[i][1]; for(j=2;j<m;m++)//------ в форах везже должны быть точки с запятой if (x[i][j] > xlmax) xlmax=x[i][j]; for(j=0;j<m;m++)//------ в форах везже должны быть точки с запятой x[i][j]=xlmax-x[i][j]; } MS_end=GetMatrixSum(x,n,m); printf("n=%i,m=%i,Summa vseh elementov=%f,X=",n,m,MS_end); PrintMatrix(x,n,m); printf("Izmenenie summy elementov matrizy =%f",MS_end-MS_start); }
Решение задачи: «Элементы каждой строки прямоугольной матрицы заменить их дополнениями до максимального элемента же строки»
textual
Листинг программы
FILE *fin(NULL); fin=fopen("matr.txt","r"); //открываем текстовый файл для чтения int n,m; //размер массива n на m fscanf(fin,"%d%d",&n,&m); //считываем два числа размерности int **mas=new int*[n]; int i; for(i=0;i<n;i++) mas[i]=new int[m]; //считываем данные из файла for(i=0;i<n;i++) for(int j=0;j<m;j++) fscanf(fin,"%d",&mas[i][j]);
Объяснение кода листинга программы
Выше представлен код на языке C, который выполняет следующие действия:
- Открывает файл
matr.txt
для чтения с помощью функции fopen(). - Считывает размеры матрицы (n и m) с помощью функции fscanf().
- Выделяет память под матрицу с помощью оператора new.
- Считывает данные из файла в матрицу с помощью цикла for и функции fscanf(). Обратите внимание, что код не содержит операций по дополнению элементов до максимального значения в строке. В условии задачи было указано, что нужно заменить элементы каждой строки их дополнениями до максимального элемента же строки. В представленном коде этого не реализовано.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д