Помогите с двумерным массивом

Створити двовимірний масив розміром n*m.
1. Обчислити середнє арифметичне всіх непарних елементів з непарними індексами.
2. Знайти в кожному рядку масиву максимальний і мінімальний елементи і поміняти їх з першим і останнім елементом відповідно.

вот мой код

#include <iostream>
    using namespace std;

    void main()
    {
        setlocale(LC_ALL,"Russian");
        int i,j=0,str,stb;
        cout << "Введите количество строк массива: ";
        cin >> str;
        cout << "Введите количество стлбцов массива: ";
        cin >> stb;
        float **A=new float *[str];
        for (i=0;i<str;i++)
            A[i]=new float[stb];
        cout << endl;
        for (i=0;i<str;i++)
            for (j=0;j<stb;j++)
            {
                cout << "Введите значение " << j+1 << "-го" << " элемента " << i+1 << "-й строки: ";
                cin >> A[i][j];
            }
        float s=0.0,pr=0;
        for (i=0;i<str;i++)
            if (A[i][i]<0)
            {
                for (j=0;j<stb;j++)
                    s+=A[i][j];
                pr=1;
            }
        cout << endl << "Исходный массив:" << endl << endl;
        for (i=0;i<str;i++)
        {
            for (j=0;j<stb;j++)
                cout << A[i][j] << "; ";
            cout << endl;
        }
        if (pr==0)
            cout << endl << "Отрицательных элементов на главной диагонали нет!" << endl << endl;
        else
            cout << endl << "Сумма элементов с отрицательным элементом на главной диагонали равна " << s << "." << endl << endl;
        delete [] A;
        system("pause");
    }

дима, по мнению гугл-переводчика задание выглядит так:

Создать двумерный массив размером n * m.
1. Вычислить среднее арифметическое всех нечетных элементов с нечетными индексами.
2. Найти в каждой строке массива максимальный и минимальный элементы и поменять их с первым и последним элементом соответственно.

Вопрос первый: кто не знает украинского гуглотолмач или ты?

Вопрос второй: зачем ты сюда запостил чужой код под видом своего?

Программа не соответствует заданию.

Массив удаляется некорректно.

это мой код, я смог сделать только это но я не знаю как написать именно по заданию

Как можно написать код и совершенно не понимать смысла написанного?? Рекомендую разобраться в собственном (или всё-таки не собственном?) коде.

Несколько подсказок:

(1) Удали куски кода, которые не относятся к данному заданию.

(2) Нечётность числа n можно проверить по остатку от деления на 2: if (n % 2 == 1) { ... }.

(3) Для получения среднего арифметического, в данном случае, надо вычислить сумму элементов массива, удовлетворяющих условию, и подсчитать количество таких элементов. Делается это в двойном цикле по строкам и столбцам массива с проверкой соответствующих условий. Далее — понятно: разделить сумму на количество элементов.

(4) Нахождение минимального и максимального элемента описано в этой статье.

(5) Обмен двух значений в массиве делается с помощью ещё одной вспомогательной переменной того же типа.

(6) Сделай таки корректное удаление массива. (Посмотри как ты создаёшь двумерный массив.)

Как вариант :)

    #include <iostream>
    #include <ctime>        // time()
    #include <iomanip>
    #include <cstdlib>      // srand(), rand()

    int main()
    {
        using namespace std;

        setlocale(LC_ALL, "Russian");

        int str, colmn;
        cout << "Введите количество строк массива: ";
        cin >> str;
        cout << "Введите количество столбцов массива: ";
        cin >> colmn;

    // создание динамического двумерного массива
        int** matrix = new int*[str];
        for (int i = 0; i < str; ++i)
            matrix[i] = new int[colmn];

    // инициализация матрицы случайными числами
        srand(static_cast<int>(time(NULL)));

        for (int i = 0; i < str; ++i){
            for (int j = 0; j < colmn; ++j)
                matrix[i][j] = rand() % 41 - 20;    // от -20 до 20
        }

    // замена первого элемента каждой строки макс. знач. этой строки,
    // а последнего элемента - минимальным
        int sum = 0, max = 0, min = 0;
        for (int i = 0; i < str; ++i){
            for (int j = 0; j < colmn; ++j){
                if (matrix[i][j] > matrix[i][0]){
                    max = matrix[i][j];
                    matrix[i][j] = matrix[i][0];
                    matrix[i][0] = max;
                }
                if (matrix[i][j] < matrix[i][colmn - 1]){
                    min = matrix[i][j];
                    matrix[i][j] = matrix[i][colmn - 1];
                    matrix[i][colmn - 1] = min;
                }
            }
        }
    // отображение матрицы
        cout << endl << endl;
        for (int i = 0; i < str; ++i){
            for (int j = 0; j < colmn; ++j)
                cout << setw(5) << right << matrix[i][j];
            cout << endl;
        }
    // среднеарифметическое
        int count = 0;
        for (int i = 0; i < str; ++i){
            for (int j = 0; j < colmn; ++j){
                if (((j + 1) % 2) && (matrix[i][j] % 2)){ // если ячейка и значение в ней нечетные...
                    sum += matrix[i][j];    // ...считаем сумму...
                    ++count;        // ...и кол-во элементов
                }
            }
        }
        if (count > 0){
            cout.setf(ios_base::fixed, ios_base::floatfield);
            cout.precision(2);
            cout << "\n\nСр.арифметическое\n""нечетных чисел нечетных элементов массива: "
                << static_cast<double>(sum) / count << endl;
        }
        else
            cout << "В нечетных элементах массива нет нечетных чисел.\n";

    // удаление динамического двумерного массива    
        for (int i = 0; i < str; ++i)
            delete [] matrix[i];

        delete [] matrix;

        return 0;
    }

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.