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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2016, 20:04   #1
ggjgj
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 83
По умолчанию Все столбцы, содержащие минимальный элемент, заменить столбцом 𝑋 - C++

Все столбцы, содержащие минимальный элемент, заменить столбцом 𝑋.(двумерный массив).Помогите составить программу, или хотя бы подскажите похожие задания с решениями.
ggjgj вне форума Ответить с цитированием
Старый 07.11.2016, 18:05   #2
ggjgj
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 83
По умолчанию

Ну напишите хоть что-то ,чтобы начать )
ggjgj вне форума Ответить с цитированием
Старый 07.11.2016, 19:18   #3
ggjgj
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 83
По умолчанию

Правильно ли это? Компилятор выдает ошибку со скобкой , не могу понять где именно.
Код:
#include <iostream>
using namespace std;

int ** creat(int &n, int&m)
{cout << "n = "; cin >> n;
	cout << "m = "; cin >> m;
	

	int **mas = new int*[n];    
	for (int i = 0; i < n; ++i) 
		mas[i] = new int[m];    

	for (int i = 0; i < n; ++i)                             
		for (int j = 0; j < m; ++j) {                       
			cout << "mas[" << i << "][" << j << "] = ";    
			cin >> mas[i][j];                               
			
			return mas;
		}
	{
	 cout << "n = "; cin >> n;
		cout << "m = "; cin >> m;
		int **a = creat(n, m);
		int min = mas[0][0];
		int *x = new int[n];
		for (int j = 0; j < m; ++j) cin >> x[j];
		for (int i = 0; i < n; i++)      
			for (int j = 0; j < m; j++)              
				if (mas[i][j] < min) min = mas[i][j];

		for (int i = 0; i < n; i++)            
			for (int j = 0; j < m; j++)         
				a[i][j] = x[j];
				

		for (int i = 0; i < n; i++) {       
			for (int j = 0; j < m; j++)     
				cout << "mas[" << i << "][" << j << "] = " << mas[i][j];
			cout << endl;
		
		system("pause");
		return 0;
	
}
ggjgj вне форума Ответить с цитированием
Старый 07.11.2016, 19:27   #4
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Для начала, нарисуй решение в "paint". Возьми какиее- нибудь простенькие массивы... и покажи как ты понимаешь решение...
ura_111 вне форума Ответить с цитированием
Старый 07.11.2016, 19:39   #5
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

У тебя не объявлен метод main.
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 07.11.2016, 21:28   #6
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Всё вроде.

1_.jpg

2_.jpg



Единственно, когда пишется программа не удобно каждый раз вводить элементы массивов (вот так ошибка - и снова вводи), поэтому я сделал автоматическое заполнение массивов (случайными числами). Но, переделать под ввод с клавиатуры не составит труда...


p.s.: хорошенько протестируй программу, писал не себе - писал тяп-ляп. Если чё - пиши.

Последний раз редактировалось ura_111; 07.11.2016 в 21:54.
ura_111 вне форума Ответить с цитированием
Старый 08.11.2016, 00:22   #7
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

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

int **create_mas(int n, int m)
{
	//создание массива
	int **a = new int *[n];     //выделение памяти под массив 
	for (int i = 0; i < n; i++)
	{
		a[i] = new int[m];
	}
	for (int i = 0; i < n; i++) //заполняем массив 
	{
		for (int j = 0; j < m; j++)
		{
			a[i][j] = rand() % 10;
		}
	}
	return a;
}
int *create_vector(int n)
{
	//создаём вектор "Х"
	int *x = new int[n];
	for (int i = 0; i < n; i++)
	{
		//cin >> x[j];
		x[i] = rand() % 10;
	}
	return x;
}
void print_mas(int **a, int n, int m) //вывод массива на экран 
{
	cout << endl << "Masiv mas:" << endl;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			cout << " " << a[i][j];
		}
		cout << endl;
	}
}

void print_vector(int *x, int n)
{
	//создаём вектор "Х"
	cout << endl << "Stolbeez X:" << endl;
	for (int i = 0; i < n; i++)
	{
		cout << " " << x[i] << endl;
	}
}
int minimum(int **a, int n, int m)
{
	//находим мин. элеимент
	int min;
	min = a[0][0];
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			if (a[i][j] < min)
			{
				min = a[i][j];
			}
		}
	}
	return min;
}
bool zamena(int **a, int *x, int n, int m, int min)
{
	int t = 0;
	while (t < m)
	{
		for (int i = 0; i < n; i++)
		{
			if (min == a[i][t])
			{
				cout << endl << "Bull preobrasovan: " << t + 1 << " stolbez";
				for (int j = 0; j < n; j++)
				{
					a[j][t] = x[j];
				}
				break;
			}
		}
		t++;
	}
	cout << endl;
	return false;
}

int main()
{
	int n, m, min;
	cout << "n= "; cin >> n;
	cout << "m= "; cin >> m;

	//создаём матрицу "mas"
	int **mas = create_mas(n, m);
	//создаём вектор
	int *x = create_vector(n);
	//вывод на экран матрицу "mas"
	print_mas(mas, n, m);
	//вывод на экран вектор
	print_vector(x, n);
	//нахождение минимума
	min = minimum(mas, n, m);
	//вывод на экран минимума
	cout << endl << "min: " << min << endl;
	//теперь ищем столбцы с мин. элементом и их элементы заменяем на элементы Х[]	
	zamena(mas, x, n, m, min);
	//вывод на экран матрицу "mas"
	print_mas(mas, n, m);

	cout << endl;
	system("pause");
	return 0;
}




Я сделал автоматическое заполнение массивов (случайными числами). Но, переделать под ввод с клавиатуры не составит труда...

p.s.: хорошенько протестируй программу, писал не себе - писал тяп-ляп. Если чё - пиши.

Последний раз редактировалось ura_111; 08.11.2016 в 00:28.
ura_111 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить минимальный элемент массива(вернусь ссылку на него ), заменить этой суммой минимальный элемент mari_ly Общие вопросы C/C++ 1 30.03.2016 16:31
дана матрица, заменить 1 столбец столбцом с минимальной суммой элементов, последний столбец заменить столбцом Anonim41 Паскаль, Turbo Pascal, PascalABC.NET 0 24.06.2014 21:11
Вставить нулевую строку и нулевой столбец перед строкой и столбцом где находится первый минимальный элемент Proskurina Помощь студентам 1 03.03.2013 19:24
Все элементы выше главной диагонали квадратной матрицы, заменить на минимальный элемент (VisualBasic) ride013 Помощь студентам 4 03.05.2011 20:40
заменить любой минимальный элемент максимальным и сменить знак максимального элемента противоположным Рітка-кулеметчиця Паскаль, Turbo Pascal, PascalABC.NET 2 26.01.2009 17:45