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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2015, 20:50   #11
Chainik!
Форумчанин
 
Регистрация: 10.11.2008
Сообщений: 120
По умолчанию

А если будет 1 1 1 ?
помог - жми на весы

Последний раз редактировалось Chainik!; 06.01.2015 в 21:33.
Chainik! вне форума Ответить с цитированием
Старый 06.01.2015, 21:15   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
тоже последние столбцы и строки не будут обрабатываться
Верное замечание:
Код:
 c+=(j!=m && a[i][j]==a[i][j+1]) + (i!=n && a[i][j]==a[i+1][j]);
Проверяй
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.01.2015, 21:42   #13
Aleksander550
Форумчанин
 
Регистрация: 07.01.2014
Сообщений: 124
По умолчанию

Цитата:
Верное замечание:
Код:


c+=(j!=m && a[i][j]==a[i][j+1]) + (i!=n && a[i][j]==a[i+1][j]);

Проверяй
Какой вы используете цикл?
Код:
 for (int i = 0; i < m ; i++) {
	 for (int j = 0; j < n ; j++) {
 c+=(j!=m && a[i][j]==a[i][j+1]) + (i!=n && a[i][j]==a[i+1][j]);
         }
 }
здесь i!=m всегда даст true, потому что условие цикла i < m.
Пример:
Код:
n = 10;
m = 10;
a[10][10];
..........
 for (int i = 0; i < 10 ; i++) {
	 for (int j = 0; j < 10 ; j++) {
//допустим i = 9 и j = 9
 c+=(9!=10 && a[9][9]==a[9][9+1]) + (9!=10 && a[9][9]==a[9+1][9]);
          }
 }
