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 Yuri Fernandes da Silva
      Olá, sou um membro novo do fórum e estou estudando por conta a linguagem c++ pela internet..
       
      Durante meus estudos, me surgiu uma dúvida em relação ao conteúdo descrito no título desse fórum, mais especificamente com um compilador online (estudo no meu serviço, nos horários vagos)
       
      Essa foi a mensagem de erro que apareceu no compilador Online "C++ Shell":   In function 'int main()': 10:66: error: expected primary-expression before '<' token
       
      Esse foi o código que criei:
       
       
      //Exercício 
      #include <iostream>
      using namespace std;
      int main ()
      {
          int num;
          
          num=12;
          if ((num >=3 && num <=6) || (num > 9 && num < 15) || (num>15 && <20)) {
              cout <<"\n\nValor aceito\n";
          }else{
              cout <<"\n\nnao aceito\n";
          }
          return 0;
      }
       
       
      Agradeço desde já a atenção.
    • Por 11closed
      Olá Estou tentando fazer com que o loop, me ordene por ordem de qual 'cliente' comprou mais de determinadas frutas.
       
      Tenho a tabela 'compras' com os campos;
      ID
      ID_CLIENTE = mostra qual cliente fez a compra
      FRUTA = Mostra qual fruta foi comprada
      QTS_FRUTAS = mostra a quantidade de frutas compradas
       
      alguns preenchimentos dos campos da tabela 'compras' para exemplificar;
       
      ID ID_CLIENTE FRUTA QTS_FRUTAS 1 1 Banana 10 2 2 Goiaba 20 3 3 Pera 10 4 2 Goiaba 20 5 1 Banana 30 6 3 Melão 40 7 1 Banana 50 8 3 Banana 10 9 1 Melão 20 10 1 Goiaba 10  
      Como eu falei, eu gostaria que mostrasse por ordem de qual Cliente comprou mais de determinada fruta, nesse caso com a tabela de exemplo acima, como faço para o loop ficar na seguinte ordem
       
      ID_CLIENTE FRUTA QTS_FRUTAS 1 bananas 90 2 Goiabas 40 3 melão 40 1 Melão 20 1 Goiabas 10 3 Bananas 10 3 Pera 10  
      alguém poderia me ajudar, não estou conseguindo fazer esse LOOP rodar da maneira correta, não achei a solução.
    • Por Lincoln Ferreira de Jesus
      Olá, estou começando a aprender a linguagem c++ e eu gostaria de saber alguns exemplos de jogos feitos com puro c++ sem engine nem nd. Pra eu ter uma noção de quanto um desenvolvedor vai sem usar uma engine =) obrigado.
    • Por EduardoLenz
      Olá, pessoal,
       
      Mexo com microcontroladores, antigamente com PIC e agora com ARM (plataforma LPCXpresso). 
      Ambos utilizam a linguagem C. 
       
      Meu problema é o seguinte: Preciso converter um caractere que vem da UART (porta de comunicação). No PIC havia uma função pronta para tal, no ARM não. 
       
      O caractere chega assim, por exemplo: P123 (tudo junto), e eu queria separar em:
      dado_recebido[]={'P', '1', '2', '3'}; 
      Para poder utilizar um switch 
      switch(dado_recebido[0])
      {
      case 'P':....
      }
       
      alguém tem alguma ideia de como posso fazer a conversão? 
       
      Agradeço desde já. 
    • Por lucas.sardelari
      Olá
      Estou tendo um problema ao compilar uma biblioteca no Android Studio pelo NDK Quando executo o comando ndk-build, um problema é lançado:
       
      Android NDK: Found platform level in ./project.properties. Setting APP_PLATFORM to android-19. Android NDK: WARNING: APP_PLATFORM android-19 is higher than android:minSdkVersion 1 in ./AndroidManifest.xml. NDK binaries will *not* be compatible with devices older than android-19. See https://android.googlesource.com/platform/ndk/+/master/docs/user/common_p roblems.md for more information. [arm64-v8a] Compile : FerrugemLib <= FerrugemLib.c In file included from jni/FerrugemLib.c:15: In file included from jni\CL/cl.h:32: jni\CL/cl_version.h:34:9: warning: cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2) [-W#pragma-messages] #pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)") ^ jni/FerrugemLib.c:346:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ jni/FerrugemLib.c:535:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ jni/FerrugemLib.c:733:25: warning: 'clCreateCommandQueue' is deprecated [-Wdeprecated-declarations] openCLObjects->queue = clCreateCommandQueue(openCLObjects->context, openCLObjects->device, 0, &err); ^ jni\CL/cl.h:1760:72: note: 'clCreateCommandQueue' has been explicitly marked deprecated here cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; ^ jni\CL/cl_platform.h:91:70: note: expanded from macro 'CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED' #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED __attribute__((deprecated)) ^ jni/FerrugemLib.c:839:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ jni/FerrugemLib.c:944:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ jni/FerrugemLib.c:1977:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ jni/FerrugemLib.c:2034:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ 8 warnings generated. [arm64-v8a] SharedLibrary : libFerrugemLib.so C:/Android/Sdk/ndk-bundle/build//../toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64/lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin\ld: cannot find OpenCL: No such file or directory clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [obj/local/arm64-v8a/libFerrugemLib.so] Error 1 Meu Android.mk
      LOCAL_PATH := $(call my-dir)
      LOCAL_C_INCLUDES += PATH_TO_CL_FOLDER
       
      include $(CLEAR_VARS) LOCAL_MODULE := decodeYUV420SP LOCAL_SRC_FILES := decodeYUV420SP.c LOCAL_LDLIBS := -llog -ljnigraphics include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := FerrugemLib LOCAL_SRC_FILES := FerrugemLib.c LOCAL_LDLIBS := -lOpenCL LOCAL_LDLIBS += -llog -ljnigraphics LOCAL_ALLOW_UNDEFINED_SYMBOLS := true include $(BUILD_SHARED_LIBRARY) APP_OPTIM := debug LOCAL_CFLAGS := $(call my-dir) Alguem poderia ajudar em como eu conseguir fazer dar o build com este comando: -lOpenCL
      Me propuseram a trocar o -lOpenCL por -framework OpenCL porem sem sucesso.
      Obrigado.
×

Informação importante

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