Ir ao conteúdo
  • Cadastre-se

Dúvida com matrizes em C


AlexSigma

Posts recomendados

Olá, de novo aqui com dúvidas, preciso resolver este exercício:

Escrever um algoritmo que lê uma matriz A(15,5) e a escreva. Verifique, a seguir, quais os elementos de A que estão repetidos e quantas vezes cada um está repetido. Escrever cada elemento repetido com uma mensagem dizendo que o elemento aparece X vezes em A.

#include <stdio.h>
#include <conio.h>

main()
{
int A[3][4], L=0, C=0, i=0, cont=0, aux=0;
printf("Digite os valores da matriz A[3x4]:\n");
for(L=0;L<3;L++)
{
for(C=0;C<4;C++)
{
scanf("%d", &A[L][C]);
}
}
printf("Valores da matriz digitada:\n");
for(L=0;L<3;L++)
{
for(C=0;C<4;C++)
{
printf("%3d", A[L][C]);
}
printf("\n");
}
for(L=0;L<3;L++)
{
for(C=0;C<4;C++)
{
aux = A[L][C];
for(L=0;L<3;L++)
{
for(C=0;C<4;C++)
{
if(A[L][C] == aux)
cont++;
}
}
printf("O numero %d ocorre %d vezes na matriz A!", aux, cont);
aux = 0;
cont= 0;
}
}
}

O código acima funciona sem problemas mas só resolve parte do problema da questão, o programa lê a matriz, imprime a matriz e diz quais os numeros são repetidos e quantas vezes são repetidos, aí é que está minha dúvida, o programa testa apenas um numero, tipo:

dada a seguinte matriz:

1 2 3 4

4 3 2 1

2 4 1 3

o número 1 ocorre 3 vezes matriz!

como eu disse ele só testa a primeira posição, como faço pra testar as outras também?

obrigado desde já ^^'

Link para o comentário
Compartilhar em outros sites

O problema foi que você usou a mesma vairável L para linha e C para coluna em todos os FOR. Nos dois FOR que verifica se há repetição, eu coloquei outras variáveis como o l e o c.

Eu cologuei l minúsculo e c minúsculo, pois em c++ L é diferente de l e C é diferente de c. Mas você poderia usar x para linha ou y para coluna. Tanto faz. Vai dar certo do mesmo jeito. A única coisa que você nao poderia ter feita era ter usado L para linha e C para coluna em todos os FOR.

Entendeu?

#include <stdio.h>

#include <conio.h>

main()

{

int A[3][4], L=0, C=0, i=0, cont=0, aux=0;

int l,c;

printf("Digite os valores da matriz A[3x4]:\n");

for(L=0;L<3;L++)

{

for(C=0;C<4;C++)

{

scanf("%d", &A[L][C]);

}

}

printf("Valores da matriz digitada:\n");

for(L=0;L<3;L++)

{

for(C=0;C<4;C++)

{

printf("%3d", A[L][C]);

}

printf("\n");

}

for(L=0;L<3;L++)

{

for(C=0;C<4;C++)

{

aux = A[L][C];

for(l=0;l<3;l++)

{

for(c=0;c<4;c++)

{

if(A[l][c] == aux)

cont++;

}

}

printf("O numero %d ocorre %d vezes na matriz A!\n", aux, cont);

aux = 0;

cont= 0;

}

}

getch();

}

Link para o comentário
Compartilhar em outros sites

olá amigo, fiz as modificações que você falou mas ainda tem um problema, ele fica imprimindo a mesma resposta o numero de vezes que o numero apareceu, tipo:

eu digito lá a matriz

1 1 2 3

4 5 6 7

8 2 9 10

o numero 1 ocorre 2 vezes na matriz A! <<< como resolvemos isso?

o numero 1 ocorre 2 vezes na matriz A! <<< como resolvemos isso?

o numero 2 ocorre 2 vezes na matriz A! <<< como resolvemos isso?

o numero 2 ocorre 2 vezes na matriz A! <<< como resolvemos isso?

o numero 3 ocorre 1 vezes na matriz A!

o numero 4 ocorre 1 vezes na matriz A!

o numero 5 ocorre 1 vezes na matriz A!

o numero 6 ocorre 1 vezes na matriz A!

o numero 7 ocorre 1 vezes na matriz A!

o numero 8 ocorre 1 vezes na matriz A!

o numero 9 ocorre 1 vezes na matriz A!

o numero 10 ocorre 1 vezes na matriz A!

ele deveria imprimir apenas uma vez assim:

o numero 1 ocorre 2 vezes na matriz A!

o numero 2 ocorre 2 vezes na matriz A!

como resolvo, ja tentei trocar o printf dentro do for mas nao resolve, tem alguma ideia?

Link para o comentário
Compartilhar em outros sites

Eu percebi que isso estava acontecendo. Mas não corriji, pois pensei que você fosse corrigir.

Tentar corrigir esse erro, se não conseguir, poste aqui de novo. valeu?

Vou te dar uma ideia.

Verifique se já existe algum número digitado na matrix decremetando ao invés de incrementar. você pode fazer isso assim

for(x=3;x>0;x--)

{

for(y=4;y>0;y--)

Ai você escreve um código que verifica. Se um numero não foi digitado, o programa continua. Se já foi digitado, ele não verifica e não imprime o número de itens.

Boa sorte e poste ai de novo dizendo o que conseguiu.

Link para o comentário
Compartilhar em outros sites

  • 3 anos depois...
Visitante
Este tópico está impedido de receber novas respostas.

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!