Ir ao conteúdo
  • Cadastre-se

C O que está faltando no código


Posts recomendados

Citação

#include<stdio.h>
#include<stdlib.h>>
#define matriz[5][5]


 main(){
int matriz[5][5];
int l,c,p,s;
int matriz[5][5];

for(l=1;l<5;l++)
  printf("digite a linha:\n");
  scanf("%d",&l);
  for(c=1;c<5;i++)
   scanf("%d",&matriz[5][5]);
   
   somadiag(matriz,p,s);
   printf("a soma da diagonal principal e:",p);
   printf("a soma da diagonal secundaria e:",s);
   
   

}

void somadiag(matriz [5][5])
{

int i,j,sdp=0,sdc=0;

for(i=1;i<5;i++)
   for(j=1;i<5;j++)
       if(i=j)
       sdp=sdp+matriz[5][5];
        if(i+j=6)
        sdc=sdc+matriz[5][5];
   

}

O exercício é o seguinte:

 

Escreva uma procedure que receba por parametro uma matriz 5x5 e forneça como saída (por parâmetros) a soma dos elementos da diagonal principal e a soma dos elementos da diagonal secundária. Faca um programa que use a procedure.

 

 

Porém quando eu vou rodar dá o seguinte erro:[Note] in expansion of macro 'matriz'.

Já procurei no google mas não entendo no que estou errando.

Link para o comentário
Compartilhar em outros sites

Tem vários problemas...

 

- Tem um #define matriz[5][5] que é desnecessário, não deveria estar aí.

 

- Em C sempre se declara algo primeiro para depois usá-lo, então a função somadiag() deveria estar antes da função main(), pois ela é usada dentro do main().

 

- A função main() deve ser do tipo inteiro ( int main() { ), e coloque return 0; na última linha do main() para que o programa retorne 0 para o sistema quando for finalizado, informando que o programa foi encerrado corretamente.

 

- A função somadiag() foi definida para receber apenas 1 parâmetro, a matriz[5][5], e não foi colocado o tipo da matriz (int), mas o enunciado pede que a função tenha 3 parâmetros, ou seja a matriz e as duas somas das diagonais principal e secundária.

 

- Matrizes e vetores definidos com uma dimensão N tem índices indo de 0 até N-1, ou seja, int vetor[5]; tem índices indo de 0 até 4, e int matriz[5][4]; tem índices de linhas indo de 0 até 4 e índices de colunas indo de 0 até 3. O seu programa declara int matriz[5][5]; e depois tenta acessar a posição matriz[5][5] que não existe pois os índices das linhas e colunas vão apenas de 0 até 4, o que vai causar um erro no programa.

 

- Nos ciclos for tem variáveis erradas/trocadas sendo incrementadas ou sendo comparadas.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

6 minutos atrás, Grace Gomes disse:

@isrnick Então pelo o que você disse tenho que  por matriz[4][4] ,é isso ?

 

 

Você tem que acessar todas as posições da matriz, ou seja faz i e j variarem de 0 até 4 (usando 2 ciclos for um dentro do outro) e usa matriz[ i ][ j ] para acessar as posições.

adicionado 5 minutos depois

Por exemplo:

 

int i, j, matriz[5][5];

for (i = 0; i < 5; i++){
    for (j = 0; j < 5; j++){
        matriz[i][j] = 0;
    }
}

Colocaria o valor 0 em todas as posições da matriz.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...