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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2015, 10:59   #1
SweetyGirl
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 8
По умолчанию Проверка на правильность

Рассмотрим таблицу, содержащую N строк и M столбцов, в каждой клетке которой расположен ноль и единица. Назовем такую таблицу правильной, если в ней нет ни одного квадрата 2 на 2, заполненного целиком нулями или целиком единицами
1 столбец 1010 1110 0101 2 столбец 001 001 111
Так например, таблица 3 на 4, расположенная слева, является правильно, а справа таблица 3 на 3 - не является .
В заданной таблице выяснить, является ли она правильной. (Yes/No)
Паскаль!!!
SweetyGirl вне форума Ответить с цитированием
Старый 11.04.2015, 16:07   #2
Aleksander550
Форумчанин
 
Регистрация: 07.01.2014
Сообщений: 124
По умолчанию

может кто-нибудь переведёт на паскаль:
Код:
#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>

using namespace std;

int main(){
	int n, m;
	bool **array, ok = true;
//не рекомендуется вводить n > 1000
	cout << "Input N: "; cin >> n;	
//не рекомендуется вводить m > 15
	cout << "Input M: "; cin >> m;
	//выделение памяти
	array = new bool* [n];
	for (int i = 0; i < n; i++)
		array[i] = new bool [m];
	//генерация массива
	srand(time(NULL));
	for (int i = 0; i < n; i++){
		for (int j = 0; j < m; j++){
			array[i][j] = rand() % 2;
		}
	}
	//свистелки-перделки
	cout << "\n     ";
	for (int i = 0; i < m; i++)
		cout << setw(5) << i;
	cout << "\n     ";
	for (int i = 0; i < m; i++)
		cout << "_____";
	cout << "_\n" << setw(5) << '|';
	cout << endl;
	//вывод массива
	for (int i = 0; i < n; i++){
		cout << setw(3) << i << setw(2) << '|';
		for (int j = 0; j < m; j++){
			cout << setw(5) << array[i][j];
		}
		cout << '\n' << setw(5) << '|' << endl;
	}
	//основное задание
	for (int i = 0; i < n - 1; i++){
		for (int j = 0; j < m - 1; j++){
			if ((array[i][j] == array[i][j+1]) &&
				(array[i][j] == array[i+1][j]) &&
				(array[i][j] == array[i+1][j+1])){
					printf("\n%d\t[%d][%d],[%d][%d],[%d][%d],[%d][%d]\n",
								array[i][j], i, j, i, j+1, i+1, j, i+1, j+1);
					ok = false;
			}
		}
	}
	if (ok)
		cout << "\n\n\tYes\n";
	 else
	 	cout << "\n\n\tNo\n";
	//освобожление памяти
	for(int i = 0; i < n; i++)
		delete [ ] array[i];
	delete [ ] array;
	getch();
	return 0;
}
#define TRUE FALSE //счастливой отладки
Aleksander550 вне форума Ответить с цитированием
Старый 11.04.2015, 16:13   #3
SweetyGirl
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 8
По умолчанию

преподаватель сказал буквально 1 действие) походу лучше все таки с коньяком приходить
SweetyGirl вне форума Ответить с цитированием
Старый 11.04.2015, 16:30   #4
Aleksander550
Форумчанин
 
Регистрация: 07.01.2014
Сообщений: 124
По умолчанию

я совсем забыл паскаль
Код:
const
	n = 5;
	m = 5;
var
	arr:[0..n][0..m] array of integer;// можно boolean
	ok : boolean;
begin
ok = true;
//тут как-то сгенерировать\ввести элементы массива 
.....
//вот оно - основное действие
for i := 0 to n - 1 do
	begin
	for j := 0 to m - 1 do
		begin
		if ( (arr[i][j] = arr[i][j+1]) and
				(arr[i][j] = arr[i+1][j]) and
				(arr[i][j] = arr[i+1][j+1]) )
					ok = false;//препод наверно про это говорил
		end;
	end;
//вывести что получилось
.....
end.
#define TRUE FALSE //счастливой отладки

Последний раз редактировалось Aleksander550; 11.04.2015 в 16:33.
Aleksander550 вне форума Ответить с цитированием
Старый 11.04.2015, 17:51   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Паскаль, говоришь? Тряхнуть стариной?
Код:
const
  RowCount = 7;  { число строк }
  ColCount = 10; { и столбцов }

type
  TMatrix = array[0..RowCount - 1, 0..ColCount - 1] of Boolean;
  
function CheckMatrix(const X: TMatrix): Boolean;
var
  Row, Col: Integer;
  Condition: Boolean;
begin
  Condition:= False;
  
  for Row:= 0 to RowCount - 2 do
    begin
      for Col:= 0 to ColCount - 2 do
        begin
          { просмотреть фрагмент 2х2, если сумма его элементов равна 0 или 4,
            значит он состоит из нулей или единиц. }
          Condition:= (Byte(X[Row, Col])     + Byte(X[Row, Col + 1]) +
                       Byte(X[Row + 1, Col]) + Byte(X[Row + 1, Col + 1])) in [0, 4];

          if Condition
            then Break;
        end;
        
      if Condition
        then Break;
    end;
    
  CheckMatrix:= not Condition; { функция вернёт true, если матрица Х - "правильная" }
end;
Ахтунг! Аттеншн! Внимание! Увага!!! SHIT-CODE detected!!! Не отлаживал, писал на заборе!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 12.04.2015, 07:12   #6
SweetyGirl
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 8
По умолчанию

здорово конечно, только паскаль турбо и нет функции брейк
SweetyGirl вне форума Ответить с цитированием
Старый 12.04.2015, 10:54   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Какая у Вас версия Турбо? В 7-ой Break есть, в 5,6 - нет
Poma][a вне форума Ответить с цитированием
Старый 12.04.2015, 11:01   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код от min@y™ подправить чуть и ни каких брейков. Ну и чуть медленней
Код:
  Condition:= False;
  
  for Row:= 0 to RowCount - 2 do
    begin
      for Col:= 0 to ColCount - 2 do
        begin
          { просмотреть фрагмент 2х2, если сумма его элементов равна 0 или 4,
            значит он состоит из нулей или единиц. }
          Condition:= Condition or ((Byte(X[Row, Col])     + Byte(X[Row, Col + 1]) +
                       Byte(X[Row + 1, Col]) + Byte(X[Row + 1, Col + 1])) in [0, 4]);

        end;
        
    end;
    
  CheckMatrix:= not Condition; { функция вернёт true, если матрица Х - "правильная" }
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.04.2015, 11:25   #9
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

чем вам break не нравится?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 12.04.2015, 11:30   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

То не мне, то у ТС в паскале нет брейка
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка на правильность Mr_M Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 09.04.2014 23:17
Проверка на правильность ввода значения archiolidius Общие вопросы C/C++ 1 14.02.2012 22:39
Проверка на правильность ввода данних у Edit1 dm.bodya Помощь студентам 0 05.04.2011 18:04
Проверка на правильность ввода в Edit Claster Помощь студентам 1 05.04.2011 13:27
Проверка строки на правильность данных haros Microsoft Office Excel 10 28.02.2009 16:39