Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Ajuda com codigo C

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C / C++ Ajuda com codigo C

    tou precisando uma ajuda com um codigozinho em C é muito iniciante , comecei ontem a aprender para alguns isto é super básico pra mim é uma dor de cabeça . é o seguinte o código:

    #include <stdio.h>
    #include <stdlib.h>
    {
    char letra, opcao;


    printf("Queres um gelado com sabor a que?");
    printf("\n (a) sabor a chocolate");
    printf("\n (b) sabor a morango");
    printf("\n (c) sabor de framboesa");
    printf("\n (d) sabor a ananas");
    printf("\n Escreva a letra do gelado que quer: ");
    scanf("%c",&letra);

    switch(letra)
    {
    case 'a':
    printf(" E 1$ euro o de chocolate");
    break;


    case 'b':
    printf(" E 1.5$ o sabor a morango");
    break;

    case 'c':
    printf(" O sabor a framboesa eh 0.5$");
    break;

    case 'd':
    printf("\n\n Gelado de ananas 5$");
    break;
    }

    printf("\n\nVais pagar? pressione s(im) ou n(ao): ");
    scanf("%c",&opcao);
    switch(opcao)
    {
    case 's':
    printf("Obrigado volte sempre.");
    break;

    case 'n':
    printf("Too rich for my blood.");
    break;
    }

    return 0;





    system("pause");



    }

    ele faz a primeira pregunta mas quando vai a preguntar se vai pagar ou não ele fecha-se automaticamente n sei porque, se podessem me ajudar agradeciria.

  • Font Size
    #2
    Oi amigo, tudo bom?
    Para resolver o problema é só colocar um getchar() antes da segunda pergunta, ficando assim:
    Código:
    getchar();
    printf("\n\nVais pagar? pressione s(im) ou n(ao): ");
    scanf("%c",&opcao);
    A explicação para isso é muito simples. O que você faz para inserir o primeiro valor? Você coloca o valor e dá ENTER. Só que o ENTER é ele também um carácter. Então quando chega na segunda pergunta e pede para ele ler o segundo valor ele vai ler o ENTER que você deu, por isso o programa não espera você escolher a opção. O que o getchar() faz é exactamente ler esse ENTER.
    “Finalmente encontrei um inimigo digno de mim e uma jornada em que preciso desenvolver toda a minha coragem, pois temos de combater homens bravos e monstruosas feras.”, Alexandre, o Grande.

    Comment


    • Font Size
      #3
      obrigado pela ajuda

      Comment


      • Font Size
        #4
        Postado Originalmente por Alexp_2 Ver Post
        tou precisando uma ajuda com um codigozinho em C é muito iniciante , comecei ontem a aprender para alguns isto é super básico pra mim é uma dor de cabeça . é o seguinte o código:

        #include <stdio.h>
        #include <stdlib.h>
        {
        char letra, opcao;


        printf("Queres um gelado com sabor a que?");
        printf("\n (a) sabor a chocolate");
        printf("\n (b) sabor a morango");
        printf("\n (c) sabor de framboesa");
        printf("\n (d) sabor a ananas");
        printf("\n Escreva a letra do gelado que quer: ");

        fflush(stdin); <-------- Limpa o Buffer do teclado, isto resolve problemas de entrada de dados

        scanf("%c",&letra);

        switch(letra)
        {
        case 'a':
        printf(" E 1$ euro o de chocolate");
        break;


        case 'b':
        printf(" E 1.5$ o sabor a morango");
        break;

        case 'c':
        printf(" O sabor a framboesa eh 0.5$");
        break;

        case 'd':
        printf("\n\n Gelado de ananas 5$");
        break;
        }

        printf("\n\nVais pagar? pressione s(im) ou n(ao): ");

        fflush(stdin); <-------- Limpa o Buffer do teclado, isto resolve problemas de entrada de dados
        scanf("%c",&opcao);

        switch(opcao)
        {
        case 's':
        printf("Obrigado volte sempre.");
        break;

        case 'n':
        printf("Too rich for my blood.");
        break;
        }

        return 0;





        system("pause");



        }

        ele faz a primeira pregunta mas quando vai a preguntar se vai pagar ou não ele fecha-se automaticamente n sei porque, se podessem me ajudar agradeciria.
        Antes de fazer um scanf é muito interessante forçar a limpeza do buffer do teclado, você vai ver que o seu código vai se comportar bem.

        t+

        Comment


        • Font Size
          #5
          Você pode também utilizar em alguns casos algo mais elaborado

          Tive muito problema para tratar a entrada de strings

          Ex:

          char nome[80];

          scanf(%s",nome);
          ou
          scanf("%s",&nome[0]);


          Resolução

          scanf("\n%[^\n]",nome);


          Esta é uma dica que pode salvar muita gente.

          Comment


          • Font Size
            #6
            Nesse mesmo arquivo que o alexp enviou estou tendo problema na linha 3 (error: expected indentifier or '(' before '{' token)... como eu resolvo esse problema?

            Comment


            • Font Size
              #7
              Não recomendo usar fflush(stdin), da documentação:
              "effect undefined for input stream"
              system("pause") também não, já que pode ter comportamento arbitrario.
              Vai de getchar ou scanf("%*c");

              Comment

              X
              Working...
              X