Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: Recklessly   (17.06.2014 в 21:51)
Задание такое:
Дана целочисленная прямоугольная матрица. Определить:
1.количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент
2.номера строки и столбцов всех седловых точек матрицы.
Примечание. Матрица A имеет седловую точку Aij, если Aij является минимальным элементом в i-й строке и максимальным в j-м столбце.
Код ужасный и абсолютно не работоспособный
(

#include <iostream>
#include <time.h>
#include <iomanip>
using namespace std;
 
int count(int **a, const int n, const int m);
int sed(int **a, const int n, const int m);
 
int main()
{
    setlocale(LC_ALL, "rus");
    srand(time(0));
    const int n = 6, m = 5;
    int **a = new int*[n];
    for (int i = 0; i < n; i++)
        a[i] = new int[n];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            a[i][j] = rand() % 20 - 10;
            cout << setw(5) << "Массив: " << a[i][j] << endl;
        }
        cout << endl;
    }
    if (!cin.fail()){
        cout << "Количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент: " << count(**a, n, m) << endl;
        cout << "Номера строки и столбцов седловых точек матрицы: " << sed(**a, n, m);
    }
    else
        cout << "Ошибка ввода!" << endl;
    system("pause");
    return 0;
}
 
int count(int **a, const int n, const int m)
{
    int s = 0;
    for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
        {
        if (a[i][j] == 0)
        {
            for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
            {
                if (a[i][j] < 0)
                    s++;
            }
        }
    }
    return s;
}
 
int sed(int **a, const int n, const int m)
{
    int s;
    int min = 0;
    int max = 0;
    for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
    {
        if (a[i][j] < min)
        {
            min = a[i][j];
            for (int j = 0; j < n; j++)
            for (int i = 0; i < m; i++)
            {
                if (a[j][i] > max)
                {
                    max = a[j][i];
                    if (min = max)
                        s = min;
                }
            }
        }
    }
    return s;
}

Помогите пожалуйста!!!


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: