Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
korsika
Сообщений: n/a
#1

Заменить все элементы массива с максимальным значением на сумму цифр минимального элемента - C++

24.01.2009, 20:01. Просмотров 1119. Ответов 3
Метки нет (Все метки)

Дан целочисленный массив А[N][М]. Заменить все элементы массива с максимальным значением на сумму цифр минимального элемента.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2009, 20:01     Заменить все элементы массива с максимальным значением на сумму цифр минимального элемента
Посмотрите здесь:

Заменить все элементы массива с максимальным значением на сумму цифр минимального элемента C++
C++ Заменить все элементы массива большие чем "a" значением максимального элемента этого массива
Одномерный массив. Заменить все элементы с отрицательным значением на значение минимального не равного 0 положительного элемента. C++
C++ Функции обработки массива (определить произведение элементов массива, заменить модулем все элементы массива, уничтожить элемент с заданным значением)
C++ Задачка на массив. Заменить все его элементы с отрицательным значением на значение минимального положительного элемента
Одномерный массив. Найти наименьший элемент, все нулевые элементы заменить значением этого элемента C++
C++ Заменить все минимальные элементы вектора максимальным значением его элементов
C++ Заменить все отрицательные элементы массива на значение минимального элемента
Заменить все элементы массива с отрицательным значением на значение минимального положительного элемента C++
Заменить все элементы главной диагонали заданной матрицы значением первого элемента C++
Заменить все положительные элементы массива максимальным C++
Все элементы массива, стоящие после минимального, заменить нулями C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Янус
0 / 0 / 0
Регистрация: 25.01.2009
Сообщений: 5
25.01.2009, 21:08     Заменить все элементы массива с максимальным значением на сумму цифр минимального элемента #2
Т.е массив содержит элементы больше 10 ?

Добавлено через 3 часа 37 минут 15 секунд
В общем решение этой проблемы мне видится так :
Код
#include "stdafx.h"
#include <iostream>
using namespace std;

#define ELEMENT(p,i,j,n,m) ((p)[i+n*j])
#define ELEMENTE(p,i,j,n) ((p)[i+n*j])
class matrix {
	int size1;//stroki
	int size2;//stolbci
	int *p;
	int mem_size;
public:
	matrix(int n,int m);
	matrix(int n);
	~matrix();
	int get(int i,int j);
	void put(int i,int j,int a);
	int max(matrix &a);
	int min(matrix &a);
	void zamena(matrix &a,int c,int d);
	//int get_size1();
	friend ostream & operator << (ostream &,const matrix &);
	friend istream & operator >> (istream &, const matrix &);
};
matrix::matrix(int n, int m)
{
	mem_size=m*n;
	p=new int [mem_size];
	if(p==NULL)
	{
		cout<<"No massiv";
		exit(1);
	}
	memset(p,0,mem_size*sizeof(int));
	size1=n;
	size2=m;
}
matrix::~matrix()
{
	delete [] p;
}
int  matrix::get(int i, int j)
{
	return ELEMENT(p,i,j,size1,size2);
}
void matrix::put(int i,int j,int a)
{
	ELEMENT(p,i,j,size1,size2)=a;
}
int matrix::max(matrix &a)
{
	int max=a.get(0,0);
	for (int i=0;i<a.size1;i++)
	{
		for(int j=0;j<a.size2;j++)
			if (a.get(i,j)>max)
			{
				max=a.get(i,j);
			}
	}
	return max;
}
int matrix::min(matrix &a)
{
	int min=a.get(0,0);
	for (int i=0;i<a.size1;i++)
	{
		for(int j=0;j<a.size2;j++)
			if (a.get(i,j)<min)
			{
				min=a.get(i,j);
			}
	}
	int min1=min/10;
	int min2=min%10;
	int minr=min1+min2;

	return minr;
	
}
void matrix::zamena(matrix &a,int c, int d)
{

     for (int i=0;i<a.size1;i++)
	{
		for(int j=0;j<a.size2;j++)
			if (a.get(i,j)==c)
			{
				a.put(i,j,d);
			}
	}
}




ostream & operator << (ostream & output,const matrix&a)
{
	for(int i=0;i<a.size1;i++)
	{
		output<<"Line"<<(i+1)<<":";
		for(int j=0;j<a.size2;j++)
			output << "\t" << ELEMENT(a.p,i,j,a.size1,a.size2);
		output<<endl;
	}
	return output;
}
istream & operator >> (istream & in,const matrix&a)
{
	for(int i=0;i<a.size1;i++)
	{
		for(int j=0;j<a.size2;j++)
		{
			cout <<"Element" << (i+1) << " " << (j+1) << ":";
			in >> ELEMENT(a.p,i,j,a.size1,a.size2);
		}
	}
	return in;
}

void main()
{
	int n,m,c,d;
    cout<<"Vvedite razmernost massiva: ";
	cout<<"Vvedite kolichestvo strok N ";
	cin>>n;
	cout<<"Vvedite kolichestvo stolbcov M ";
	cin>>m;
    matrix m1(n,m);
	cin >> m1;
	cout<<"\n";
	cout << m1;
	c=m1.max(m1);	
	d=m1.min(m1);
	cout << c <<endl;
	cout << d <<endl;
	m1.zamena(m1,c,d);
	cout<<m1;

}
Это вариант когда элементы массива больше либо равны 10 но меньше 100. Прога рабочая, если кто даст совет или замечания по коду буду рад.
plemiash
0 / 0 / 0
Регистрация: 13.01.2009
Сообщений: 17
25.01.2009, 21:44     Заменить все элементы массива с максимальным значением на сумму цифр минимального элемента #3
мне кажется ....в уловии чего то не хватает
xToTa
13 / 13 / 0
Регистрация: 26.01.2009
Сообщений: 162
26.01.2009, 14:15     Заменить все элементы массива с максимальным значением на сумму цифр минимального элемента #4
Я конечно извиняюсь, но этот вариант решения - чистая порнография
Можно почесать правое ухо левой рукой, но чтобы руку тянуть между ног, в гипсе, в подвешенном состоянии, держась правой ногой и левой почесывая спину - это жестоко...
Все гениальное просто...
2 for`а - пройтись по всей матрице найти минимальный элемент...
после этого 2 for`а - найти максимальный...
найти сумму цифр минимального элемента и снова 2 for`а с заменой максимального на найденную сумму....

И будет вам счастье
Yandex
Объявления
26.01.2009, 14:15     Заменить все элементы массива с максимальным значением на сумму цифр минимального элемента
Ответ Создать тему
Опции темы

Текущее время: 08:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru