maperke
|
|
1 | |
из матрицы нужно удалить строку с минимальной суммой элементов28.04.2013, 22:52. Показов 744. Ответов 0
Метки нет (Все метки)
Требуется ввести матрицу вещественных чисел размерности N×M из файла input.txt и выполнить с ней следующее преобразование: Найти строку с минимальной суммой элементов и удалить из матрицы эту строку, а строки с последующими номерами последовательно сдвинуть на освободившееся место, при этом последняя освободившаяся строка матрицы заполняется нулями.
Матрица должна быть представлена в памяти как одномерный массив длины NM, в котором по строкам записаны все элементы матрицы. При этом функция обработки должна иметь следующий заголовок void Process (double *matr, int N, int M, ..и другие параметры); Ответом является преобразованная матрица, которую нужно вывести по строкам в файл output.txt (только элементы матрицы без ее размерностей). Во входном файле (input.txt) сначала записаны два целых числа - число строк N и число столбцов M исходной матрицы, а далее по строкам записаны элементы матрицы. При вводе данных программа должна выделить необходимую память для размещения матрицы в соответствии с указанным представлением, а по окончании работы освободить эту память. Для работы нельзя выделять иные массивы, зависящие от размерностей матрицы, а также использовать заранее объявленные статические массивы большого размера. Если при чтении матрицы из файла возникают ошибки ввода-вывода или не удается корректно ввести требуемое количество элементов матрицы, то программа (функция main) должна завершить работу и вернуть значение −1. При корректном завершении работы программа (функция main) должна вернуть значение 0. вот я писал прогу похожую, которая ищет строку с максимальной суммой и вычитает ее из остальных, а какой написать к ней цикл для удаления ее из матрицы что-то не могу: #include <stdio.h> #include <stdlib.h> void process(double *matr, int n, int m) { double max, s; int imax=0; max = matr[0]; imax = 0; for (int i=0;i<n && i<m;i++) { if(matr[i*m+i]>max) {max=matr[i*m+i]; imax=i;} } for (int i=0;i<n;i++) { if (i==imax) continue; for (int j=0;j<m; j++) matr[i*m+j] -= matr[imax*m+j]; } } int main() { FILE *fin=fopen("input.txt","r"); FILE *fout=fopen("output.txt","w"); int n,m; fscanf(fin,"%d%d",&n,&m); double *matr = new double[n*m]; for (int i=0;i<n*m; i++) fscanf(fin,"%lf",&matr[i]); process(matr,n,m); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) fprintf(fout,"%lf ",matr[i*m+j]); fprintf(fout,"\n"); } fclose(fin); fclose(fout); delete [] matr; return 0; } |
28.04.2013, 22:52 | |
Ответы с готовыми решениями:
0
Найти строку матрицы с минимальной суммой элементов, и строку с максимальной Заменить строку матрицы с минимальной суммой элементов на строку, в которой находится максимальный элемент Замените строку матрицы с минимальной суммой элементов на строку где находится максимальный элемент Найти строку матрицы с минимальной суммой элементов |
28.04.2013, 22:52 | |
28.04.2013, 22:52 | |
Помогаю со студенческими работами здесь
1
Найти строку матрицы с минимальной суммой элементов Обнулить строку матрицы с минимальной суммой элементов Найти строку матрицы с минимальной суммой элементов Найти строку с минимальной и максимальной суммой элементов матрицы Т(8, 7) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |