Loismig Posted March 13, 2015 at 10:13 PM Report Share #579359 Posted March 13, 2015 at 10:13 PM (edited) Boas pessoal 🙂 Estou com um pequeno problema que não consigo resolver :s Onde está a "bola" vermelha, supostamente devia aparecer a média da disciplina 1, 2 e 3, ou seja: A media da disciplina 1 = 4.7 A media da disciplina 2 = 5.0 A media da disciplina 3 = 5.3 Já estive aqui a voltas e a colocar isto posi = nota; em tudo o que eu sitio do programa e mesmo assim não consigo lá chegar. Será falta de chavetas ou algo do género? Aguardo resposta, obrigado 🙂 #include <stdio.h> #include <conio.h> main() { int vetor[3][3], aluno, nota, media, posicao, posi; float div, melhor = 0, total, divi; for(aluno = 0; aluno < 3; aluno++){ media = 0; for(nota = 0; nota < 3; nota++){ printf("Insira a nota da disciplina %d do aluno %d: ",nota+1, aluno+1); scanf("%d", &vetor[aluno][nota]); media = media + vetor[aluno][nota]; } div = media; div = div/3; printf("\nMedia Final do aluno %d = %.1f\n\n", aluno+1, div); if(div > melhor){ melhor = div; posicao = aluno; } } for(aluno = 0; aluno < 3; aluno++){ total = 0; for(nota = 0; nota < 3; nota++){ total = total + vetor[nota][aluno]; } divi = total; divi = divi/3; posi = nota; printf("A media da disciplina %d = %.1f\n", posi+1, divi); } printf("A melhor media foi do aluno %d com media final de %.1f\n", posicao+1, melhor); getch(); } Edited March 13, 2015 at 10:15 PM by Loismig Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 14, 2015 at 12:03 AM Report Share #579367 Posted March 14, 2015 at 12:03 AM que baralhação que prai vai !!! olhando para o segunite trecho de código: scanf("%d", &vetor[aluno][nota]); vejo que a ordem da matrix é : aluno->nota mas depois a fazer a contabilidade tens : total = total + vetor[nota][aluno];[/Code] ??? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Loismig Posted March 14, 2015 at 11:42 AM Author Report Share #579376 Posted March 14, 2015 at 11:42 AM que baralhação que prai vai !!! olhando para o segunite trecho de código: scanf("%d", &vetor[aluno][nota]); vejo que a ordem da matrix é : aluno->nota mas depois a fazer a contabilidade tens : total = total + vetor[nota][aluno];[/Code] ??? Sim, porque o o que eu preciso é apresentar a média de cada disciplina e só aparece disciplina 3. Se reparares (caso ainda não o tenhas feito), onde está a marcação, as médias de cada disciplina(disciplina 1, disciplina 2, disciplina 3) estão bem, o problema mesmo é a contagem que não sei como meter e aparece sempre disciplina 3. Em questão a baralhação, sim, não sou das pessoas mais organizadas 😞 Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 14, 2015 at 12:04 PM Report Share #579379 Posted March 14, 2015 at 12:04 PM lá porque atiraste uma gosma qualquer à parede e ela colou, não quer dizer que essa gosma é um bom cimento. simplesmente tiveste sorte em ter colado quando atiraste. por outras palavra, eu não disse que o resultado final está errado, o que disse é que se desses o nome correcto aos elementos verias onde estava o problema IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Loismig Posted March 14, 2015 at 12:10 PM Author Report Share #579380 Posted March 14, 2015 at 12:10 PM Então mas eu tinha trocado esta parte propositadamente! total = total + vetor[nota][aluno]; Porque se o fizesse ao contrário (e já testei), ia dar a média de cada aluno e não é isso que pretendo visto que foi feito em cima. Eu fiz dessa maneira e resultou, se não foi feito da melhor maneira, compreendo mas foi o que eu pensei e o que me veio a cabeça quando realizava o exercício. Calma, não estou a dizer que se resultou é assim e pronto. Sou um novato em programação e agradeço e recebo sempre todas as ajudas e opiniões! Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 14, 2015 at 12:20 PM Report Share #579383 Posted March 14, 2015 at 12:20 PM (edited) foz como te digo ... pensa bem no que tens em cada posição da matrix, escreve os ciclos correctamente e vais ver que a informação de saída irá te aparecer directamente. olha que digo isto para o teu bem, porque a probabilidade do teu professor olhar para o código trocado, e pensar que no final não percebeste nada do que estavas a fazer e simplesmente viste algo a funcionar, é elevada resultando numa avaliação negativa ... Edited March 14, 2015 at 12:20 PM by HappyHippyHippo 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Loismig Posted March 14, 2015 at 01:31 PM Author Report Share #579390 Posted March 14, 2015 at 01:31 PM (edited) Consegui resolver o problema. A linha de código ficou igual #include <stdio.h> #include <conio.h> main() { int vetor[3][3], aluno, nota, media, posicao, posi; float div, melhor = 0, total, divi; for(aluno = 0; aluno < 3; aluno++){ media = 0; for(nota = 0; nota < 3; nota++){ printf("Insira a nota da disciplina %d do aluno %d: ",nota+1, aluno+1); scanf("%d", &vetor[aluno][nota]); media = media + vetor[aluno][nota]; } div = media; div = div/3; printf("\nMedia Final do aluno %d = %.1f\n\n", aluno+1, div); if(div > melhor){ melhor = div; posicao = aluno; } } for(aluno = 0; aluno < 3; aluno++){ total = 0; for(nota = 0; nota < 3; nota++){ total = total + vetor[nota][aluno]; } divi = total; divi = divi/3; posi = aluno; printf("A media da disciplina %d = %.1f\n", posi+1, divi); } printf("A melhor media foi do aluno %d com media final de %.1f\n", posicao+1, melhor); getch(); O que eu fiz foi criar de novo programa mas só com a parte do meu erro: #include <stdio.h> #include <conio.h> main() { int vetor[3][3], aluno, nota, posi; float total, divi; for(aluno = 0; aluno < 3; aluno++){ total = 0; for(nota = 0; nota < 3; nota++){ printf("Insira a nota da disciplina %d do aluno %d: ",nota+1, aluno+1); scanf("%d", &vetor[aluno][nota]); total = total + vetor[nota][aluno]; } } for(aluno = 0; aluno < 3; aluno++){ total = 0; for(nota = 0; nota < 3; nota++){ total = total + vetor[nota][aluno]; } divi = total; divi = divi/3; posi = aluno; printf("A media da disciplina %d = %.1f\n", posi+1, divi); } getch(); } E tal como esperado -> O problema estava mesmo na parte: posi = nota; E a solução foi: posi = aluno; Agora o porquê de não ter metido a solução logo de inicio neste post e estou a meter os códigos. Porque chegaste a dizer que isto estava tudo baralhado e se não fosse pedir muito, gostaria de receber algumas dicas para deixar o programa mais limpo e bonito de se ver e melhor organizado. PS: sei que as funções é uma das formas de deixar o programa mais legível para a sua leitura de código mas visto que começamos agora a dar matrizes, a professora ainda não pediu para realizarmos já com funções! Obrigado pela ajuda 😄 Edited March 14, 2015 at 01:32 PM by Loismig Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 14, 2015 at 03:11 PM Report Share #579396 Posted March 14, 2015 at 03:11 PM vê lá se assim não faz mais sentido quando se lê o código ... #include <stdio.h> #define NUMERO_ALUNOS 3 #define NUMERO_DISCIPLINAS 3 int main(void) { int notas[NUMERO_ALUNOS][NUMERO_DISCIPLINAS]; for(int aluno = 0; aluno < NUMERO_ALUNOS; aluno++) { for(int disciplina = 0; disciplina < NUMERO_DISCIPLINAS; disciplina++){ printf("Insira a nota da disciplina %d do aluno %d: ", disciplina + 1, aluno + 1); scanf("%d", ¬as[aluno][disciplina]); } } for(int disciplina = 0; disciplina < NUMERO_DISCIPLINAS; disciplina++) { float total = 0; for(int aluno = 0; aluno < NUMERO_ALUNOS; aluno++) { total += notas[aluno][disciplina]; } printf("A media da disciplina %d = %.1f\n", disciplina + 1, total / NUMERO_DISCIPLINAS); } return 0; } 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Loismig Posted March 14, 2015 at 05:35 PM Author Report Share #579410 Posted March 14, 2015 at 05:35 PM Txii, mas que grande organização! Espero que com o tempo e experiência também chegue lá. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now