Ir ao conteúdo
  • Cadastre-se

Algoritmos - uso do switch


Mateus Nunes

Posts recomendados

#include <stdio.h>
#include <locale.h>
#include <math.h>
main()
{
char name[20];
float Ga,Gb,Gc,Gf,Gfa,Gfb;
int faltas,F,option;


setlocale(LC_ALL,"portuguese");
printf("\t\t\tNotas e Faltas - Critério UNISINOS\n\n");
printf("Digite seu nome: ");
scanf("%s",&name);
fflush(stdin);
system("cls");
printf("\t\t\Aprovação Com Base nas Faltas Semestrais\n\n");
do{
printf("\nInforme o número atual de faltas no semestre (períodos): ");
scanf("%d",&faltas);
if (faltas>=0 && faltas<8)
{F=8-faltas;
 printf("\nVocê ainda pode faltar %d períodos.\n",F);
 printf("Mas tenha cuidado para não reprovar devido a isso!\n\n");}
else
{if (faltas==8) {printf("\nVocê não pode mais ter faltas.\n");
                 printf("Tenha cuidado para não reprovar devido a isso\n\n");}
else
{if (faltas>8 && faltas<18)
 {printf("Você reprovou por excesso de faltas.\n");
  printf("Tenha mais cuidado no próximo semestre!");}
else
{printf("Número de faltas inválido.\n");
 printf("Tente novamente!");
  }//Fim do terceiro else
 }//Fim do segundo else
}//Fim do primeiro else
}while (faltas<0||faltas>18);


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
system("pause");
system("cls");
printf("\t\t\t\Cálculo das Notas dos Graus\n\n");
printf("\nInforme a nota do Grau A (GA): ");
scanf("%f",&Ga);
printf("\nInforme a nota do Grau B (GB): ");
scanf("%f",&Gb);
Gf=(Ga+2*Gb)/3;
if (Gf>=6)
{printf("\n\nSeu grau final é: %.2f. Parabéns você foi aprovado!\n\n",Gf);}
else
{ printf("\nSeu grau final é: %.2f. Você não atingiu a média e terá que realizar o Grau C\n",Gf);
  printf("\nInforme o grau a ser substituido: \n\n");
  printf("\n1-Ga");
  printf("\n2-Gb\n");
  fflush(stdin);
  printf("\nOpção: ");
  scanf("%c",&option);
  system ("cls");}

switch (option)
{case '1-Ga':  printf("Digite a nota da prova do GC: ");
             scanf("%f",Gc);
             Gfa=(Gc+2*Gb)/3;
             if (Gfa>=6)
            {printf("Você atingiu a média e foi aprovado. Parabéns, seu grau final, após recuperação, é %f!",Gfa);}
             else
            {printf("Seu grau final, após recuperação, é %f.\n",Gfa);
             printf("Você não atingiu a média e terá que repetir a disciplina no próximo semestre!");}
 break;
 case '2-Gb': {printf("Digite a nota da prova do GC: ");
              scanf("%f",Gc);
              Gfb=(Ga+2*Gc)/3;}
              if (Gfb>=6)
             {printf("Você atingiu a média e foi aprovado. Parabéns, seu grau final, após recuperação, é %f!",Gfb);}
              else
             {printf("Seu grau final, após recuperação, é %f.\n",Gfb);
              printf("Você não atingiu a média e terá que repetir a disciplina no próximo semestre!");}

}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Boa tarde! Alguém tem como me dizer porque meu código não passa do MENU (option - n1 ou n2)??? Além disso, neste projeto, o programa deverá permitir a execução para qualquer quantidade de alunos e esta quantidade deverá ser escolhida pelo usuário. Mais ainda, feito isso, o programa deverá mostrar a média do Grau A, a média do Grau B e a média do Grau Final da turma, como eu faria isso se algumas pessoas terão seu grau final na variável Gf enquanto outros terão nas Gfa e Gfb? Agradeço, desde já, a atenção!

Link para o comentário
Compartilhar em outros sites

los switchs não funcionan com strings '1-Ga' <- isso é errado. você só pode usar números1, 2, 3... ou letras 'a', 'b', 'c'.... Se quiser usar strings melhor usa if + strcmp em strings tipo C. Se for C++ junto com a classe string pode fazer diretamente if("isso" == "aquilo")...

se você fizer algo como char letra = '1-Ga' sabe adivinhar que valor vai guardar letra? >_< Ta vai... vou dizer. Toma 'a', é a ultima letra. Isso acontece... se seu compilador não deu erro é como comparar um int com um char. Algo descabelado admito hehe.

você pode fazer algo como o seguinte código usando defines:

#include<stdio.h>
#define Ga_1 1
#define Ga_2 2

int main(){
    int opcao = 1;
    
    switch (opcao) {
        case Ga_1:
            printf("1-Ga");
            break;
        case Ga_2:
            printf("2-Ga");
            break;
        default:
            break;
    }
    
    return 0;
}

Ou também usando enunciados:

#include<stdio.h>


int main(){
    int opcao = 1;
    enum opções { Ga_1=1, Ga_2 };
    
    switch (opcao) {
        case Ga_1:
            printf("1-Ga");
            break;
        case Ga_2:
            printf("2-Ga");
            break;
        default:
            break;
    }
    
    return 0;
}

Como mais gostar.

Mas lembre que se quiser comparar strings melhor use if.

Citação

Além disso, neste projeto, o programa deverá permitir a execução para qualquer quantidade de alunos e esta quantidade deverá ser escolhida pelo usuário.

você pode usar arrays de tamanho variavel(VLA) disponivel suportado oficialmente no padrão C99 e opcional no padrão c11, não suportado no padrão c90.

Um exemplo retirado de: https://en.wikipedia.org/wiki/Variable-length_array

float read_and_process(int n)
{
    float vals[n];

    for (int i = 0; i < n; i++)
        vals[i] = read_val();
    return process(n, vals);
}

O caso é que você pode ler um int n e depois criar um int array[n] com os padrões c99, e C11(opcional). Caso contrario comece a aprender a usar memória dinâmica já. Busque um bom vídeo de YouTube e a trabalhar! >_<
 

Citação

feito isso, o programa deverá mostrar a média do Grau A, a média do Grau B e a média do Grau Final da turma, como eu faria isso se algumas pessoas terão seu grau final na variável Gf enquanto outros terão nas Gfa e Gfb? Agradeço, desde já, a atenção!

 você precisa de um array de estruturas. Crie uma estrutura com os dados do aluno tipo: char name[20], float Ga, float Gb, float Gc, float Gf, float Gfa, float Gfb, int faltas, etc e depois crie um array de structs
Algo como:
structs Aluno{
char name[20];
float Ga,Gb,Gc,Gf,Gfa,Gfb;
int faltas;

};

Dai você cria um array VLA de n Alunos:
int n;
scanf("%d%*c", &n);
struct Aluno aluno[n];

dai você tem n numero alunos e você pode acessar qualquer dado de um aluno tipo:
Supondo que você tenha um array de 10 alunos.
aluno[0].Ga = 9.5;
Aluno[9].Gb = 5.0;

você poderá usar laços para processar todos os alunos.


 

 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...