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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2011, 13:32   #1
Satkoeva
Новичок
Джуниор
 
Аватар для Satkoeva
 
Регистрация: 22.10.2011
Сообщений: 1
По умолчанию Дана целочисленная прямоугольная матрицана C+

Дана целочисленная прямоугольная матрица. Определить:
1) кол-во строк, не содержащих ни одного нулевого элемента;
2) max из чисел, встречающихся в заданной матрице более одного раза.
Заранее Спасибо!!!
Satkoeva вне форума Ответить с цитированием
Старый 10.11.2011, 14:20   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

1) Заводим счётчик строк, индекс по строке; по всем строкам пробегаем, если значение ноль - break из цикла; в конце цикла, если индекс показывает, что строку мы прошли до конца, прибавляем один к счётчику.

2) Использовать карту пар ("число", "встретилось ли больше одного раза"), наверное.
Abstraction вне форума Ответить с цитированием
Старый 10.11.2011, 19:09   #3
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Вот, дарю тебе немного отборнейшего плюсокодца :D
Код:
#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
	unsigned m,n, cnt=0;
	cout<<"Enter matrix height and width: ";
	cin>>m>>n;
	vector<int> matrix(m*n);
	cout<<"ok, now enter "<<(m*n)<<" elements: "<<endl;
	generate(matrix.begin(), matrix.end(), []() { return *istream_iterator<int>(cin); });
	for (auto pos=matrix.begin(); pos<matrix.end(); 		cnt+=!count(pos, pos+n, 0), pos+=n);
	sort(matrix.rbegin(), matrix.rend());
	auto i=find_if(matrix.begin(), matrix.end(), [&matrix](int val) { return (count(matrix.begin(), matrix.end(), val)>1);});
	cout<<"count of lines without 0 element: "<<cnt<<endl<<"Maximal repeating element: "<<(i==matrix.end()?0:*i);
}
Для успешной компиляции понадобится visual studio 2010, или gcc 4.5, или кто там еще лямбды уже научился понимать.
Son Of Pain вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана вещественная прямоугольная матрица порядка n´m (n = 8, m = 5) inc Помощь студентам 7 23.05.2011 19:45
дана прямоугольная матрица... Avvakymova Паскаль, Turbo Pascal, PascalABC.NET 2 08.05.2011 12:55
Дана целочисленная прямоугольная матрица. Lollipo Общие вопросы C/C++ 1 12.10.2010 10:52
дана целочисленная прямоугольная матрица Jet-Tea Общие вопросы C/C++ 9 02.06.2010 16:41
Дана целочисленная прямоугольная матрица... gregorio Помощь студентам 1 22.04.2009 20:27