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 arcsaraiva
      Olá, estou iniciando em c++ e estou tentando ajustar um código que não está rodando como deveria. Tenho uma função com os seguintes comandos:
      bool padrao[20]; int contador = 0; padrao[0] = padrao[1] = padrao[5]= padrao[13] = 1; //ou esta linha não funciona if (padrao[contador] != 1){ //ou esta, pois o resultado cout << "dentro if" << contador << endl; contador++; } else { cout << "no else" << contador << endl; contador++; } Reparem que eu preciso do array com 20 índices, porém só os declarados são usados. Ao executar este código, dentro if aparece nos índices 0,1, 2, 5, 8, 9, 10,13,16,... e o no else nos índices 3,4,6,7,11,12,14,15, ... Poderiam me auxiliar?
    • Por dudaperrut
      meu programa esta dando falha de segmentação nessa função. 
       
      Uma função que recebe dois vetores, o seu tamanho e uma variável ponteiro. A função deve achar o maior elemento do vetor v1 e o menor elemento do vetor v2. A função deve retornar o valor do maior elemento de v1.
      void *MaiorMenor (float *vet1, float *vet2, int tam, float *maior) { float *menor; int i; maior = (float*)malloc(tam * sizeof(float)); for(maior=0; maior<tam; maior++) { for(i=0; i<tam; i++) { if(*(vet1+(tam-i-1)) > *maior) { *maior = *(vet1+(tam-i-1)); } } } menor = (float*)malloc(tam * sizeof(float)); for(menor=0; menor<tam; menor++) { for(i=0; i<tam; i++) { if(*(vet2+(tam-i-1)) < *menor) { *menor = *(vet1+(tam-i-1)); } } } return (maior); }  
    • Por Roberto Paes
      System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; startInfo.FileName = "cmd.exe"; startInfo.Arguments = "/C start copy " + Application.StartupPath + @"\launcher\Sanchez.Patcher.exe " + Application.StartupPath; process.StartInfo = startInfo; process.Start(); Oi pessoal, Boa noite. Me chamo Roberto e estou tendo problemas em usar o cmd com o c#. O meu código funciona perfeitamente, mas eu não consigo ocultar a janela do cmd. Bom, apresentado o meu problema. Espero que possam me ajudar.
       
       
    • Por avner.max
      Preciso desenvolver um simulador de cache, onde eu consiga testar o desempenho de algoritmos de ordenação (Quick sort, Selection sort e Bubble sort) em relação a memória cache e imprimir a taxa de Cache Miss e Cache Hit de leitura e gravação de cada um dos três algoritmos.
      Minha dúvida é, como fica o algoritmo de ordenação nesse caso?
       
      São passados para a escolha do usuário os seguintes dados: Quantidade máxima de palavras na cache (tamanho da cache), quantidade de palavras por bloco, tipo de mapeamento, tipo de associatividade, política de substituição e política de escrita.
      Preciso fazer o algoritmo de ordenação cumprir cada um deles, quando for ler/gravar no vetor que representa a cache e no vetor que representa a memória. Porém não estou conseguindo imaginar como deve ficar o algoritmo de ordenação.
       
      Se alguém puder me dar uma luz, iria ficar muito agradecido!
      Grande abraço a todos.
    • Por Rodrigo Ferreira Santos
      Salve senhores, estou precisando da ajuda dos mestre eu preciso fazer  um while onde tenho uma lista de 10000 email e com isso preciso que ele envie 20 pare por 2 segundo envie mais 20 e assim por diante ja pesquisei em tudo e nao achei nada, ja testei com sleep mas ele nao conta quanto envios foram feito e pela velocidade da rede pode sair bem mais que 20 !!
      Alguem pode me dar um sugestao, vou pegar os email de um arquivo texto !!!
       
       
×

Informação importante

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