0

我需要比较向量上的所有数字是否都为零。如果不是,请打印一条消息。

我正在考虑指向地址的内容,但我该怎么做呢?

我的代码:

#include <stdio.h>
#include <stdlib.h>

int main (void)
{
    int linha_user=0, coluna_user=0;
    float *identidade[linha_user][coluna_user];
    int linha, coluna;
    int se=0,sim=0,nao=0;
    printf("Digite o número de linhas desejado na matriz:\n");
    scanf("%d", &linha_user);
    printf("Digite o número de colunas desejado na matriz:\n");
    scanf("%d", &coluna_user);

    for (linha=0;linha<linha_user;linha++)
    {
        for (coluna=0;coluna<coluna_user;coluna++)
        {
            printf("Digite o número desejado para a posição %d,%d\n",linha,coluna);
            scanf("%d", &identidade[linha][coluna]);
        }
    }

    for (linha=0;linha<linha_user;linha++)
    {
        for (coluna=0;coluna<coluna_user;coluna++)
        {
            if (*identidade[linha][coluna] != 0)
            {
                se=nao;
            }
            else
            {
                se=sim;
            }
        }
    }

    if (se == nao)
    {
        printf("Nem todos os elementos são iguais a zero\n");
    }
    else
    {
        printf("Todos os elementos são iguais a zero.\n");
    }

有任何想法吗?

4

2 回答 2

3

请在评论、消息和标识符名称中使用英文。

我用 GNU 重新缩进了你的代码indent,然后我编译它(使用 GCC 4.8)gcc -Wall -Wextra并得到了

walter.c: In function 'main':
walter.c:22:4: warning: format '%d' expects argument of type 'int *', but argument 2 has type 'float **' [-Wformat=]
scanf ("%d", &identidade[linha][coluna]);
^
walter.c:49:1: warning: control reaches end of non-void function [-Wreturn-type]

}

还有你的声明

 int linha_user=0, coluna_user=0;
 float *identidade[linha_user][coluna_user];

肯定是错的。您正在声明一个零大小的浮点指针矩阵(如果稍后您设置linha_usercoluna_user使用 agscanf或某些赋值,则不会改变)。

我强烈建议阅读一些好的 C 编程书籍。

您可能希望(至少在 Linux 上)使用调试器(如gdbLinux)和内存泄漏检测器(如Linux 上的valgrind )来调试程序。

顺便说一句,您使用的向量术语让我建议使用C++2011(使用 GCC 4.8 编译器)及其容器类,尤其是它的std::vector标准模板。当然你想g++ -std=c++11 -Wall -g在这种情况下编译。

于 2013-03-24T12:18:00.733 回答
1

您的两个对象在您的程序中sim具有nao相同的值。如果您想在以下方面区分它们,0它们需要具有不同的值(如0和):1

if (se == nao)

break然后,当您观察到for循环中需要的非零元素时。

于 2013-03-24T12:15:27.047 回答