Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Grace Gomes

C O que está faltando no código

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

   Aqui tem um erro, deveria ser j e não i: for(j=1;i<5;j++)

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

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

 

Eu coloquei a função antes do main e agora ta dando erro no printf .

Editado por Grace Gomes

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Grace Gomes Ola! 

Tens dificuldades conceituais que não deverias ter, este site:

https://www.cprogressivo.net/2014/01/Apostila-de-C-Ponteiro-Vetor-Matriz-String.html fornece, de graça, bons resumos que ajuda no entendimento. Leia !!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×