Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2021, 03:36   #1
Hret
Новичок
Джуниор
 
Регистрация: 01.12.2021
Сообщений: 2
По умолчанию Не могу поменять местами элементы массива

Задача. Заполнить массив nxn случайными числами. Поменять местами максимальные элементы первого и последнего столбца.

Код:
#include <iostream>
using namespace std;

int main() {
	const int n = 3;
	int arr[n][n];
	int i, j, max;
	int *max1, *max2;
	
	setlocale(0, "Russian");

	for (i = 0; i < n; i++) {
		for (j = 0; j < n; j++)
			arr[i][j] = rand() % 10;
	}

	for (i = 0; i < n; i++) {
		cout << "\n";
		for (j = 0; j < n; j++)
			cout << arr[i][j] << " ";
	}
	
	cout << "\n";

	max = 0;
	for (i = 0; i < n; i++) {
		for (j = 0; j < n; j++) {
			if (j == 0 && max < arr[i][j]) {
				max = arr[i][j];
				*max1 = arr[i][j];
			}
			if (j == n - 1 && max < arr[i][j]) {
				max = arr[i][j];
				*max2 = arr[i][j];
			}
		}
	}

	swap(max1, max2);
	
	for (i = 0; i < n; i++) {
		cout << "\n";
		for (j = 0; j < n; j++)
			cout << arr[i][j] << " ";
	}

	return 0;
}
Hret вне форума Ответить с цитированием
Старый 01.12.2021, 04:51   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
#include <iostream>
using namespace std;

int main() {
    srand(time(NULL));

    const int n = 3;
    int arr[n][n];
    int *max1, *max2;
    
    setlocale(0, "Russian");

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++)
            arr[i][j] = rand() % 10;
    }

    for (int i = 0; i < n; i++) {
        cout << endl;
        for (int j = 0; j < n; j++)
            cout << arr[i][j] << " ";
    }
    cout << endl;

    max1 = &arr[0][0];
    max2 = &arr[0][n - 1];
    for (int i = 1; i < n; i++) {
        if (arr[i][0] > *max1)
            max1 = &arr[i][0];
        if (arr[i][n - 1] > *max2)
            max2 = &arr[i][n - 1];
    }

    swap(*max1, *max2);

    for (int i = 0; i < n; i++) {
        cout << endl;
        for (int j = 0; j < n; j++)
            cout << arr[i][j] << " ";
    }

    return 0;
}
Но таким способом обменяется местами только одна пара максимальных элементов. Если их в столбцах больше, то остальные останутся на месте.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 02.12.2021, 01:09   #3
Hret
Новичок
Джуниор
 
Регистрация: 01.12.2021
Сообщений: 2
По умолчанию

BDA, Большое спасибо, мне достаточно одной пары
Hret вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поменять местами i и k-ый элементы массива(C) Breezes Помощь студентам 5 21.10.2018 13:54
поменять элементы массива местами jekos1 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 07.03.2016 19:40
Поменять местами элементы массива CkooTuHa Помощь студентам 1 18.12.2014 17:08
Найти минимальный и максимальный элементы массива Х и поменять их в массиве местами. Элементы массива вычисляются по формуле Xi=(( Милашечка Помощь студентам 0 26.05.2013 13:01