давно
Старший Модератор
17042
808
10.12.2009, 07:16
общий
это ответ
Здравствуйте, Cetra!
Код задачи - в приложении. Вариант 1 - объявление матрицы без использования указателей, вариант 2 - с использованием указателей. Комментарии в коде. Программа компилировалась в компиляторе g++ 4.1.
Приложение:
// Вариант 1.
#include <iostream>
using namespace std;
//------------------------------------------------------------
int main()
{
int iRows, iColumns;
cout << "Введите число строк в матрице: ";
cin >> iRows;
cout << "Введите число столбцов в матрице: ";
cin >> iColumns;
if((iRows <= 2) || (iColumns <= 2))
{
cout << "Число элементов массива не должно быть меньше 5!" << endl;
return 1;
}
int iMatrix[iRows][iColumns];
cout << "Начинайте ввод элементов в матрицу: " << endl;
for(int i = 0; i < iRows; i++)
{
cout << "Строка " << i << "." << endl;
for(int j = 0; j < iColumns; j++)
{
cout << "[" << i << "][" << j << "]: ";
// Ввод значения в элемент матрицы iMatrix[i][j].
cin >> iMatrix[i][j];
}
}
cout << "Введите индексы 5 элементов для суммирования." << endl;
int iSum = 0; // Сумма элементов. Пока не считали.
int iX, iY; // Индексы указываемых пользователем элементов массива.
for(int i = 0; i < 5; i++)
{
cout << "Элемент №" << i << "." << endl;
cout << "Строка: ";
cin >> iX;
if(iX >= iRows)
{
cout << "Ошибка! Такой строки нет!" << endl;
return 1;
}
cout << "Столбец: ";
cin >> iY;
if(iY >= iColumns)
{
cout << "Ошибка! Такого столбца нет!" << endl;
return 1;
}
iSum += iMatrix[iX][iY];
}
cout << "Сумма значений указанных элементов массива равна " << iSum << "." << endl;
return 0;
}
// Вариант 2.
#include <iostream>
using namespace std;
//------------------------------------------------------------
int main()
{
int iRows, iColumns;
cout << "Введите число строк в матрице: ";
cin >> iRows;
cout << "Введите число столбцов в матрице: ";
cin >> iColumns;
if((iRows <= 2) || (iColumns <= 2))
{
cout << "Число элементов массива не должно быть меньше 5!" << endl;
return 1;
}
int** piMatrix; // Матрица в виде двойного указателя
// Создан массив из iRows элементов, каждый из которых - указатель на int.
piMatrix = new int* [iRows];
cout << "Начинайте ввод элементов в матрицу: " << endl;
for(int i = 0; i < iRows; i++)
{
cout << "Строка " << i << "." << endl;
// Определяется массив из iRows указателей, каждый из которых
// адресует массив из iColumns целых чисел - элементов матрицы.
piMatrix[i] = new int[iColumns];
for(int j = 0; j < iColumns; j++)
{
cout << "[" << i << "][" << j << "]: ";
// Ввод значения в элемент матрицы piMatrix[i][j] обычным способом.
cin >> piMatrix[i][j];
}
}
cout << "Введите индексы 5 элементов для суммирования." << endl;
int iSum = 0; // Сумма элементов. Пока не считали.
int iX, iY; // Индексы указываемых пользователем элементов массива.
for(int i = 0; i < 5; i++)
{
cout << "Элемент №" << i << "." << endl;
cout << "Строка: ";
cin >> iX;
if(iX >= iRows)
{
cout << "Ошибка! Такой строки нет!" << endl;
return 1;
}
cout << "Столбец: ";
cin >> iY;
if(iY >= iColumns)
{
cout << "Ошибка! Такого столбца нет!" << endl;
return 1;
}
iSum += piMatrix[iX][iY];
}
cout << "Сумма значений указанных элементов массива равна " << iSum << "." << endl;
// Не забываем освобождать память,
// выделенную для для каждого из элементов матрицы.
for(int i = 0; i < iRows; i++) delete[] piMatrix[i];
// Не забываем освобождать память, выделенную для для самой матрицы.
delete[] piMatrix;
return 0;
}