Консультация № 175001
07.12.2009, 21:16
0.00 руб.
0 3 1
Добрый вечер уважаемые эксперты помогите написать программу. Нужно ввести двумерный массив и найти сумму 5 указанных пользователем элементов. Так же эту программу нужно переделать а) для указателей, б) на динамическое распределение памяти, в) запись в файл. Заранее благодарен.

Обсуждение

давно
Старший Модератор
17042
808
10.12.2009, 07:01
общий
Cetra:
Запись в файл чего? Введённой матрицы?
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
давно
Старший Модератор
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;
}
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
Неизвестный
13.12.2009, 18:54
общий
Dr_Andrew:
нужно записать в файл полученный результат. а как можно переделать программу с помощью printf u scanf?
Форма ответа