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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2010, 19:09   #1
v1le
Пользователь
 
Регистрация: 25.10.2010
Сообщений: 13
Восклицание C++. Интересная задача на минимумы.

Задача:
Поменять местами минимальные элементы массива A(57) и матрицы B(7x5).

Как я понимаю, надо найти индексы минимального значения в массиве и в матрице. Потом зная индексы нужно поменять их местами.
Проблема в том, чот это нужно сделать в функциях, и я не понимаю, как вернуть два значения, из функции где находятся индексы минимального значения в матрице, ведь там нужно знать индекс столбца и строки, а как вернуть два значения, я понять не могу.
Помогите пожалуйста.
v1le вне форума Ответить с цитированием
Старый 26.12.2010, 20:29   #2
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

Код:
#include "stdafx.h"
#include <iostream>

using namespace std;

void userMin(int **a,int i,int j,int*min1,int *min2){
	for (int q=0;q<i;q++){
		for (int w=0;w<j;w++){
			if (a[*min1][*min2]>a[q][w]){
				*min1=q;
				*min2=w;
			}
		}
	}
}

void vivod(int **a,int x,int y){
	for (int i=0;i<x;i++){
		for (int j=0;j<y;j++){
			cout.width(3);
			cout<<a[i][j];
		}
		cout<<endl;
	}
	cout<<endl;
}

void znachenia(int **a,int x,int y){
	for (int i=0;i<x;i++){
		for (int j=0;j<y;j++)
			a[i][j]=rand()%100;
	}	
}

int main(){
	
	int*a=new int[57];
	
	int **b=new int*[7];
	for (int i=0;i<7;i++)
		b[i]=new int[5];
	int i,j,mina1;
	int minb1=0,minb2=0;

	for (i=0;i<57;i++)
		a[i]=rand()%100;
	
	znachenia(b,7,5);

	userMin(b,7,5,&minb1,&minb2);//функция находит минимумы в матрицe b
	//minb1 - индекс минимлаьного элемента по строкам minb2 - по столбцам

	mina1=0;
	for (i=1;i<57;i++){
		if (a[i]<a[mina1])
			mina1=i;
	}
	int c=a[mina1];
	a[mina1]=b[minb1][minb2];
	b[minb1][minb2]=c;

	vivod(b,7,5);
	for (i=0;i<57;i++){
		cout.width(3);
		cout<<a[i];
	}
	system("pause");
}
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery

Последний раз редактировалось kaljan775; 26.12.2010 в 20:40.
kaljan775 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
интересная задача Irisha_17_85 Помощь студентам 2 26.10.2009 19:52
Интересная задача terminadoor Помощь студентам 1 06.02.2009 20:00
Интересная задача! - DannerDOS.kz Паскаль, Turbo Pascal, PascalABC.NET 2 16.12.2008 14:04
Интересная задача Ser Паскаль, Turbo Pascal, PascalABC.NET 3 27.02.2008 00:19