分析向量位置的内容

时间:2013-03-24 12:11:49

标签: c

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

我在考虑指出地址的内容,但我该怎么办呢?

我的代码:

#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");
    }

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

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

我使用GNU indent重新创建代码,然后使用gcc -Wall -Wextra编译它(使用GCC 4.8)并获得

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];

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

我强烈建议您阅读一些优秀的C编程书。

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

BTW,你正在使用的 vector 术语让我建议使用C++2011(使用GCC 4.8编译器)及其容器类,特别是它的std::vector标准模板。当然,在这种情况下,您希望使用g++ -std=c++11 -Wall -g进行编译。

答案 1 :(得分:1)

您的两个对象simnao在您的计划中具有相同的0值。如果您想要区分它们,则需要具有不同的值(例如01):

if (se == nao)

然后当你观察到非零元素时,你需要在break循环中for