Помогите с программированием

tdn
Offline
Зарегистрирован: 18.10.2012

Добрый день

Программирую действие - нужно проверять наличие сигналов на входе, при их появлении ждать 50 мс и потом проверять другие входа на наличие сигнала, получается вот такая конструкция

if ( digitalRead (OpenDoor) == HIGH ) {
delay (50);
if ( digitalRead (LeftTurnSignal) == HIGH && digitalRead (RightTurnSignal) == HIGH) {
   } 
else {
 
}

 Почему то не могу в этот код поставить второй else, и вообще правильно ли програмирую вложеный if?

memfise
Offline
Зарегистрирован: 30.06.2012

Обратите внимание на то, что самая верхняя фигурная скобка у вас осталась не закрытой. Закройте ее в самом конце и будет вам счастье. Встроенный иф верен (при условии того, что второе условие у вас выполнится тогда когда его левая и правая часть будут истиной)

tdn
Offline
Зарегистрирован: 18.10.2012

Верхняя скобка закрыта, сюда не написал, а вот второй else не дает добавить - компилятор ругается. 

ich
Offline
Зарегистрирован: 10.06.2012

 

Как именно ругается?

 

memfise
Offline
Зарегистрирован: 30.06.2012

 Хотите что то подобное?

if ( digitalRead (OpenDoor) == HIGH ) {
  delay (50);
  if ( digitalRead (LeftTurnSignal) == HIGH && digitalRead (RightTurnSignal) == HIGH) {
  } 
  else {
  }
  else
  {

  }
}

 

ich
Offline
Зарегистрирован: 10.06.2012

как это вы к внутреннему if два else прикрутили? Так не зя!

memfise
Offline
Зарегистрирован: 30.06.2012

 верно замечено, правильно так

if ( digitalRead (OpenDoor) == HIGH ) {
  delay (50);
  if ( digitalRead (LeftTurnSignal) == HIGH && digitalRead (RightTurnSignal) == HIGH) {
  } 
  else {
  }
}
else
{
}

 Ctrl+t рулит :)

tdn
Offline
Зарегистрирован: 18.10.2012

Вот что получилось

if ( digitalRead (OpenDoor) == HIGH ) {
delay (50);
if ( digitalRead (LeftTurnSignal) == HIGH && digitalRead (RightTurnSignal) == HIGH) {
digitalWrite (SlaveOnOff, HIGH);
}
else {
}
else {
}
}

Ругается

my_sketch:94: error: expected `}' before 'else'
my_sketch.cpp: At global scope:
my_sketch:98: error: expected unqualified-id before 'if'

Че за нафиг 

ich
Offline
Зарегистрирован: 10.06.2012

Прочитайте внимптельно ощибку! Там всё написано. Если не дружите с английским, тоже не беда. Вот что перевёл google:

my_sketch: 94: ошибка: ожидается `} 'до' еще '
my_sketch.cpp: На глобальном объеме:
my_sketch: 98: ошибка: ожидается неквалифицированные-ID до 'если'

Обратите внимание на выделенный текст.

И вообще заведите себе за правело форматирвать текст. Тогда сами всё увидите.

Вот ваш код в отформатированном виде:

if ( digitalRead (OpenDoor) == HIGH ) {
	delay (50);
	if ( digitalRead (LeftTurnSignal) == HIGH && digitalRead (RightTurnSignal) == HIGH) {
		digitalWrite (SlaveOnOff, HIGH);
	}else {
	
	}

	else {

	}
}

Для чего у вас второй else который ни к чему не относится? Ответ от memfise, который на один пост выше уже всё ответил на ваш вопрос. "Че за нафиг

Ещё раз вот как это должно выглядеть:

if ( digitalRead (OpenDoor) == HIGH ) {
	delay (50);
	if ( digitalRead (LeftTurnSignal) == HIGH && digitalRead (RightTurnSignal) == HIGH) {
		digitalWrite (SlaveOnOff, HIGH);
	}else {
		// ...
	}
}else {
	// ...
}

Прочтите вот эту статью: Оператор If ... else

Думаю эта тоже не повредит: Вставка програмного кода ...

Удачи

tdn
Offline
Зарегистрирован: 18.10.2012

Спасибо, за помощь, я затупил, думал if нужно закрывать после else, а его нужно перед else закрывать :)) 

> Если не дружите с английским

С английским мы дружим, я просто не мог понять куда ему скобку нужно :)

soinikova
Offline
Зарегистрирован: 11.07.2013

Здравствуте, не могли вы мне помочь, нужно написать программу, которая проверят чтобы элементы не повторялисб по горизонтали и вертикали, никак не могу разобраться

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

soinikova пишет:

Здравствуте, не могли вы мне помочь, нужно написать программу, которая проверят чтобы элементы не повторялисб по горизонтали и вертикали, никак не могу разобраться

Касса рядом с бухгалтерией :)

ich
Offline
Зарегистрирован: 10.06.2012

soinikova

Вы конечно очень доступно описали вашу проблемму!

Ну что понял, то и сделал. Код написан на JAVA, просто первое что под руку попалось.

Для проверки столбцов, нужно в циклах заменить индексы аррэя.


public class TestArray {

	public static void main(String[] args) {
		int[][] array1 = {
				{1,2,3,4,5,6,7,8,9,0},
				{2,2,3,4,5,6,7,8,9,0},
				{3,2,3,4,5,6,7,8,9,0},
				{4,2,3,4,5,6,7,8,9,0},
				{5,2,3,4,5,6,7,8,9,0},
				{6,2,3,4,5,6,7,8,9,0},
				{7,2,3,4,5,6,7,8,9,0},
				{8,2,3,4,5,6,7,8,9,0},
				{9,2,3,4,5,6,7,8,9,0},
				{0,2,3,4,5,6,7,8,9,0}
		};
		
		int[][] array2 = {
				{1,2,3,4,5,6,7,8,9,0},
				{1,2,3,4,5,6,7,8,9,0},
				{1,2,3,4,5,6,7,8,9,0},
				{1,2,3,4,5,6,7,8,9,0},
				{1,2,3,4,5,6,7,8,9,0},
				{1,2,3,4,5,6,7,8,9,0},
				{1,2,3,4,5,6,7,8,9,0},
				{1,2,3,4,5,6,7,8,9,0},
				{1,2,3,4,5,6,7,8,9,0},
				{1,2,3,4,5,6,7,8,9,0}
		};
		
		System.out.println("Rows1:	"+rowsValid(array1));
		System.out.println("Rows2:	"+rowsValid(array2));
	}
	
	public static boolean rowsValid(int[][] arr){
		for(int i=0; i<arr.length; i++)
			for(int j=0; j<arr[i].length; j++)
				for(int l=j+1; l<arr[i].length; l++)
					if(arr[i][j] == arr[i][l]) return false;
		return true;
	}

}