1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
1. Определите двумерный массив размером 4*4 из целых чисел в тексте программы. Вычислите минимальное значение в каждой строке, сумму элементов массива в каждом столбце. Найдите сумму и произведение элементов главной и побочной диагонали. 2. Решите предыдущую задачу, вводя матрицу значений с консоли. 3. Написать программу, которая вводит целое число n и выделяет память для массива из n данных типа: char, int, double. Перед завершением работы программы память освободить. 4. Улучшить программу решения систем линейных уравнений (листинг 4.3) и снять ограничения на максимальный размер системы. Этого можно добиться, если не описывать явно размер массивов double a[10][11],x[10], а выделить память динамически оператором new
#include <iostream.h> #include <string.h> #include <math.h> int main() { char *p,str[256]; int i, j, k, n; double a[10][11],x[10],q,z; cout << "The decision of systems of the linear equations\n" << "Enter factors of system on lines\n"; // Ввод первой строки и определение размерности системы cin.getline(str,256); //Ввод первой строки p = strtok(str," \t,;");//Выделение первой лексемы i = 0; do { a[0][i++] = atof(p); p = strtok(NULL," \t,;");//Выделение следующей лексемы } while (p); n = --i; // Размерность системы // ввод остальных строк for (k = 1; k < n; k++) { cin.getline(str,80); //Ввод следующей строки p = strtok(str," \t,;"); i = 0; do { a[k][i++] = atof(p); p = strtok(NULL," \t,;"); } while (p); } // прямой ход метода Гаусса for (i = 0; i < n - 1; i++) { // выбор главного элемента ////Для начала этот блок можно опусить//// z = fabs(a[i][i]); for (j = i,k = i + 1;k < n;k++) if ((q = fabs(a[k][i])) > z) z = q, j = k; if (j != i){ for (k = i;k <= n;k++) // обмен строк z = a[i][k], a[i][k] = a[j][k], a[j][k] = z; } //////////////////////////////////////////////////////////// for (j = i + 1;j < n;j++) { q = a[i][i]; if (fabs(q) < 1e-300) { cout << "The system is incompatible\n"; return 1; } z = a[j][i]/q; for (k = i + 1;k <= n;k++) a[j][k] -= a[i][k]*z; } } k = n - 1; if (fabs(q = a[k][k]) < 1e-300) { cout << "The system is incompatible\n"; return 1; } // обратный ход метода Гаусса x[k] = a[k][n]/q; for (i = k-1; i >= 0;i--) { z = 0.0; for (j = k; j > i; j--) z += a[i][j]*x[j]; x[i] = (a[i][n] - z)/a[i][i]; } cout << "\nThe decision of system of the equations:\n"; for(i = 0;i<n;i++) cout << "x(" << i + 1 << ")=" << x[i] << endl; return 0; }