Ir para conteúdo
enzofornetti

Ajuda em loop, c++

Recommended Posts

Olá pessoas. Estou começando em programação, c++. Fui tentar realizar um loop em uma programação antiguinha minha. Mas, no final, o programa não "usa" o scanf e volta para o começo. Podem me dizer o problema? Já agradeço a paciência aushuahs

 

 

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

int main()
{
    float v;
    float i;
    float r;
    char op,ob;
    int banana = 1;
    
    while(banana = 1)
    {
    
    printf("Eae meu brother, o que deseja calcular?\n\nCorrente - digite 'i' e pressione Enter\nDDP - digite 'v' e pressione Enter\nResistencia - digite 'r' e pressione Enter\n");
    scanf("%c",&op);
    
    if(op == 'v')
    {
        printf("Resistencia: ");
        scanf("%f", &r);
        
        printf("Corrente: ");
        scanf("%f", &i);
        
        v=r*i;
        
        printf("DDP: %0.8f",v);
        
        printf("\nEletro > Info > Mecanica");

    }
    else
    {
        if(op == 'i')
        {
            printf("DDP: ");
            scanf("%f",&v);
            
            printf("Resistencia: ");
            scanf("%f",&r);
            
            i=v/r;
            
            printf("Corrente: %0.8f",i);
            printf("\nEletro > Info > Mecanica");
        }
        else
        {
            if(op == 'r')
            {
                printf("Corrente: ");
                scanf("%f",&i);
                
                printf("DDP: ");
                scanf("%f",&v);
                
                r=v/i;
                
                printf("Resistencia: %0.8f",r);
                printf("\nEletro > Info > Mecanica");
             
            }
            else
            {
                printf("Brother, recomece");
            }
        }
        
    }
    printf("\n\nDeseja calcular novamente?\n\nn - Nao\ns - Sim\n");
    scanf("%c",&ob);
    
    if(ob == 's')
    {
        banana = 1;
    }
    else
    {
        banana = 2;
    }
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

No scanf, quando você digita um caracter, como "i" e preciona enter, você está mandando 2 caracteres, i e \n ("carrige return"), então no scanf é só descartar o \n adicionando um espaço 

 

scanf(" %c", &op);

E o teste do seu loop tem que corrigir com banana == 1, porque senão banana sempre será 1.

Bons estudos!

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 Luis Febro
      Olá, estou tendo dificuldade em fazer a iteração comparando os valores das propriedades do objeto:
       
      let accessories = {bike: ["helmet", 'glasses', "gloves", "smartwatch"], apps: ["Google Maps", "Anki"]};       let compareItems = function(obj, analysedThing) {         let res = "";         Object.entries(obj).map(function(ìtems) {           if (ìtems[1].indexOf(analysedThing) > -1) {              res = ìtems[0];             document.getElementById("quickCode").innerHTML = `it was found ${analysedThing} in the section ${res}`;           } else {             document.getElementById("quickCode").innerHTML = "Nothing was found. Try another item!";           }         });       };       compareItems(accessories, "glasses");  
      Output: Nothing was found. Try another item! // Mas tem sim na primeira propriedade. Se busco algum valor em apps, por outro lado, ele acha para mim. Mas não em bike.
      Alguém pode me orientar para buscar todos os valores e retornar a propriedade correspondente? Grato.
    • Por LucasCBSouto
      Pessoal, estou com dificuldades na solução deste problema:  
       
      Seja um número N natural maior ou igual a 1. Fazer um algoritmo que calculo S = 1 + 1/2+ 1/3 + 1/4 + ... + 1/N.
       
      Meu código está assim:
       
      #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int i, n; float soma; print("Entre com n: "); scanf("%d", &n); soma = 0; { for (i=1; i<=&n; i++) soma = soma + (1/i); } printf("\n O somatorio das fracoes eh: %f", soma); }  
      Alguém pode me dizer por que não funcionando? O que deve mudar ou o que falta inserir?
       
      Solução:
      https://forum.imasters.com.br/topic/316721-resolvido soma-com-fração/
    • Por Marcelobpc
      Boa tarde pessoal,
      estou tendo muita dificuldade para criar um algoritmo que eu entre com um numero de 0 a 100 e ele me informe quantos números pares tem no intervalo do numero que digitei até 0 e caso o numero digitado for maior que 100 ele solicite que seja digitado o numero de 0 a 100 novamente.
    • Por roberto de souza gomes
      boa noite pessoal, eu sou estudante de ADS , e sou novo na programacao, estou desenvolvendo 
      um sistema para um trabalho final do curso, um sistema de controle de entrada e saida de usuarios,
      mas nele esta acontecendo um erro, quando eu digito um numero de uma cadeira que ja esta comprada
      ele aceita, estou vendo e revendo o codigo  mas nao vejo erro.
      alguem pode apontar o meu erro?
      obrigado, segue o codigo:
       
      #include <stdio.h>
      #include <time.h>
      #include <stdlib.h>
      #define linha 11
      #define coluna 11
      #define valor_minimo 29
      #define valor_maximo 121
      int valida(int num, int *ant, int cont);
      void edita (int sort,int cont);
      void chamaSorteio();
      void CadeiraNum();//declara a funcao que preenche os lugares com numeros
      void painel();//declara a funcao que mostra a matriz
      void compra();//declara a funcao que faz a compra dos lugares
      void cad();
      int resp;
      int matriz[linha][coluna];//
      FILE *ponteiroArquivo;   
      struct cadastro{
          char nome [50];
          char cpf [15];
          char email [30];
          };
           struct cadastro aux;
      int main(){
          int opcao=0;
          int contador=0,lugares=92;
          char nomes[30];
          char timeStr[9];
          
          struct tm *data_hora_atual;
          time_t segundos;
          time(&segundos);
          data_hora_atual = localtime(&segundos); 
          
          CadeiraNum(matriz);//aqui complementa a funcao cadeiraNum(); colocando os numeros.
          
          do{
              //a partir daqui e mostrado para o usuario as opcoes do programa principal
               system("cls"); 
               printf("\n\n                      MENU  \n\n");      
               printf("                  1- Reservar Cadeira       (Ainda restam (%d) lugares)\n",lugares-contador);        
               printf("                  2- Mostrar Painel de lugares\n"); 
               printf("                  3- Sorteio\n");       
               printf("                  4- SAIR           \n");        
               printf("                   opcao: ");
               scanf("%d",&opcao);               
                             
           switch(opcao){
              case 1:
                system("cls");          
                //cad();
               // getch();
                system("cls"); 
                painel(matriz);//antes de escolher o lugar antes e chamado a matriz e o usuario pode ver o painel, inclusive com os lugares do teatro comprados atualizados.
                texto:
                printf("\n\nDigite o numero da cadeira desejada: \n");
                scanf("%d",&resp);
                 
                if ((resp<=0) || (resp>=122)){  
                    printf("Esta cadeira não existe!!!Escolha outra!\n");
                    goto texto; 
                  getch();              
              }else if ((resp>=1) && (resp<=22)){  
                    printf("Esta cadeira ja esta reservada!!!Escolha outra!\n");
                    goto texto; 
                  getch();              
              }
              else if ((resp>=23) && (resp<=28)){  
                    printf("Esta cadeira é preferencial!!!Escolha outra!\n");
                    goto texto; 
                  getch();              
              }else if (matriz[linha][coluna]==0){
                  printf("Esta cadeira esta ocupada!!! Escolha outra!\n");
                  goto texto;
                  getch();
              }
              else (printf(" \n"));
                 ponteiroArquivo=fopen("arquivo.txt","r"); 
                fgets(nomes,30,ponteiroArquivo);
                
                fclose(ponteiroArquivo);
                system("cls"); 
                
               _strtime( timeStr );
                printf_s( "\tParabens %s pela sua compra no dia %d/%d/%d as %s \n\nSeu ticket sera enviado por e-mail!!\n",aux.nome, data_hora_atual->tm_mday,data_hora_atual->tm_mon+1,data_hora_atual->tm_year+1900,timeStr);
                  printf("seu assento e %d\n",resp);
                  contador++;
                system("pause");         
                break;
              
              case 2:
                system("cls");
                system("cls");
                painel(matriz);//chama a funcao painel que contem a matriz 
                printf("\n\n");
                system("pause");
                break;
                
              case 3:
                system("cls");
                chamaSorteio();
                system("pause");
                break;
                
              //o usuario escolhendo este caso o programa retorna nada e fecha
              case 4:
                return 0;
                break;
                   
              default:
                  printf("OPCAO INVALIDA!!!\n");
                  system("pause");
              break;
           }
        }while(1==1); 
        
          
      system("pause");    
      return(0);
      }
      //esta e a funcao responsavel por preencher todos os lugares do teatro com numeros!
      void CadeiraNum(){
          int c,l;
          int num;
          num=1;
          
          for(l=1;l<=linha;l++)
           for(c=1;c<=coluna;c++){      
           matriz[l][c]=num;
             num++; 
          }
          matriz[3][1]=333; 
          matriz[3][2]=333;
          matriz[3][3]=333;
          matriz[3][4]=333;
          matriz[3][5]=333;
          matriz[3][6]=333;
          /**/
          matriz[1][1]=222; 
          matriz[1][2]=222;
          matriz[1][3]=222;
          matriz[1][4]=222;
          matriz[1][5]=222;
          matriz[1][6]=222;
          matriz[1][7]=222;
          matriz[1][8]=222;
          matriz[1][9]=222;
          matriz[1][10]=222;
          matriz[1][11]=222;
          /**/
          matriz[2][1]=222;
          matriz[2][2]=222;
          matriz[2][3]=222;
          matriz[2][4]=222;
          matriz[2][5]=222;
          matriz[2][6]=222;
          matriz[2][7]=222;
          matriz[2][8]=222;
          matriz[2][9]=222;
          matriz[2][10]=222;
          matriz[2][11]=222;   
      }
      //esta e a funcao que cria as linhas e as colunas do teatro matriz
      void painel(){
        
        int c,l;
        printf("\n            PAINEL DE OCUPACOES   \n\n");
        printf("          ");
         
        
        for(c=1;c<=coluna;c++)
          printf("\t%d",c);
        
        for(l=1;l<=linha;l++){
           printf("\n\n\t%d",l);
           for(c=1;c<=coluna;c++)
           
             
          if(matriz[l][c]==222){
               printf("\t(R)");
           }else if(matriz[l][c]==resp){
               matriz[l][c]=0;
               printf("\t(C)");
           }else if(matriz[l][c]==0){
               printf("\t(c)");
           }
           else if(matriz[l][c]==333){
               printf("\t(P)");
           }     else printf("\t(%d)",matriz[l][c]);
                  
        }
          printf("\n\n\t(29-121) - LUGAR LIVRE    (p) - Assento preferencial   (C) - CADEIRA JA COMPRADA   (R) CADEIRA RESERVADA\n");

      //funcao que marca no lugar escolhido o valor 0 guardando o lugar 
      /*void compra(int l, int c){
        
        
        if(resp==matriz[linha][linha]){
          matriz[linha][coluna] = 0;
      }
      } */
      void cad(){
          
          ponteiroArquivo=(fopen("arquivo.txt","a")); // "a"  - cria um arquivo novo, ou modifica um ja existente.
          getchar();
          printf("\t\tSEJA BEM VINDO AO TEATRO DA UNIP!!\n\n");
          printf("Antes de comprar a cadeira vamos fazer um breve cadastro........\n\npresssione ENTER para continuar......\n\n\n");
          getch();
          printf("Digite seu nome: ");
          fgets (aux.nome, 50 ,stdin);
          getchar();
          printf("Digite seu CPF: ");  
          fgets (aux.cpf, 15 ,stdin);
          getchar();
          printf("Digite seu Email: ");
          fgets (aux.email , 30 ,stdin);
          //gravando com fprintf no arquivo
          printf("\n");
          
          fprintf(ponteiroArquivo, "\n------------------------\n");
          fprintf(ponteiroArquivo,"nome: %s\n",aux.nome);
          fprintf(ponteiroArquivo,"CPF: %s\n",aux.cpf);
          fprintf(ponteiroArquivo,"Email: %s\n",aux.email);
          fclose(ponteiroArquivo);//fecha o arquivo
      }
      void chamaSorteio(){
          int i;
          int sorteados[4];
          
          srand(time(NULL));
          
          printf("---------|SORTEIO\n\n");
          
          for(i=0;i<4;i++){
              sorteados = valor_minimo+rand()%(valor_maximo-valor_minimo);
              if(i==0){
                  edita(sorteados,i);
              }
              else {
                  sorteados = valida(sorteados,sorteados,i);
                  edita(sorteados,i);
              }
          }
          printf("------------------------------------------");
              getch();
              printf("\nParabens a todos os premiados!!\n\n");
              getch();
      }
      int valida(int num, int *ant, int cont){
          int aux;
          
          for(aux=0;aux<cont;aux++){
              while(num==*(ant+aux)){
                  num=valor_minimo+rand()%(valor_maximo-valor_minimo);
              }        
          }
          return num;
      }
      void edita (int sort,int cont){
                  
              printf("\t%d°premiado usuario da caderia : %.2d\n",cont+1,sort);        
              
      }
    • Por matheus1302
      Alguem tem um programa em C que faça isso ou me de uma luz consegui fazer do infixa para posfixa mais nao consegui o contrario.
       
×

Informação importante

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