Ir para conteúdo
J.Pedro_OR

Como fazer um comando dentro do case para reiniciar o switch

Recommended Posts

Eu preciso fazer o sistema de uma urna eletrônica para um trabalho, e eu utilizei a estrutura de switch para fazer o menu de candidatos, e quero que o eleitor tenha a oportunidade de confirmar ou corrigir depois de escolher seu candidato. O problema é que eu não sei como fazer o switch reiniciar para que o eleitor possa escolher outro case, sendo que ele já havia selecionado um. Que é o que o botão "corrigir" faz. Segue o código produzido até agora:


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

int main(void) {

  int confirmar, corrigir, candidato, titulo;
  int maeli, antonio, lissandro, branco, nulo;
  int condicaoverdade=1;

  printf("Digite seu núemro de eleitor:");
  scanf("%d", &titulo);

  printf("Candidatos para Presidente: \n");
  
  printf("Sra. Maeli Gente Boa nº17 \n");
  printf("Sr. Antônio do Brasil nº22 \n");
  printf("Dr. Lissandro Progresso nº31 \n");
  printf("Digite 1 para branco \n");
  printf("Digite o número de um candidato não existente para votar nulo \n");
  scanf("%i",&candidato);

  while(condicaoverdade){

    switch(candidato){

    case 17:
      printf("Sra. Maeli Gente Boa nº17 \n");
      printf("aperte \"c\" para confirmar \n");
      printf("aperte \"r\" para corrigir \n");
      scanf("%i",&confirmar);
      if (confirmar == 'c' ){
        condicaoverdade = 0;
        maeli++;
        break;
      }
      else if (confirmar == 'r'){
        condicaoverdade = 1;
      }
      break;

    case 22:
      printf("Sr. Antônio do Brasil nº22 \n");
      printf("aperte \"c\" para confirmar \n");
      printf("aperte \"r\" para corrigir \n");
      scanf("%i",&confirmar);
      if (confirmar == 'c'){
        condicaoverdade = 0;
        antonio++;
      }  
      else if (confirmar == 'r'){
        condicaoverdade = 1;
      }
      break;

    case 31:
      printf("Dr. Lissandro Progresso nº31 \n");
      printf("aperte \"c\" para confirmar \n");
      printf("aperte \"r\" para corrigir \n");
      scanf("%i",&confirmar);
      if (confirmar == 'c' ){
        condicaoverdade = 0;
        lissandro++;
      }  
      else if (confirmar == 'r'){
      condicaoverdade = 1;
      }
      break;

    case 1:
      printf("branco \n");
      printf("aperte \"c\" para confirmar \n");
      printf("aperte \"r\" para corrigir \n");
      scanf("%i",&confirmar);
      if (confirmar == 'c' ){
        condicaoverdade = 0;
        branco++;
      }  
      else if (confirmar == 'r'){
      condicaoverdade = 1;
      }
      break;

    default:
    printf("nulo \n");
    printf("aperte \"c\" para confirmar \n");
    printf("aperte \"r\" para corrigir \n");
    scanf("%i",&confirmar);
    if (confirmar == 'c' ){
      condicaoverdade = 0;
      nulo++;
    }
    else if (confirmar == 'r'){
      condicaoverdade = 1;
    }
    break;
  
  }
  return 0;
}
}

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

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Rafael_Ferreira
      O primeiro código abaixo o form "Login" é o que tem a string na qual planejo resgatar, a string "user", que é da primeira tela do programa na qual o usuário tem que digitar um nome para acesso simultâneo ao banco de dados. E o form "Cadastro_Cliente", que é o form na qual eu vou utilizar a string resgatada, segundo código digitado abaixo. Este form  é posterior na qual eu cadastro os dados dos clientes. O problema é que ele só resgata o public string "user" ele não pega o valor "user = textBox1.Text" lá embaixo.
      -----------------------------------------------------------------------------------
       public partial class Login : Form
          {

              public string user;

              public Login()
              {
                  InitializeComponent();

              }

              private void Login_Load(object sender, EventArgs e)
              {

              }

              public void button1_Click(object sender, EventArgs e)
              {
               user = textBox1.Text;

                  if (String.IsNullOrEmpty(user) == false)
                      {
                      Form1 F1 = new Form1();
                      this.Hide();
                      F1.ShowDialog();
                      this.Close();
                  }

              }
          }
      }
        -------------------------------------------------------------------------------------
         public Cadastro_Cliente(string valorIdSelecionado)
              {
                 InitializeComponent();
                 Login login = new Login();

                 usuario = login.user;

                 login.Dispose();
       
      -------------------------------------------------------------------------------------
      O problema é que ele resgata o valor declarado acima no caso o valor "vazio" nulo da "public string user" o sistema não passa e "pega" o valor  no código abaixo "user = textBox1.Text" só passando o valor da "string" em sua declaração.
    • Por Good
      Boa noite, então... eu criei funções manuais para adicionar e remover contatos da agenda do google, tudo ok..
      O problema é o access_token que fica expirando. A minha dúvida é como evitar isto?
       
      A duração do token tem validade de 3600, e como uso algumas vezes durante o dia, o token fica expirando, e quando vou renovar aparece: stdClass Object ( [error] => invalid_grant [error_description] => Token has been expired or revoked. ) 
       
      Tentei criar uma função para renovar quando estiver perto de expirar fazer a renovação. É o resultado da mensagem acima!
       
      Aí pra atualizar o token, tenho que "fazer login" novamente e aí vou obter um token novo. Mas isso é incômodo demais pro sistema, e meus clientes não vão gostar, com certeza. E já vi um OUTRO serviço que o uso é frequente e não há necessidade de mandar o usuário para a página do google fazer "login novamente".
       
      Deu para entender? Quero continuar acessando a API do google, sem necessidade de ficar mandando o usuário para a página de login do google.
    • Por rtavix
      Pessoal, estou com problemas no meu insert ao inserir no banco: Essa é meu método de inserir:
       
      private static bool InsereDadosBanco(string CodProcInter,string CodBarra,string DtAgendamento,string VlrDocumento,string Protocolo,string Registro,string Emissao) { bool insert = false; using (DB db = new DB()) { try { VlrDocumento = SomenteNumerosPontosVirgula(VlrDocumento).Replace(",00",""); string SQL; DateTime data = Convert.ToDateTime(DtAgendamento); DateTime dataEmissao = Convert.ToDateTime(Emissao); SQL = "INSERT INTO sdpj_comprovante(COD_COMP, COD_PROC_INTER, COD_BARRAS, DAT_AGENDAMENTO, VLR_DOCUMENTO, NUM_PROTOCOLO, DSC_REGISTRO,DAT_EMISSAO)"; SQL += string.Format(@"VALUES(SDPJ_COD_COMP_SEQ.NextVal, '{0}', '{1}', 'TO_DATE('{2}', 'DD/MM/YYYY')', '{3}', '{4}', '{5}', 'TO_DATE('{6}', 'DD/MM/YYYY HH:MI:SS'))", CodProcInter, CodBarra, Convert.ToDateTime(DtAgendamento), VlrDocumento, Protocolo, Registro, Convert.ToDateTime(Emissao)); db.ExecutaComando(SQL); insert = true; InsertLog("\n Inserido -> ProcInter: " + CodProcInter + " Cód. Barra: " + CodBarra); } catch (Exception ex) { insert = false; } } return insert; }  
      Classe Db.
      public void ExecutaComando(string strQuery) { var cmdComando = new OracleCommand { CommandText = strQuery, CommandType = CommandType.Text, Connection = conexao }; cmdComando.ExecuteNonQuery(); }  
      esta retornando o erro:
      {"ORA-00917: vírgula não encontrada"}
    • Por rtavix
      Pessoal, boa tarde!
       
      Estou com problemas para lê os arquivos de um diretório, apresenta erro como se estivesse passando o caminho errado, porém não enxergo essa falha, alguém poderia me orientar?
      Aqui é aonde eu verifico a extensão do arquivo e informo o caminho:
      public static class LeituraTxt { static Thread _ThreadVerificacao; static string PastaArquivosPendentes = @"D:\Pendrive\PENDENTES"; static string PastaArquivosImportados = @"D:\Pendrive\IMPORTADOS"; static string PastaArquivoLog = @"D:\Pendrive\LogImportaComprovante"; public static void Ler() { //criação da thread de verificação e sua execução _ThreadVerificacao = new Thread(VerificarHorario); _ThreadVerificacao.Start(); } //irá verificar se deve ou não executar o método a cada 1 hora private static void VerificarHorario() { while (true) { if (DateTime.Now.Hour == 16) //Se for 07:00:00 horas da manhã { InsertLog(""); InsertLog("\n INICIO :: " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString()); try { DirectoryInfo dirPendentes = new DirectoryInfo(PastaArquivosPendentes); // lista arquivos do diretorio corrente foreach (FileInfo file in dirPendentes.GetFiles()) { if(file.Extension == ".cpv") { ProcessaArquivo(file.FullName, file.Name); } } } catch (Exception) { throw; } finally { InsertLog("\n FIM :: " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString()); } } Thread.Sleep(3600000); //3.600.000 milisegundos equivalem a 1 hora (Parado) } } }  
      Método para mover o arquivo:
      private static void MoveFile(string FileName) { try { PastaArquivosImportados += "\\" + FileName; PastaArquivosPendentes += "\\" + FileName; File.Move(PastaArquivosPendentes, PastaArquivosImportados); } catch (Exception) { throw; } } Método de inserir o log:
      private static void InsertLog(string linha) { //Cria Pasta de Log, Caso não exista if (!Directory.Exists(PastaArquivoLog)) { Directory.CreateDirectory(PastaArquivoLog); } //Cria Arquivo de Log, Caso não exista string FullPath = PastaArquivoLog+ "\\LogTexto.txt"; if (!File.Exists(FullPath)) { using (File.Create(FullPath)) ; } //Escreve no arquivo de LOG using (StreamWriter file = new StreamWriter(FullPath,true)) { file.WriteLine(linha); file.Dispose(); } }  
      Erro:
      System.IO.FileNotFoundException: 'Não foi possível localizar o arquivo 'D:\Pendrive\PENDENTES\CGc0001.cpv\CGc0360.cpv'.'
      Isso acontece que toda vez vou ler o próximo arquivo.
    • Por Rafael_Ferreira
      C# Mysql delete para deletar só um usuário especificado pelo sistema. Qual o erro do código abaixo? 
       
      "DELETE FROM clientes_cadastrados WHERE Codigo = '" + codigo + "' AND User = '" + usuario + "'; 
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.