Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

prinos

[Resolvido] C - Matriz

Recommended Posts

A questão é a seguinte: Escreva um algoritmo que leia uma matriz de valoreis inteiros com M linha e N colunas. Após a digitação imprimir a soma da linha que possui o menor valor digitado, considere que ele existe.

#include <stdio.h>
#include <stdlib.h>
#define N 3
#define M 4
int main (){

   int matriz[N][M], i, j, menor, lin_menor, soma=0;
   for (i=0; i<N; i++)
      for (j=0; j<M; j++) {
          printf(\nInforme o valor de matriz[%d][%d]: ", i, j);
          scanf("%d", &matriz[i][j]);
          }
            menor = matriz[0][0];
            lin_menor = 0;
              for (i=0; i<N; i++)
               for (j=0; j<M; j++)
                if (menor > matriz[i][j]) {
                 menor = matriz[i][j];
                 lin_menor = i;
}
                 for (j=0; j<M; j++)
                 soma += matriz[lin_menor][j];
                  printf("\nMenor valor: %d na linha %d\nSoma: %d", menor, lin_menor, soma);
     return 0;
}

 

 

O programa não ta compilando! Tô tentando fazer isso há umas 3 horas, alguém pode me ajudar? Grato!

 

prinos, veja como eu editei para aprender como usar. Edite o tópico para ver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode ler o que o compilador está mandando. Ele fala quais são os erros.

 

Sugiro que use Syntax Highlighting, se não usa, pois só com o do fórum mesmo já deu para perceber que está faltando um " no primeiro printf().

 

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Renato, acho que agora aprendi como usar o code

 

Então, fiz algumas alterações no código e agora ta compilando. Ficou assim:

#include <stdio.h>
#include <stdlib.h>
#define N 3
#define M 4
int main() {

   int matriz[N][M], i, j, menor, lin_menor, soma=0;
   for (i=0; i<N; i++){
      for (j=0; j<M; j++){
          printf("\n Informe o valor de matriz[%d][%d]: ", i, j);
          scanf("%d", &matriz[i][j]);
          }
          }
            menor = matriz[0][0];
            lin_menor = 0;
              for (i=0; i<N; i++){
               for (j=0; j<M; j++){
                if (menor > matriz[i][j]) {
                 menor = matriz[i][j];
                 lin_menor = i;
                 }
                 }
}
                 for (j=0; j<M; j++){
                 soma = matriz[lin_menor][j];
                  printf("\nMenor valor: %d na linha %d\nSoma: %d", menor, lin_menor, soma);
                  }   
     system("pause");              
     return 0;

}

 

Mas eu gostaria que mostrasse a soma de cada linha quando eu compilasse e destacasse a menor soma, só que não ta dando certo, alguém pode ver qual meu erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

1º - Quando executa o seu programa aparece assim: Informe o valor da matriz[0][0]:

Não fica muito legal, ne? Só uma dica, acho que ficaria melhor assim:

 

printf("Informe o valor da linha %d na coluna %d:", i + 1, j + 1);

 

2º - Na condição você inverteu, o certo seria verificar se a matriz[j] é menor que o outro valor antes tido como menor, por exemplo:

 

if (matriz[i][j] < menor) {

 

3º - você colocou o printf dentro do for, ou seja, aquela mensagem vai repetir várias vezes... não precisa disso, eh melhor deixar fora do for.

 

4º - você esqueceu de incrementar a soma, no caso, ficaria assim:

 

soma += matriz[lin_menor][j];

 

ou

 

soma = soma + matriz[lin_menor][j];

 

5º - No seguinte código:

 

printf("\nMenor valor: %d na linha %d\nSoma: %d", menor, lin_menor, soma);

 

Nesse caso, supondo que o menor valor estivesse na primeira linha da matriz, quando fosse imprimir. Imprimiria por exemplo, valor tal na linha 0;

A matriz para o usuário ela não tem linha 0, para ele começa da linha 1, coluna 1; Então pra ficar mais bonito de se ver, você pode está colocando assim:

 

printf("\nMenor valor: %d na linha %d\nSoma: %d", menor, lin_menor + 1, soma);

 

Espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.