Ir ao conteúdo
  • Cadastre-se

Endmmans

Membro Pleno
  • Posts

    371
  • Cadastrado em

  • Última visita

posts postados por Endmmans

  1. @arfneto @arfneto

    float metragem_limpeza() {
      float met;
      
      while(1) {
        printf("Entre com a metragem da casa: \n");
        float ret_scanf = scanf("%f", &met);
        if (ret_scanf != 1) { //Verifica se o valor de scanf deu certo.
          printf("Só são aceitos valores numéricos. Tente novamente.\n");
          while (getchar() != '\n'); //Limpa o buffer do teclado.
          continue;
        }
        
        if (met<30 || met>700) {
          printf("Não aceitamos casas com menos de 30m² ou mais de 700m². Sentimos muito.\n");
          return 0;
        }
    
        if (met<=300) {
          return 60+0.3*met;
          
        } return 120+0.5*met;
    
        
      }
        
    } 

     

  2. @arfneto Se me chamarem pra um estágio já agora você acha que devo aceitar ou recusar por enqto com base no que você viu?

    @arfneto Eu não tinha entendido alguns conceitos que você me disse e dei uma pesquisada. Adicionei os detalhes ao programa que compreendi.

    #include <stdio.h>
    #include <stdlib.h>
    
    float metragem_limpeza();
    float metragem_limpeza_b();
    float tipo_limpeza();
    float adicional_limpeza();
    
    //Programa principal
    int main() {
      
      printf("Bem-vindo ao programa de Serviços de Limpeza CleanUp.\n**************************************************************************\n----------------------Menu 1 de 3 - Metragem Limpeza----------------------\n");
      float metragem = metragem_limpeza();
      if (metragem ==0) {
        return 0;
      }
      printf("O valor retornado foi de %g\n", metragem); //Verificar se o valor calculado está correto
    
      printf("**************************************************************************\n------------------------Menu 2 de 3 - Tipo Limpeza------------------------\n");
      float tipo = tipo_limpeza();
      printf("O valor retornado foi de %g\n", tipo); //Verificar se o valor calculado está correto
    
      printf("**************************************************************************\n-------------------Menu 3 de 3 - Adicional de Limpeza---------------------\n");
      float adicional = adicional_limpeza();
      printf("O valor retornado foi de %g\n", adicional); //Verificar se o valor calculado está correto
    
      float resultado=metragem*tipo+adicional;
      printf("O valor final foi de R$%g\n", resultado);
    
      return 0;
    
    }
    
    //Função que retorna o valor calculado da limpeza pela metragem. Não aceita valores menor do que 30 ou maior do que 700.
    float metragem_limpeza() {
      float met;
      
      while(1) {
        printf("Entre com a metragem da casa: \n");
        float ret_scanf = scanf("%f", &met);
        if (ret_scanf != 1) { //Verifica se o valor de scanf deu certo.
          printf("Só são aceitos valores numéricos. Tente novamente.\n");
          while (getchar() != '\n'); //Limpa o buffer do teclado.
          continue;
        }
        
        if (met<30 || met>700) {
          printf("Não aceitamos casas com menos de 30m² ou mais de 700m². Sentimos muito.\n");
          return 0;
        }
    
        if (met<=300) {
          return 60+0.3*met;
          
        } return 120+0.5*met;
    
        
      }
        
    } 
    
    //Função que retorna o valor do tipo de limpeza. Irá multiplicar o resultado final por 1.0 ou 1.3
    float tipo_limpeza() {
      char tip;
      printf("Entre com o tipo de limpeza:\nBásica (B): Aplicada para sujeira semanais ou quinzenais.\nCompleta (C): (+30 p/ cento): Indicada para sujeiras antigas ou não rotineiras.\n");
      while (1) {
      printf("Entre com o tipo de limpeza:\n");  
      char ret_scanf = scanf(" %c", &tip);
       if (ret_scanf != 1) { //Verifica se o valor de scanf deu certo.
         printf("Entrada de dados inválida. Tente novamente\n");
         while (getchar() != '\n'); //Limpa o buffer do teclado.
         continue;
      }
      if (tip=='B') {
        return 1.0;
      }
      else if (tip=='C') {
        return 1.3;
      }
      else {
        printf("Só são aceitos B ou C. Tente novamente.\n");
        continue; 
      }
      }
    }
    
    //Função que retorna o valor dos adicionais da limpeza. Irá somar com o resultado final.
    float adicional_limpeza() {
      float adi, add;
      adi=0;
      printf("Deseja mais algum adicional?\n0 - Não desejo mais nada. Encerrar.\n1 - Passar 10 peças de roupas. R$10,00\n2 - Limpeza de 1 Forno/Microondas. R$12,00\n3 - Limpeza de 1 Geladeira/Freezer. R$20,00\n");
      while(1) {
      printf("Digite o valor: \n");
      float ret_scanf = scanf("%f", &add);
        if (ret_scanf != 1) { //Verifica se o valor de scanf deu certo.
          printf("Valor inválido. Tente novamente.");
          while (getchar() != '\n'); //Limpa o buffer do teclado.
          continue;
        }
      if (add==0) {
        adi = adi+0;
        break;
      }
      else if (add==1) {
        adi = adi+10;
        continue;
      }
      else if (add==2) {
        adi = adi+12;
        continue;
      }
      else if (add==3) {
        adi = adi+20;
        continue;
      }
      else {
        printf("Só são aceitos 0, 1, 2 e 3. Tente novamente.\n");
        continue;
      }
        
      }
    
      return adi;
      
    
    }

     

    • Curtir 1
  3. @arfneto Eu devo verificar SEMPRE se o retorno de scanf é 1, mesmo fora de laços de repetição?

    @arfneto Não tenho nenhum livro sobre C e não faço cursos sobre C. você acha que é útil eu aprender melhor C para caso surjam oportunidades de estágio? Ou acha que não vale a pena? Visto que essa linguagem quase não é usada comercialmente.

    • Curtir 1
  4. @arfneto Na verdade eu aprendi base de Python em um curso do ano passado, e agora estou tentando aprender C pra eu não ter tanta dificuldade em outras linguagens. C estou aprendendo totalmente por fora, não tenho nenhum livro e não faço curso sobre ele.

    15 horas atrás, arfneto disse:
    if (res != 1) continue;

    Esse é o teste do retorno do scanf? Pra que ele serve exatamente?

    • Curtir 1
  5. @arfneto @arfneto Olá, dei uma editada brusca no programa da maneira que entendi e que consegui. Agora coloquei as funções antes da main, dessa, forma já aproveitando e as declarando.

    #include <stdio.h>
    #include <stdlib.h>
    
    //Função que retorna o valor calculado da limpeza pela metragem. Não aceita valores menor do que 30 ou maior do que 700.
    float metragem_limpeza() {
      float met;
      
      while(1) {
        printf("Entre com a metragem da casa: \n");
        scanf("%f", &met);
        
        if (met<30 || met>700) {
          printf("Não aceitamos casas com menos de 30m² ou mais de 700m².\n");
          continue;
        }
    
        else if (met<=300) {
          return 60+0.3*met;
          
        }
        else if (met<=700) {
          return 120+0.5*met;
          
        }
        
      }
        
    } 
    
    //Função que retorna o valor do tipo de limpeza. Irá multiplicar o resultado final por 1.0 ou 1.3
    float tipo_limpeza() {
      char tip;
      printf("Entre com o tipo de limpeza:\nBásica (B): Aplicada para sujeira semanais ou quinzenais.\nCompleta (C): (+30 p/ cento): Indicada para sujeiras antigas ou não rotineiras.\n");
      scanf(" %c", &tip);
      if (tip=='B') {
        return 1.0;
      }
      else if (tip=='C') {
        return 1.3;
      }
      
    }
    
    //Função que retorna o valor dos adicionais da limpeza. Irá somar com o resultado final.
    float adicional_limpeza() {
      float adi;
      float add;
      adi=0;
      printf("Deseja mais algum adicional?\n0 - Não desejo mais nada. Encerrar.\n1 - Passar 10 peças de roupas. R$10,00\n2 - Limpeza de 1 Forno/Microondas. R$12,00\n3 - Limpeza de 1 Geladeira/Freezer. R$20,00\n");
      while(1) {
      printf("Digite o valor: \n");
      scanf("%f", &add);
      if (add==0) {
        adi = adi+0;
        break;
      }
      else if (add==1) {
        adi = adi+10;
        continue;
      }
      else if (add==2) {
        adi = adi+12;
        continue;
      }
      else if (add==3) {
        adi = adi+20;
        continue;
      }
        
      }
    
      return adi;
      
    
    }
    
    //Programa principal
    int main() {
      
      printf("Bem-vindo ao programa de Serviços de Limpeza CleanUp.\n**************************************************************************\n----------------------Menu 1 de 3 - Metragem Limpeza----------------------\n");
      float metragem = metragem_limpeza();
      printf("O valor retornado foi de %g\n", metragem); //Verificar se o valor retornado está correto
    
      printf("**************************************************************************\n------------------------Menu 2 de 3 - Tipo Limpeza------------------------\n");
      float tipo = tipo_limpeza();
      printf("O valor retornado foi de %g\n", tipo); //Verificar se o valor retornado está correto
    
      printf("**************************************************************************\n-------------------Menu 3 de 3 - Adicional de Limpeza---------------------\n");
      float adicional = adicional_limpeza();
      printf("O valor retornado foi de %g\n", adicional); //Verificar se o valor retornado está correto
    
      float resultado=metragem*tipo+adicional;
      printf("O valor final foi de R$%g\n", resultado);
    
      return 0;
    
    }

     

    • Obrigado 1
  6. Vou reescrever o programa com as correções da maneira que entendi, já mando.

    @arfneto Ficou assim: 

    #include <stdio.h>
    #include <stdlib.h>
    
    int adicional_limpeza(), adicional;
    float metragem_limpeza(), tipo_limpeza(), metragem, tipo, resultado;
     
    int main() {
      
      printf("Bem-vindo ao programa de Serviços de Limpeza CleanUp.\n**************************************************************************\n----------------------Menu 1 de 3 - Metragem Limpeza----------------------\n");
      float metragem = metragem_limpeza();
      printf("O valor retornado foi de %g\n", metragem); //Verificar se o valor retornado está correto//
    
      printf("**************************************************************************\n------------------------Menu 2 de 3 - Tipo Limpeza------------------------\n");
      float tipo = tipo_limpeza();
      printf("O valor retornado foi de %g\n", tipo); //Verificar se o valor retornado está correto//
    
      printf("**************************************************************************\n-------------------Menu 3 de 3 - Adicional de Limpeza---------------------\n");
      int adicional = adicional_limpeza();
      printf("O valor retornado foi de %d\n", adicional); //Verificar se o valor retornado está correto//
    
      float resultado=metragem*tipo+adicional;
      printf("O valor final foi de R$%g\n", resultado);
    
    }
    
    
    //Função abaixo que retorna o valor da metragem da limpeza (metragem_limpeza) //
    float metragem_limpeza() {
      float met;
      
      while(1) {
        printf("Entre com a metragem da casa: \n");
        scanf("%f", &met);
        
        if (met<30 || met>700) {
          printf("Não aceitamos casas com menos de 30m² ou mais de 700m².\n");
          continue;
        }
    
        else if (met<=300) {
          return 60+0.3*met;
          
        }
        else if (met<=700) {
          return 120+0.5*met;
          
        }
        
      }
      
    
      
    }
    
    
    //Função abaixo que retorna o valor do tipo de limpeza (tipo_limpeza) //
    float tipo_limpeza() {
      char tip;
      printf("Entre com o tipo de limpeza:\nBásica (B): Aplicada para sujeira semanais ou quinzenais.\nCompleta (C): (+30 p/ cento): Indicada para sujeiras antigas ou não rotineiras.\n");
      scanf(" %c", &tip);
      if (tip=='B') {
        return 1.0;
      }
      else if (tip=='C') {
        return 1.3;
      }
      
    }
    
    
    //Função abaixo que retorna o valor de algum adicional (adicional_limpeza) //
    int adicional_limpeza() {
      int adi, add;
      adi=0;
      printf("Deseja mais algum adicional?\n0 - Não desejo mais nada. Encerrar.\n1 - Passar 10 peças de roupas. R$10,00\n2 - Limpeza de 1 Forno/Microondas. R$12,00\n3 - Limpeza de 1 Geladeira/Freezer. R$20,00\n");
      while(1) {
      printf("Digite o valor: \n");
      scanf("%d", &add);
      if (add==0) {
        adi = adi+0;
        break;
      }
      else if (add==1) {
        adi = adi+10;
        continue;
      }
      else if (add==2) {
        adi = adi+12;
        continue;
      }
      else if (add==3) {
        adi = adi+20;
        continue;
      }
        
      }
    
      return adi;
      
    
    }

     

    • Curtir 1
  7. @arfneto

    21 minutos atrás, arfneto disse:
    float metragem = metragem_limpeza();

    Eu apaguei aquela linha ''float metragem, tipo, adicional, resultado;'', porém agora a função metragem_limpeza() não é executada. o que fiz de errado? Segue a parte do código:

    #include <stdio.h>
    #include <stdlib.h>
    
    
    int main() {
    
      printf("Bem-vindo ao programa de Serviços de Limpeza CleanUp.\n**************************************************************************\n----------------------Menu 1 de 3 - Metragem Limpeza----------------------\n");
      float metragem = metragem_limpeza();

     

    • Curtir 1
  8. #include <stdio.h>
    #include <stdlib.h>
    
    /*Função principal, responsável por chamar as demais funções abaixo*/
    int main() {
      float metragem, tipo, adicional, resultado;
      
      printf("Bem-vindo ao programa de Serviços de Limpeza CleanUp.\n");
      printf ("**************************************************************************\n");
      printf ("----------------------Menu 1 de 3 - Metragem Limpeza----------------------\n");
      int metragem_limpeza();
      metragem = metragem_limpeza();
    
      printf("**************************************************************************\n");
      printf ("----------------------Menu 2 de 3 - Tipo Limpeza----------------------\n");
      float tipo_limpeza();
      tipo = tipo_limpeza();
    
      printf("**************************************************************************\n");
      printf("-------------------Menu 3 de 3 - Adicional de Limpeza---------------------\n");
      int adicional_limpeza();
      adicional = adicional_limpeza();
    
      resultado=metragem*tipo+adicional;
      printf("O valor final foi de R$%g", resultado);
    
    }
    
    
    /*Função abaixo que calcula a metragem da limpeza (metragem_limpeza) */
    int metragem_limpeza() {
      float met;
      
      while(1) {
        printf("Entre com a metragem da casa: \n");
        scanf("%f", &met);
        if (met<30) {
          printf("Não aceitamos casas com menos de 30m² ou mais de 700m².\n");
          continue;
        }
        else if (met>700) {
          printf("Não aceitamos casas com menos de 30m² ou mais de 700m².\n");
          continue;
        }
        else if (met<=300) {
          return 60+0.3*met;
          
        }
        else if (met<=700) {
          return 120+0.5*met;
          
        }
        
      }
      
    
      
    }
    
    
    /*Função abaixo que atribui o tipo da limpeza (tipo_limpeza) */
    float tipo_limpeza() {
      char tip;
      printf("Entre com o tipo de limpeza:\n");
      printf("Básica (B): Aplicada para sujeira semanais ou quinzenais.\n");
      printf("Completa (C): (+30 p/ cento): Indicada para sujeiras antigas ou não rotineiras.\n");
      scanf(" %c", &tip);
      if (tip=='B') {
        return 1.0;
      }
      else if (tip=='C') {
        return 1.3;
      }
      
    }
    
    
    /*Função abaixo que calcula algum adicional (adicional_limpeza) */
    int adicional_limpeza() {
      int adi, add;
      adi=0;
      printf("Deseja mais algum adicional?\n");
      printf("0 - Não desejo mais nada. Encerrar.\n");
      printf("1 - Passar 10 peças de roupas. R$10,00\n");
      printf("2 - Limpeza de 1 Forno/Microondas. R$12,00\n");
      printf("3 - Limpeza de 1 Geladeira/Freezer. R$20,00\n");
      while(1) {
      printf("Digite o valor: \n");
      scanf("%d", &add);
      if (add==0) {
        adi = adi+0;
        break;
      }
      else if (add==1) {
        adi = adi+10;
        continue;
      }
      else if (add==2) {
        adi = adi+12;
        continue;
      }
      else if (add==3) {
        adi = adi+20;
        continue;
      }
        
      }
    
      return adi;
      
    
    }

    Sou bem iniciante em C, eu gostaria que vcs opinassem sobre o que posso melhorar em meu programa. Ele foi desenvolvido originalmente em Python que fiz pra um trabalho da faculdade, agora passei pra C.  

    • Curtir 1
  9. A trava do PCIe da minha quebrou, e com isso a placa de vídeo não fica totalmente firme, e com isso, o PC não dá vídeo no primeiro boot, o forçando a desligar pelo botão, aí sim na segunda tentativa, ele liga e funciona normalmente. Eu queria saber qual o valor máximo que compensaria pra trocar o PCIE dessa placa-mãe e se eu fosse comprar outra, qual o valor que eu deveria pagar. 

  10. Venho aqui relatar um problema que estou tendo no Windows 11 e no plano de energia da AMD pros CPUs Ryzen pra vcs ficarem atentos: Não sei se mais alguém passou por isso, mas quando o computador suspende de maneira natural utilizando o plano de energia AMD Ryzen Balanced, ao despertar o PC, dava tela preta. Após reiniciar a máquina pelo botão, o driver da AMD simplesmente parava de funcionar, como se o Windows 11 tivesse tentado o atualizar por cima e instalou uma versão incompatível (algo típico), precisando de reparo ou reinstalação, e isso porque esta opção do Windows está desabilitada, então não foi isso. Não sei se alguém teve isso, mas apenas vim relatar esse dilema. Isso parou de acontecer após eu trocar para o plano de energia ''Equilibrado'', o padrão do Windows.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!