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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2008, 18:15   #1
raccooni
 
Регистрация: 25.11.2008
Сообщений: 9
По умолчанию Помогите кто может (Массивы 2-х мерные)

Проблема в следующем:
Необходимо следующее по условию дан массив 5х5 целочисл. Необходимо подсчитать количество строк содержащих каждое число (1,2,3,4,5) по одному разу. По возможности напишите как можно более подробное описания.


Спасибо всем !!!
raccooni вне форума Ответить с цитированием
Старый 25.11.2008, 19:19   #2
theos
Форумчанин
 
Аватар для theos
 
Регистрация: 10.12.2007
Сообщений: 158
По умолчанию

Эм... А что конкретно не получается? Что Вы уже сделали?
theos вне форума Ответить с цитированием
Старый 25.11.2008, 19:30   #3
K1ller
 
Регистрация: 25.11.2008
Сообщений: 4
По умолчанию

Напишите тестовый пример, плиз.
K1ller вне форума Ответить с цитированием
Старый 25.11.2008, 19:34   #4
theos
Форумчанин
 
Аватар для theos
 
Регистрация: 10.12.2007
Сообщений: 158
По умолчанию

То есть Вам для решения Вашей задачи лень даже попробовать написать что-то, почитать умную книжку и попытаться что-то понять? Вам нужен готовый текст?

Программа ведь предельно простая. Такие пишут в 7м классе школы.
theos вне форума Ответить с цитированием
Старый 25.11.2008, 19:43   #5
raccooni
 
Регистрация: 25.11.2008
Сообщений: 9
По умолчанию

да нет я не знаю как оптимизировать анализ проверки строки.
Потому что написать отдельно для каждой цифры можно но вот для всего сразу как не знаю. Вот это я и имел в виду.
raccooni вне форума Ответить с цитированием
Старый 25.11.2008, 19:50   #6
ivan89
Пользователь
 
Аватар для ivan89
 
Регистрация: 22.09.2008
Сообщений: 59
По умолчанию

Необходимо следующее по условию дан массив 5х5 целочисл. Необходимо подсчитать количество строк содержащих каждое число (1,2,3,4,5) по одному разу
Код:
#include <iostream>
#include <conio.h>
int main()
{
	using namespace std;
	int a[5][5],j;
	int t1,k=0,t=0,t2=0;

	for(int i=0; i<5; i++)
	 for(j=0; j<5; j++)
	   cin>>a[i][j];

	 for(i=0; i<5; i++)
	 {
		for(t1=1; t1<=5; t1++)
		{
		  for(j=0; j<5; j++)
		   if(a[i][j]==t1)
		    k++;
		   
		   if(k==1)
		   :d  t++;
		   k=0;
		}
		if(t==5)
		 t2++;
		t=0;
	 }
	 cout<<"kolihevo:="<< t2 <<endl;
	 getch();
	 return 0;
}

Последний раз редактировалось ivan89; 26.11.2008 в 13:26.
ivan89 вне форума Ответить с цитированием
Старый 25.11.2008, 19:51   #7
theos
Форумчанин
 
Аватар для theos
 
Регистрация: 10.12.2007
Сообщений: 158
По умолчанию

Для каждой строки проход сделайте таким:

Сначала проверьте, есть ли 0 в строке. Если есть - всё, условие не выполнено.

Если нет нулей. Пройдите циклом от 1 до 5 и замените первую 1, 2, ... 5 встратившуюся в строке на 0.

В конце, если условие выполнено, строка будет нулевая.

Мне кажется это проще всего. Можно, конечно, тупо флаги ставить. Правда при этом мы изменяем в процессе сам массив - это большой минус, если это критично.

В принципе могу код быстренько набросать.
theos вне форума Ответить с цитированием
Старый 25.11.2008, 20:00   #8
raccooni
 
Регистрация: 25.11.2008
Сообщений: 9
По умолчанию

Цитата:
Сообщение от theos Посмотреть сообщение
Для каждой строки проход сделайте таким:

Сначала проверьте, есть ли 0 в строке. Если есть - всё, условие не выполнено.

Если нет нулей. Пройдите циклом от 1 до 5 и замените первую 1, 2, ... 5 встратившуюся в строке на 0.

В конце, если условие выполнено, строка будет нулевая.

Мне кажется это проще всего. Можно, конечно, тупо флаги ставить. Правда при этом мы изменяем в процессе сам массив - это большой минус, если это критично.

В принципе могу код быстренько набросать.
Это было бы не плохо
raccooni вне форума Ответить с цитированием
Старый 25.11.2008, 20:02   #9
theos
Форумчанин
 
Аватар для theos
 
Регистрация: 10.12.2007
Сообщений: 158
По умолчанию

Код:
#include <stdio.h>



int main()
{
	int m[5][5]; // не будем морочиться с динам. выделением
	int i,j,k;
	int res = 0;


	// читаем массив с клавиатуры
	for(i = 0;i < 5;i++)
	for(j = 0;j < 5;j++)
	{
		printf("Enter (int) element %d, %d: ",j+1,i+1);
		scanf("%d", &m[i][j]);
	}

	for(i = 0;i < 5;i++)
	{
		for(j = 0;j < 5;j++) if(m[i][j] == 0) break;
		if(m[i][j] == 0) continue; // если нашли хоть один 0 - условие неверно

		for(k = 1;k <= 5;k++) // число, которое ищем
		{
			for(j = 0;j < 5;j++)
			{
				if(m[i][j] == k)
				{
					m[i][j] = 0; // первое в строке совпадение заменим на 0
					break;
				}
			}
		}

		for(j = 0;j < 5;j++) if(m[i][j] != 0) break;


		if(m[i][4] != 0) continue;
		// если в строке остались только 0 - всё верно
		res += 1;
	}	

	printf("\nResult: %d\n", res);
	
	return 0;
}
theos вне форума Ответить с цитированием
Старый 25.11.2008, 20:08   #10
raccooni
 
Регистрация: 25.11.2008
Сообщений: 9
По умолчанию

if(m[i][4] != 0) continue;
// если в строке остались только 0 - всё верно
res += 1;

Скажите а что означает 4 в теле условия
raccooni вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2 программы,Visual C++,массивы-матрицы.Помогите пожалуйста ,кто может VirtuNomad Помощь студентам 1 04.06.2008 00:01
помогите кто может Тарон Паскаль, Turbo Pascal, PascalABC.NET 4 04.03.2008 08:41
Помогите кто может!!! Shatyn Помощь студентам 1 21.06.2007 20:29
помогите в QBasic'е 2-мерные массивы Sergmodern Помощь студентам 1 05.06.2007 08:39