Jump to content

case??? if??? dúvidaaa


Recommended Posts

Posted

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 😉

Posted

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

Posted

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!

Posted

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

Posted

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!

Posted

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

Posted

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

Posted

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

Posted

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

Posted

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

Posted
#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."

Posted

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.