..........
выход за пределы массива.
#define TRUE FALSE //счастливой отладки
Aleksander550 вне форума Ответить с цитированием
Старый 06.01.2015, 21:59   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
for (int i = 0; i < m ; i++) {
for (int j = 0; j < n ; j++) {
А чего ты m и n местами поменял? У тебя вроде матрица NxM а не наоборот?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.01.2015, 22:18   #15
Aleksander550
Форумчанин
 
Регистрация: 07.01.2014
Сообщений: 124
По умолчанию

Цитата:
Цитата:
for (int i = 0; i < m ; i++) {
for (int j = 0; j < n ; j++) {
А чего ты m и n местами поменял? У тебя вроде матрица NxM а не наоборот?
У вас я подчеркнул места где можно выйти за пределы массива.
Я это к тому, что искать сравнивать элементы массива нужно в 3 этапа
1)сравнивать элементы массива справа и снизу от выбранного A[I][J] от I=0 J=0 пока I<N-1 и J<N-2;
2)сравниваем элементы массива в последней строке;
3)сравниваем элементы массива в последнем столбце.

У меня где - то ошибка(код будет работать при N=M). Когда найду, покажу полностью рабочий код.
#define TRUE FALSE //счастливой отладки
Aleksander550 вне форума Ответить с цитированием
Старый 06.01.2015, 22:50   #16
Aleksander550
Форумчанин
 
Регистрация: 07.01.2014
Сообщений: 124
По умолчанию

Код:
#include <iostream.h>
#include <iomanip.h>

const int n = 5; //высота
const int m = 3; //ширина
int array[n][m];

void randarray();//генерируем массив
//----------------
int main(){
int total = 0;//колличество одинаковых чисел
 randarray();
////1)проверка правого и нижнего элемента
 for (int i = 0; i < n - 1 ; i++) {
	 for (int j = 0; j < m - 1 ; j++) {
		if (array[i][j] == array[i][j+1])
			total++;
		if (array[i][j] == array[i+1][j])
			total++;
		}
	 }
 //2)проверка последнего столбца
 for (int i = 0; i < n -1; i++) {
		if (array[i][m - 1] == array[i + 1][m - 1])
			total++;
	}
//3)проверка последней строчки
 for (int j = 0; j < m -1; j++) {
		if (array[n - 1][j] == array[n - 1][j + 1])
			total++;
	 }
//печатать массив
 for (int i = 0; i < n; i++) {
	 for (int j = 0; j < m; j++) {
		 cout << setw(3) << array[i][j];
	 }
	 cout << '\n';
 }
 cout << "\n\ntotal = " << total << endl;
system("pause");
return 0;
}
//----------------
void randarray(){
srand(time(NULL));
 for (int i = 0; i < n; i++)
	 for (int j = 0; j < m; j++)
		 array[i][j] = rand() % 10;
}
#define TRUE FALSE //счастливой отладки
Aleksander550 вне форума Ответить с цитированием
Старый 07.01.2015, 01:38   #17
vladden123
Пользователь
 
Регистрация: 05.01.2015
Сообщений: 11
По умолчанию

Спасибо!
Кстати, а являются ли,например, [0][0] и [1][1] соседями?
vladden123 вне форума Ответить с цитированием
Старый 07.01.2015, 08:25   #18
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Цитата:
Сообщение от vladden123 Посмотреть сообщение
Спасибо!
Кстати, а являются ли,например, [0][0] и [1][1] соседями?
Верное замечание.
Smogg вне форума Ответить с цитированием
Старый 07.01.2015, 10:37   #19
Aleksander550
Форумчанин
 
Регистрация: 07.01.2014
Сообщений: 124
По умолчанию

Цитата:
Спасибо!
Кстати, а являются ли,например, [0][0] и [1][1] соседями?
Вот так являются:
Код:
////сравнение запада, юга, югозапада, северезапада
 for (int i = 0; i < n - 1 ; i++) {
	 for (int j = 0; j < m - 1 ; j++) {
		if (array[i][j] == array[i][j+1])
			total++;
		if (array[i][j] == array[i+1][j])
			total++;
		if (array[i][j] == array[i+1][j+1])
			total++;
		if ( (i != 0) && (array[i][j] == array[i-1][j+1]) )
			total++;
		}
	 }
 //проверка последнего столбца
 for (int i = 0; i < n -1; i++) {
		if (array[i][m - 1] == array[i + 1][m - 1])
			total++;
	}
//проверка последней строчки
 for (int j = 0; j < m -1; j++) {
		if (array[n - 1][j] == array[n - 1][j + 1])
			total++;
		if ( ((n - 1) != 0) && (array[n - 1][j] == array[n-2][j+1]) )
			total++;
	 }
#define TRUE FALSE //счастливой отладки
Aleksander550 вне форума Ответить с цитированием
Старый 07.01.2015, 20:31   #20
vladden123
Пользователь
 
Регистрация: 05.01.2015
Сообщений: 11
По умолчанию

Спасибо! Еще один вопрос : у меня есть указатель на данный двумерный массив *pa=a. Как, используя указатель, сравнивать пары элементов массива? С одномерным массивом всё понятно : там просто последовательность чисел, а как быть с двумерным массивом?
vladden123 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан целочисленный массив размера N. Найти максимальное количество его одинаковых элементов. nadyaH Помощь студентам 10 20.03.2014 10:15
код из Паскаля в Delphi (Дан целочисленный массив A. Переписать в новый массив В элементы с порядковыми номерами, кратными трём ALEXandr20333 Помощь студентам 8 27.02.2014 11:27
Дан целочисленный массив размера N. Определить максимальное количество его одинаковых элементов. cheburashkaRF PHP 10 03.02.2014 12:35
Дано предложение. Определить, сколько в нем одинаковых соседних букв. mimit Помощь студентам 9 07.12.2012 20:36
Дан целочисленный массив размера N, содержащий ровно два одинаковых элемента. Найти номера одинаковых элементов и вывести эти номе Alexar Makken Паскаль, Turbo Pascal, PascalABC.NET 1 23.12.2011 22:07