Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Wesleysh8

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

Recommended Posts

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;
}

 

 

 

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×