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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2011, 15:07   #1
3dg_fan
Пользователь
 
Аватар для 3dg_fan
 
Регистрация: 25.12.2010
Сообщений: 38
По умолчанию Матрица С++

опять матрицы)
подскажите как сделать так, чтобы ответ не повторялся
задание: дано число х , n и массив a[n][n], нужно проверить встречается ли число х в каждом столбце массива, есдли да, то вывести "да", если нет то "нет"
пример:
1 //число х
2 //n
0 1
0 0
ответ: нет да
Код:
#include <iostream>
using namespace std;

	int main()

	{
		int x;
		cin>>x;
		int n;
		cin>>n;
		int a[n][n];
		
		for (int i=0; i<n; i++)
		for (int j=0; j<n; j++) 
		cin>>a[i][j];
  
		for (int i=0; i<n; i++) 
      		for (int j=0; j<n; j++)  
		{
 
		 if(x==a[j][i]) 
                cout<<"YES"; 
                else { cout<<"NO";  }
  
		}   
	  
	   
	}
у меня получается несколько ответов нет нет да нет, что и понятно, потому что проверяется каждый элемент столбца, что делать? кажется в паскале можно поставить break, а в с++ здесь не получится.. можно поставить счетчик и проверить его если он больше или равен 1 то ответ "да", если он равен нулю то "нет", но тогда ответ выходит только один..
заранее спасибо)
3dg_fan вне форума Ответить с цитированием
Старый 27.02.2011, 15:12   #2
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

это очень просто при помощи флага -
int flag = 0;

если встретилось в столбце число
flag++;

в конце программы сравниваем
если количество столбцов == flag, то
выводим ответ L"aaaaeeeeee\n"


_)))
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 27.02.2011, 15:23   #3
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Только flag это в хороших местах булёво или элемент перечисления, а тут надо называть это как-то типа some_counter.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 27.02.2011, 15:41   #4
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Цитата:
flag это в хороших местах булёво
я сам определяю, где хорошие места, а так вы правы, count для стандарта имя такой переменной
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 27.02.2011, 15:45   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А не проще ли написать так:
Код:
		 if(x==a[j][i]) { cout<<"YES"; cin.get(); return 0;}
                else { cout<<"NO";  }
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.02.2011, 16:54   #6
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Код:
		int x;
		cin>>x;
		const int n=3;
		int count=0;
		int a[n][n];
		
		for (int i=0; i<n; i++)
		for (int j=0; j<n; j++) 
		cin>>a[i][j];
  
		int j;
		for ( j=0; j<n; j++) 
      		for (i=0; i<n; i++)  
				if (x==a[i][j]) {
					count++;
					break;
				}

		if (count==n) cout << "YES\n";
		else cout << "NO\n";
так по-моему работает
onewho вне форума Ответить с цитированием
Старый 27.02.2011, 17:02   #7
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

кстати никто не заметил подвоха, автор пишет не a[i][j], а a[j][i] )) хотя возможно это супер задумка автора! //del пост плз.

Последний раз редактировалось onewho; 27.02.2011 в 17:07.
onewho вне форума Ответить с цитированием
Старый 27.02.2011, 17:07   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

break; вытолкнет только из внутреннего цикла, значит шансы что еще раз условие сработает всетки есть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.02.2011, 17:34   #9
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

внешний цикл по столбцам, внутренний по строкам если встретили нужный элемент переходим к следующему столбцу, вроде всё норм
onewho вне форума Ответить с цитированием
Старый 27.02.2011, 19:08   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хотя да, ты прав... автору нужно именно проверка в каждом столбце...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица С++ Soull Помощь студентам 3 14.11.2010 21:51
Непонятки с DirectX (матрица поворота, камера, матрица проекции) ROD Общие вопросы C/C++ 2 17.09.2010 17:00
TurboPascal: граф, матрица смежности и матрица инцидентности. ulala Помощь студентам 0 02.12.2009 10:11
Матрица на Си dron-k Помощь студентам 3 28.07.2009 10:13