Ir ao conteúdo
  • Cadastre-se

Não funciona a opção ''sim ou não'' em char!!


Wesleysh8

Posts recomendados

Olá pessoal, estou fazendo um programa que consta o seguinte objetivo, que seria fazer um cadastro de alunos. Eu tenho que fazer um menu para esses cadastros, e na primeira opção do menu que seria ''Cadastrar Aluno'', eu tenho que cadastrar no máximo 20 alunos e escolher o curso de cada um, e logo após o programa terá que perguntar para o usuário se ele deseja cadastrar mais um aluno, se ''sim ou não', é nessa parte que eu não estou conseguindo, quando eu escolho ''não'' o programa continua cadastrando os alunos, o que eu faço para poder corrigir isso e fazer com o que o programa pare de cadastrar quando eu desejar??

 

SEGUE A PROGRAMAÇÃO:

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

 

//Controle
int tela = 0;
int aluno = 0;
int cont = 0;
int l = 1;
int armaz = 0;

 

//Armazenamento de dados
char nomes[20][15];
int cursos[20];
float notasGA[20];
float notasGB[20];
char y[1];


void Relatorios(){    
    //Nome
    printf("Nome: %s \n", nomes[aluno]);
    
    //Curso
    if(cursos[aluno] == 1){
        printf("Curso: Engenharia Computacao\n");
    }    
    if(cursos[aluno] == 2){
        printf("Curso: Engenharia Civil\n");
    }
    
    //Notas
    printf("Nota GA: %f \n", notasGA[aluno]);
    printf("Nota GB: %f \n", notasGB[aluno]);
}

void DigitarNotas(){
    

}

 

//Cadastrar Aluno
void CadastroAluno(){
    do{    
        printf("Digite o nome do aluno %d: \n", l++);
        scanf("%s", &nomes[aluno]);
    
        printf("Escolha o curso do aluno: \n 1 - Engenharia de Computacao \n 2 - Engenharia Civil \n");
        scanf("%d", &cursos[aluno]);
        if(cursos[aluno] == 1){
            printf("Engenharia de Computacao \n");
        }
    
        if(cursos[aluno] == 2){
            printf("Engenharia Civil \n");
        }
    
        printf("Deseja cadastrar mais um aluno? (s/n)");
        scanf(" %c", &y);
        
        system("cls");
    }while((y != 'n') && (y != 'N'));
    armaz++;
    cont = cont + 1;    

 

}

void MenuPrincipal(){
    while(tela != 4){
        printf("CADASTRO DE ALUNOS E NOTAS - MENU PRINCIPAL\n");
        printf("Por favor, selecione uma opcao: \n ");
        printf("1 - Cadastrar Aluno \n");
        printf(" 2 - Digitar Notas \n");
        printf(" 3 - Relatorios \n");
        printf(" 4 - Sair \n");
        scanf("%d", &tela);
        
        system("cls");
        
        switch(tela){
            case 1:
                CadastroAluno();
            break;
                
            case 2:
                DigitarNotas();
            break;
            
            case 3:
                Relatorios();
            break;
            
        }        
    }

}

int main(int argc, char *argv[]) {
    MenuPrincipal();    
    return 0;
}

 

 

 

Link para o comentário
Compartilhar em outros sites

Não lhe é possível armazenar um string "sim" em eu char, se tentar a única letra que vai ser guardada será 's', o resto permanecerá no buffer e será liberada na seguinte vez que encontrar um scanf com outra char ou string, podendo causar falhos no seu programa. Ou você usa uma letra 's' para "sim" e 'n' para "não", ou você usa uma string conjuntamente com a função strcmp para comparar.

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