【问题标题】:Functions that checks the same characters in field检查字段中相同字符的函数
【发布时间】:2021-11-21 22:37:30
【问题描述】:

你好,如果列中的所有字符都相同,如何让函数返回 true?我编辑了这篇文章。谢谢你的回复。

她会长成这样吗? 可以改吗?


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

     }
   }


【问题讨论】:

    标签: arrays c


    【解决方案1】:
    1. 使用正确的尺寸类型 (size_t)
    2. 如果应该返回truefalse,您需要确定rows 或cols 是否为零。
    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 < rows; row++)
            for(size_t col =  0; col < columns; col++)
                if(field[row][col] != field[0][col]) return false;
        return true;
    }
    

    【讨论】:

    • 非常感谢 :)
    【解决方案2】:

    该函数需要在发现差异后立即返回 false。

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

    【讨论】:

    • int 是错误的大小和索引类型
    • 哦,谢谢,我会习惯将无符号变量用于此类目的
    • 非常感谢:)
    • [0] -> [j] 是错字,对吧?如果你反转循环,它对缓存更友好。
    • 不,这不是错字。我完全不明白 0___________ 的回答。该算法必须比较每一列的元素,而不是行。您可以查看问题的原始版本。它会变得清晰得多。要么我太笨了。 0_0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2021-02-19
    • 2018-06-18
    • 1970-01-01
    • 2015-07-14
    相关资源
    最近更新 更多