IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Многомерные массивы, помощь очень нужна
сообщение
Сообщение #1


Пионер в программировании
**

Группа: Пользователи
Сообщений: 66
Пол: Мужской

Репутация: -  0  +


1. Определите двумерный массив размером 4*4 из целых чисел в тексте программы. Вычислите минимальное значение в каждой строке, сумму элементов массива в каждом столбце. Найдите сумму и произведение элементов главной и побочной диагонали.
2. Решите предыдущую задачу, вводя матрицу значений с консоли.
3. Написать программу, которая вводит целое число n и выделяет память для массива из n данных типа: char, int, double. Перед завершением работы программы память освободить.
4. Улучшить программу решения систем линейных уравнений (листинг 4.3) и снять ограничения на максимальный размер системы. Этого можно добиться, если не описывать явно размер массивов double a[10][11],x[10], а выделить память динамически оператором new
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Пионер в программировании
**

Группа: Пользователи
Сообщений: 66
Пол: Мужской

Репутация: -  0  +


 #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;
}

к 4 задачи
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.10.2021 23:31
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name