Функции, которые проверяют одни и те же символы в поле

#arrays #c

Вопрос:

Здравствуйте, как заставить функцию возвращать значение true, если все символы в столбцах одинаковы? Я редактирую этот пост.. Спасибо вам за ваш ответ.

Она могла так выглядеть? Можно ли это изменить?

  for(int i =0; i lt; rows; i  ){  for(int j = 0; j lt; columns; j  ){  if(field[i][j] == field[i][j]){  return true;  }  else{  return false;  }   }  }    

Ответ №1:

  1. Используйте правильный тип для размеров ( size_t )
  2. вам нужно решить, равны ли строки или столбцы нулю, следует ли возвращать true или false .
 bool check(const size_t rows, const size_t columns, const char field[rows][columns]) {  //if(!field) return false;  //if(!rows || !columns) return false;  for(size_t row = 1; row lt; rows; row  )  for(size_t col = 0; col lt; columns; col  )  if(field[row][col] != field[0][col]) return false;  return true; }  

Комментарии:

1. Большое вам спасибо 🙂

Ответ №2:

функция должна вернуть значение false, как только заметит разницу.

 for(int i = 0; i lt; rows; i  )  for(int j = 1; j lt; columns; j  )  if(field[0][i] != field[j][i])  return false; return true;  

Комментарии:

1. int — неправильный тип для размеров и индексов

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

3. Большое вам спасибо 🙂

4. [0] -gt; gt; [j] это опечатка, верно? Это более удобно для кэша, если вы инвертируете циклы.

5. нет, это не опечатка. Я не понимал 0___________’вообще никакого ответа. алгоритм должен сравнивать элементы каждого столбца, а не строк. Вы можете увидеть оригинальную версию вопроса. Это станет намного яснее. Либо я ужасно тупой. 0_0