saritax Posted April 25, 2012 at 12:42 AM Report #451288 Posted April 25, 2012 at 12:42 AM Boas, estou a fazer um programa que tem um MENU, menu esse que terá de aparecer até que o utilizador clique em '0' - sair, por isso coloquei um do...while... Para aceder ao menu, coloquei um switch com vários case.. O meu problema esta em que em dois, dos case, preciso de colocar uma condição em que dentro da matriz ele leia os valores inferiores a 10 e na outra os superiores a dez, sendo que no final terá de dizer apenas a quantidade de valores em vez de colocar os valores. Questão: como colocar uma condição num case? ou será melhor esquecer o switch e utilizar IF?? p.s-se for necessário coloco o código do programa. Obrigado 😉
pikax Posted April 25, 2012 at 12:52 AM Report #451291 Posted April 25, 2012 at 12:52 AM assim de repente penso que seja melhor um if, pelo o menos para testar a condicao depois podes usar o switch case e' sempre melhor colocares o codigo, assim facilita muito mais quem te vai ajudar Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
pmg Posted April 25, 2012 at 08:23 AM Report #451297 Posted April 25, 2012 at 08:23 AM Faz funcoes ... muitas funcoes 😉 do { i = menu(); switch (i) { default: erro(); break; case 0: break; /* nothing to do */ case 1: opcao1(); break; case 2: opcao2(); break; /* ... */ case N: opcaoN(); break; } } while (i != 0); What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
saritax Posted April 25, 2012 at 09:51 AM Author Report #451306 Posted April 25, 2012 at 09:51 AM Eu estou a utilizar funções, e isso eu consigo testar até obter o que pretendo, o meu problema está em como declarar uma condição dentro do case, de forma a que dentro de um ciclo ele leia as notas introduzidas, verifique as que são iguais e maiores que dez e dá o resultado... do { printf("***************************\n"); printf("* Menu *\n"); printf("***************************\n"); printf("* 1 - Inserir Notas *\n"); printf("* 2 - Inserir idades *\n"); printf("* 3 - Total de Aprovados *\n"); printf("* 4 - Total de Reprovados *\n"); printf("* 5 - Media das Notas *\n"); printf("* 6 - Media das Idades *\n"); printf("* 7 - Mostrar Notas *\n"); printf("* *\n"); printf("* 0 - Sair *\n"); printf("***************************\n"); printf("\nPor favor introduza a sua opcao:"); scanf("%c",&menu); switch(menu) { case'1': for(l=0;l<1;l++) { for(c=0;c<9;c++) { printf("Introduza a nota do aluno[%d][%d]:",l,c); scanf("%f",&turma[l][c]); } } break; case'2': for(l=1;l<2;l++) { for(c=0;c<9;c++) { printf("Introduza a idade do aluno[%d][%d]:",l,c); scanf("%f",&turma[l][c]); } } break; case'3': if(turma[l][c]>=10); { for(l=0;l<1;l++) { for(c=0;c<9;c++) // if((turma[l][c]==10)&&(turma[l][c]>10)); // x=x+1; //soma=soma+(turma[l][c]); } printf("\nTotal de Aprovados:%.2f\n",soma); } break; Aqui está uma parte do código para que percebam do que estou a falar.... A dúvida estaria no case'3' e case'4', que preciso uma função tal como o IF(verifique dentro da matriz, na linha das notas) para ler e comparar os dados com a condição que pretendo. x>=10 - aprovado x<10 - reprovado Desde já obrigado a quem respondeu... Aqui fica o menu
pmg Posted April 25, 2012 at 09:57 AM Report #451307 Posted April 25, 2012 at 09:57 AM Como e que les (em portugues) a expressao seguinte? x >= 10 Eu leio "x maior ou igual a 10". No codigo (comentado) que apresentaste esta 'escrito' "x igual a e maior que 10". x nunca pode ser ao mesmo tempo igual a 10 e maior que 10. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
saritax Posted April 25, 2012 at 10:49 AM Author Report #451320 Posted April 25, 2012 at 10:49 AM Penso que o problema de momento esta no programa me estar a ler lixoooo, visto que o código da media das idades tava a funcionar ontem e hoje dá algo do género: -1#R************* Sendo que aparece o mesmo no total de reprovados....etc.. Portanto, provavelmente, mesmo que coloque algo correto eu não consigo saber, porque não me vai aparecer no resultado.. O IF, foi um teste para verificar se iria ou não fazer, por isso que tenho um em comentário e outro fora... Vou colocando, vou testando...
HappyHippyHippo Posted April 25, 2012 at 11:09 AM Report #451327 Posted April 25, 2012 at 11:09 AM apresenta lixo por duas razões 1º não inicializas a variável soma 2º não atribuis nenhum valor à variável soma conclusão : lixo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
saritax Posted April 25, 2012 at 11:19 AM Author Report #451331 Posted April 25, 2012 at 11:19 AM As variáveis estão declaradas, apenas não coloquei o programa aqui completo... Se for mais fácil, posso colocar... Apenas não tinha atribuído valor a variável... Obrigado De momento só falta mesmo colocar o case'3' e case'4' a funcionar (com a condição de contar o numero de notas positivas/negativas).
pikax Posted April 25, 2012 at 11:37 AM Report #451334 Posted April 25, 2012 at 11:37 AM porque que precisas de por uma condicao no switch??? podes meter case 4 e depois fazer o if, ou ate' fazer o if antes de entrares no switch. Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
saritax Posted April 25, 2012 at 11:40 AM Author Report #451335 Posted April 25, 2012 at 11:40 AM Eu preciso do IF, dentro do Case'3' e case'4', visto serem condições diferentes e que não devem afectar os outros Case... Mas tou a tentar testar o If, apesar de não dar qualquer tipo de "erro", não faz o que pretendo...
pikax Posted April 25, 2012 at 11:51 AM Report #451338 Posted April 25, 2012 at 11:51 AM pelo o que eu percebi o user se escolher a opcao 3 ou 4 ira' aparecer as notas, nao vejo qual e' a necessidade de ter uma condicao no if. que valor tem a variavel l e c nesta condicao? if(turma[l][c]>=10); para mostrar as negativas penso que seria algo assim: for(l=0;l<1;l++) { for(c=0;c<9;c++) { if(turma[l][c]<10) printf("Aluno %d reprovou 'a disciplina %d\n",l,c); } } Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
saritax Posted April 25, 2012 at 11:57 AM Author Report #451339 Posted April 25, 2012 at 11:57 AM turma[l][c] l-linha c-coluna ...... Ou seja assume as posições da matriz.
pikax Posted April 25, 2012 at 12:24 PM Report #451342 Posted April 25, 2012 at 12:24 PM #include<stdlib.h> #include<stdio.h> #include<conio.h> int main(void) { int l,c; float turma[1][9]; char menu; float soma; do { printf("***************************\n"); printf("* Menu *\n"); printf("***************************\n"); printf("* 1 - Inserir Notas *\n"); printf("* 2 - Inserir idades *\n"); printf("* 3 - Total de Aprovados *\n"); printf("* 4 - Total de Reprovados *\n"); printf("* 5 - Media das Notas *\n"); printf("* 6 - Media das Idades *\n"); printf("* 7 - Mostrar Notas *\n"); printf("* *\n"); printf("* 0 - Sair *\n"); printf("***************************\n"); printf("\nPor favor introduza a sua opcao:"); scanf(" %c",&menu); switch(menu) { case'1': for(l=0;l<1;l++) { for(c=0;c<9;c++) { printf("Introduza a nota do aluno[%d][%d]:",l,c); scanf("%f",&turma[l][c]); } } break; case'2': for(l=1;l<2;l++) { for(c=0;c<9;c++) { printf("Introduza a idade do aluno[%d][%d]:",l,c); scanf("%f",&turma[l][c]); } } break; case'3': soma=0; for(l=0;l<1;l++) { for(c=0;c<9;c++) { if(turma[l][c]>=9.5f) soma++; } } printf("\nTotal de Aprovados:%.2f\n",soma); break; case '4': soma=0; for(l=0;l<1;l++) { for(c=0;c<9;c++) { if(turma[l][c]<9.5f) soma++; } } printf("\nTotal de Reprovados:%.2f\n",soma); break; } }while(1); } a mim esta me apresentar os dados correctos Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
saritax Posted April 25, 2012 at 12:50 PM Author Report #451349 Posted April 25, 2012 at 12:50 PM Confirmado! Obrigado. Programa quase a 100%. 😉
saritax Posted April 25, 2012 at 01:05 PM Author Report #451353 Posted April 25, 2012 at 01:05 PM Obrigado a todos.. Já consegui colocar o programa a funcionar a 100% ! Cumps
pikax Posted April 25, 2012 at 01:15 PM Report #451355 Posted April 25, 2012 at 01:15 PM mete "topic solved" na parte inferior esquerda do topico Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
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