Форум программистов, компьютерный форум CyberForum.ru

Найти минимальный элемент среди лежащих выше главной диагонали - C++

Восстановить пароль Регистрация
 
trasheR
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 12
09.12.2012, 21:13     Найти минимальный элемент среди лежащих выше главной диагонали #1
В двухмерном целочисленном массиве (размеры массива N, M и значения его элементов вводить с клавиатуры) найти минимальный элемент среди лежащих выше главной диагонали.
Массив в памяти разместить динамически (с использованием операций new и delete), ввод исходных данных и вывод полученных результатов выполнить в основной функции, а решение задачи оформить в виде отдельной функции пользователя. Не использовать глобальных переменных.


Вот пример выполнения задания из методички:
В целочисленном двухмерном динамическом массиве (матрице) размером NМ найти сумму четных элементов и их количество. Ввод исходных данных (размеры массива и его элементы) и вывод результатов выполнить в основной функции. Решение поставленной задачи оформить в фунции пользователя.
Текст программы может иметь следующий вид:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream.h>
#include <conio.h>
 
int Fun_Sum_Kol(int, int, int**, int*);     // Описание прототипа функции
 
void main()
{
        int **a, i, j, n, m, sum, kol;
cout << "\t Input N, M : ";
cin >> n >> m;
a = new int*[n];                    // Захват памяти под указатели
for(i=0; i<n;i++)
                a[i] = new int[m];      // Захват памяти под элементы
cout <<"\n Input A" << endl;
for(i=0; i<n; i++)
                for(j=0; j<m; j++){
                        cout << "\t a[" << i+1 << "][" << j+1 << "] = ";
                        cin >> a[i][j];
                }
cout <<"\n Matrix A:" << endl;
for(i=0; i<n; i++) {
                for(j=0; j<m; j++)
                        cout << "\t" << a[i][j];
                cout << endl;
}
 
// Обращение к функции с указанием фактических аргументов
sum = Fun_Sum_Kol(n, m, a, &kol);       
cout << "\n Kol-vo = " << kol << "\t Summa = " << sum << endl;
        delete []a;                         // Освобождение памяти          
cout << "\n\t Delete !" << endl;
cout << " Press any key ... " << endl;
getch();
}
 
/* Реализация описанной выше функции, в заголовке которой указаны формальные параметры, идентификаторы которых обрабатываются в ее коде */
int Fun_Sum_Kol(int a, int b, int **x, int *k)
{
int i, j, s = 0;
*k = 0;
for(i=0; i<a;i++)
         for(j=0; j<b;j++)
                  if(x[i][j] % 2 ==0){
                                (*k)++;          // Скобки обязательны
                                s += x[i][j];
                  }
return s;
}
При вводе значений элементов массивов в одной строке через пробелы должен получиться следующий результат:
http://cs307300.userapi.com/v3073003...QY-7VmxznU.jpg

Помимо этого нашел также выполнение своего задания, только размер массива и числа не задаются, а берутся рандомно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <iomanip>
#include <ctime>
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int row,column;
std::cout << "Введите кол-во строк в массиве: ";
std::cin >> row;
std::cout << "Введите кол-во столбцов в массиве: ";
std::cin >> column;
    int **MAS = new int *[row]; // выделяем память динамически.
    for (int i = 0; i < row; i++)
    MAS[i] = new int [column];
srand(time(NULL));
std::cout << "Первоначальный массив: " << std::endl;
    for (int i=0; i<row; i++) // заполняем массив случайными числами,
    {                           // и выводим на экран.
        for (int j=0; j<column; j++)
        {
            MAS[i][j]=rand() % 20;
            std::cout << std::setw(3) << MAS[i][j];
        }
        std::cout << std::endl;
    }
 
    int min=MAS[0][1]; // присваиваем значение одной из ячеек, выше главной диагонали.
    for (int i=0; i<row; i++) // ищем наименьший элемент.
        for (int j=0; j<column; j++)
            if ((j>i) && (MAS[i][j]<min)) min=MAS[i][j];
 
std::cout << "Наименьший элемент, лежащий выше главной диагонали: " << min;
std::cout << std::endl;
    for (int i = 0; i < row; i++)
    delete []MAS[i];
    delete []MAS;
    system("pause");
    return 0;
}
Может это можно как то преобразовать чтобы размер и числа вводились мной.
Помогите вобщем кто может, буду весьма признателен

Добавлено через 3 часа 58 минут
ребята, ай нид хэлп)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2012, 21:13     Найти минимальный элемент среди лежащих выше главной диагонали
Посмотрите здесь:

C++ Найти минимальный среди элементов, лежащих выше главной диагонали
Найти максимальный элемент среди лежащих ниже главной диагонали C++
Вывести на экран значения тех эле-ментов, лежащих выше главной диагонали, которые больше всех элементов, лежащих ниже главной диагонали C++
Двумерный массив. Найти минимальный элемент в, среди элементов, лежащих выше главной диагонали C++
Найти max среди элементов, лежащих ниже побочной, и min среди элементов, лежащих выше главной диагонали C++
Найти минимальный среди элементов, лежащих ниже главной диагонали C++
Найти максимальный элемент матрицы среди расположенных выше главной диагонали C++
C++ Найти сумму элементов матрицы, лежащих выше главной диагонали

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 22:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru