#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:
- Используйте правильный тип для размеров (
size_t
) - вам нужно решить, равны ли строки или столбцы нулю, следует ли возвращать
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