Ir para conteúdo

POWERED BY:

Arquivado

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

|Jezao|

Problema c/ logica

Recommended Posts

olá, estou fazendo um exercicio,mas estou c/ problemas...

 

O exercicio é o seguinte:

 

Escrever um programa em linguagem C que receba números inteiros do usuário e preencha uma matriz com 3 linhas e 3 colunas. O programa deverá verificar se a matriz recebida é simétrica. Uma matriz é simétrica quando ela é igual a sua transposta. Utilize constantes para definir as dimensões da matriz.

 

o codigo que estou utilizando é esse:

 

#include<stdio.h>#define lin 3#define col 3  main(){                                                                       //INICIO  int fMatriz[lin][col],fMatrizT[col][lin],i,j,sime=0;  ////////////////////////////////////////////////////////////////////////////////            for(j=0;j<col;j++)      {         for(i=0;i<lin;i++)         {           printf("\nEscreva o elemento de indice:%i%i\n",i+1,j+1);           scanf("%f",&fMatriz[i][j]);           fMatrizT[i][j]=fMatriz[j][i];         }      }////////////////////////////////////////////////////////////////////////////////       while(sime==0)       {           for(j=0;j<col;j++)           {             for(i=0;i<lin;i++)             {              if(fMatriz[i][j]!=fMatrizT[i][j])              sime=1;                           }           }                  }              switch(sime)       {       case 1:            printf("A matriz não é simetrica");            break;       case 0:            printf("A Matriz é simetrica");            break;       }                                                       getch();                 }//FIM
Estou errando na lógica??

Compartilhar este post


Link para o post
Compartilhar em outros sites

gostaria de saber como faço para construir esse algoritimo, em pseudo codigo?Construir um algoritmo que calcule a média final do aluno desta disciplina. Para isso, deve executar os seguintes procedimentos: ler a matrícula do aluno, as notas das ADs e da AP; criar uma função chamada MEDIA, para calcular média do aluno, onde (media = (AD1 + AD2) * 4 + AP * 6 / 10); Observe que a função deve receber como parâmtero as três notas do aluno (AD1, AD2 e AP) e retornar o valor calculado da média. criar uma função chamada RESULTADO que receba de parâmetro a média do aluno. Essa função deve retornar se o aluno foi aprovado (media >=7.0), reprovado (média <2) ou recuperação (média entre 2.0 e 6.9) mostrar na tela a matrícula do aluno, suas notas, média e o resultado.  se o aluno estiver em recuperação, informar qual deve ser a nota que ele deverá tirar na Avaliação Final (Nota = 12-média)

Compartilhar este post


Link para o post
Compartilhar em outros sites

volmir, não invada o tópico! :angry:

 

1. Para calcular a média, crie duas variáveis, x e y.

 

2. Crie um repete que percorre os números, sendo que a cada volta x soma com o número atual e y soma 1.

 

3. Divida x por y.

Compartilhar este post


Link para o post
Compartilhar em outros sites

|Jezao|, eu acho que seu código está errado.

 

Vamos supor que, lá dentro do seu "for", nunca aconteça de (fMatriz[j]!=fMatrizT[j]) ser verdade.

Ou seja, vamos supor que a matriz não seja simétrica.

Se a matriz não for simétrica, então teríamos um "while" sem fim, pois nunca a variável sime passaria a valer 1.

 

Se a matriz não for simétrica, ele rodaria os dois "for", sime continuaria valendo 0.

Como sime é 0, ele rodaria os dois "for", e sime continuaria valendo 0.

Como sime é 0, ele rodaria os dois "for", e sime continuaria valendo 0.

... hehe...

 

Vou colocar só a parte da verificação aqui, porque a leitura dos elementos da matriz e as outras partes estão certas, creio.

 

j=0;while (sime = 0 && j<col) {	i=0;	while (sime = 0 && i<lin) {		if (fMatriz[i][j] != fMatrizT[i][j])			sime = 1;  		i++;	}  j++;}
Veja que o while é melhor do que o for. Se fosse usado o "for", mesmo que sime fosse mudado alguma hora pra 1, ele continuaria rodando o laço, o que seria desnecessário.

 

Não testei aqui ainda, mas acho desse jeito está certo.

 

Pode me mandar e-mail se estiver errado o jeito que eu fiz aí... também quero saber como é.

bru_no0@hotmail.com

http://forum.imasters.com.br/public/style_emoticons/default/shifty.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

ya tudo bem até aqui mas tenta fazer uma simetria para o outro lado....pois é bastante mais complicado !!! (e não é da mesma maneira)

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.