Rafael Alonso Barbosa Santos

Respostas no Fórum

Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • em resposta a: MOD 03 EX 038 #65645
      Essa é minha Solução, se te ajudar a entender segue meu código!
    programa
    {
    	inclua biblioteca Texto --> t
    	
    	funcao inicio()
    	{
    		cadeia nome = "", h_velho = "", h_jovem = "", m_velha = "", m_jovem = "", sexo = ""
    		inteiro idade = 0, h_id_mvelho = 0, h_id_mjovem = 0, m_id_mvelha = 0, m_id_mjovem = 0, h = 0, f = 0, c = 1
    
    		enquanto (c <= 5) {
    			escreva("------------------------\n")
    			escreva(c, "º PESSOA:\n")
    			escreva("Nome: ")
    			leia(nome)
    			escreva("Sexo [M/F]: ")
    			leia(sexo)
    			escreva("Idade: ")
    			leia(idade)
    			sexo = t.caixa_alta(sexo)
    			se (sexo == "F") {
    				f++
    				se (f == 1) {
    					m_velha = nome
    					m_jovem = nome
    					m_id_mvelha = idade
    					m_id_mjovem = idade
    				} senao se(idade > m_id_mvelha) {
    					m_id_mvelha = idade
    					m_velha = nome
    				} senao se (idade < m_id_mjovem) {
    					m_id_mjovem = idade
    					m_jovem = nome
    				}
    			} senao se (sexo == "M") {
    				h++
    				se (h == 1) {
    					h_velho = nome
    					h_jovem = nome
    					h_id_mvelho = idade
    					h_id_mjovem = idade
    				} senao se (idade > h_id_mvelho) {
    					h_velho = nome
    					h_id_mvelho = idade
    				} senao se (idade < h_id_mjovem) {
    					h_jovem = nome
    					h_id_mjovem = idade
    				}
    			}
    			c++
    		}
    		escreva("==================================================\n")
    		escreva("Ao todo tivemos ", h, " homen(s) e ", f, " mulhere(s).\n")
    		escreva("O homem mais jovem é ", h_jovem, " com ", h_id_mjovem, " ano(s).\n")
    		escreva("O homem mais velho é ", h_velho, " com ", h_id_mvelho, " ano(s).\n")
    		escreva("A mulher mais jovem é ", m_jovem, " com ", m_id_mjovem, " ano(s).\n")
    		escreva("A mulher mais velha é ", m_velha, " com ", m_id_mvelha, " ano(s).\n")
    		escreva("==================================================\n\n")
    	}
    }
    em resposta a: M01A08 – DIVISÃO REAL – EXERCÍCIOS EXTRAS #65641

    Boa noite, único erro que notei no seu código é ter feito a transformação na declaração da variável, pois nesse momento o n1 e n2 ainda não tem valores correspondentes, se você simplesmente jogar a função no código após a leitura dos números o programa irá funcionar corretamente, bastando trocar a variavel divint para divreal no campo DIVISÂO REAL.
    Segue abaixo seu código corrigido, da uma olhada e veja se compreende o erro!

    programa
    {
    	
    inclua biblioteca Tipos --> t
    	
    	funcao inicio()
    	{
    		inteiro n1, n2, soma, sub, divint, mult
    		real modulo, divreal
    	
    		escreva ("Digite um valor: ")
    		leia (n1)
    		escreva ("Digite outro valor: ")
    		leia (n2)
    		escreva ("——RESULTADOS——-\n")
    		
    		soma = n1 + n2
    		sub = n1 - n2
    		mult = n1 * n2
    		divint = n1 / n2
    		divreal = t.inteiro_para_real(n1) / t.inteiro_para_real(n2)
    		modulo = n1 % n2
    		
    		escreva ("SOMA = " +soma+ "\n")
    		escreva ("DIFERENÇA = " +sub+ "\n")
    		escreva ("PRODUTO = " +mult+ "\n")
    		escreva ("DIVISÃO INTEIRA = " +divint+ "\n")
    		escreva ("DIVISÃO REAL = " +divreal+ "\n")
    		escreva ("RESTO DA DIVISÃO = " +modulo+ "\n")
    	}
    }
    em resposta a: O comando fflush(stdin); não está funcionando #63485

    Boa Tarde Pessoal, depois de muitas tentativas descobri o BUG do fflush().

    O BUG ocorre quando usamos no código a quebra de linha na linha anterior a entrada de dados, depois que mudei a ordem dos \n o programa funcionou corretamente!

    segue abaixo o código corrigido!

    #include <stdio.h>
    #include <locale.h>
    #include <string.h>
    
    void main() {
        setlocale(LC_ALL, "Portuguese");
        
        char nome1[20], nome2[20], nome3[20], sexo1, sexo2, sexo3;
        float nota1, nota2, nota3;
    
        printf("<<< EX004 - Listagem Pessoas >>>\n");
        printf("\nCadastrar primeira pessoa: \n");
        fflush(stdin);
        printf("NOME: ");
        fgets(nome1, 30, stdin);
        printf("SEXO [M/F]: ");
        fflush(stdin);
        sexo1 = getchar();
        printf("NOTA: ");
        scanf("%f", &nota1);
    
        printf("Cadastrar segunda pessoa: \n");
        fflush(stdin);
        printf("NOME: ");
        fgets(nome2, 30, stdin);
        printf("SEXO [M/F] ");
        sexo2 = getchar();
        printf("NOTA: ");
        scanf("%f", &nota2);
    
        printf("Cadastrar terceira pessoa: \n");
        fflush(stdin);
        printf("NOME: ");
        fgets(nome3, 30, stdin);
        printf("SEXO [M/F]: ");
        sexo3 = getchar();
        printf("NOTA: ");
        scanf("%f", &nota3);
    
        int quebra1 = strcspn(nome1, "\n");
        nome1[quebra1] = '\0';
        int quebra2 = strcspn(nome2, "\n");
        nome2[quebra2] = '\0';
        int quebra3 = strcspn(nome3, "\n");
        nome3[quebra3] = '\0';
    em resposta a: O comando fflush(stdin); não está funcionando #63456

    Só retificando o código esqueci de mudar o scanf dos Nome para fgets, mas testei aqui e BUG ocorro da mesma maneira não entrando os dados corretamente!

    <<<<<—— EX004 LISTAGEM ——>>>>>>
    Cadastrando a primeira pessoa.
    ——————————-
    NOME: Rafael Santos
    SEXO [M/F]: M
    NOTA: 8
    Cadastrando a segunda pessoa.
    ——————————
    NOME: SEXO [M/F]: F
    NOTA: 10
    Cadastrando a terceira pessoa.
    ——————————-
    NOME: SEXO [M/F]: M
    NOTA: 6

    Listagem Completa.
    ————————————
    NOME SEXO NOTA
    Rafael Santos
    8.0

    10.0

    6.0
    ————————————

    em resposta a: O comando fflush(stdin); não está funcionando #63455

    Vamos la, acredito que os bugs estão presente na versão 9 do GCC pois testei no Linux, no Windows e o Comando fflush não funciona!
    tentei por diversas vezes usar fflush junto com getchar() e toda vez no EX004 que tem q cadastrar mais de uma cadeira o problema sempre ocorre, vou postar aqui meu código, mas ja fiz os teste tanto com fgets, com scanf e todos eles pula alguma parte na hora de colocar os dados, não sendo possivel realizar o exercicio com clareza!

    #include <stdio.h>
    #include <locale.h>
    #include <string.h>
    
    void main() {
        setlocale(LC_ALL, "Portuguese_Brasil");
    
        char nome1[30], nome2[30], nome3[30];
        char sexo1, sexo2, sexo3;
        float nota1, nota2, nota3;
    
        printf("<<<<<------ EX004 LISTAGEM ------>>>>>>\n");
    
        printf("Cadastrando a primeira pessoa.\n");
        printf("-------------------------------\n");
        printf("NOME: ");
        fflush(stdin);
        fgets(nome1, 30, stdin);
        printf("SEXO [M/F]: ");
        fflush(stdin);
        getchar();
        sexo1 = getchar();
        printf("NOTA: ");
        fflush(stdin);
        scanf("%f", &nota1);
    
        printf("Cadastrando a segunda pessoa.\n");
        printf("------------------------------\n");
        printf("NOME: ");
        fflush(stdin);
        getchar();
        scanf("%s", nome2); 
        printf("SEXO [M/F]: ");
        fflush(stdin);
        getchar();
        sexo2 = getchar();
        printf("NOTA: ");
        fflush(stdin);
        scanf("%f", &nota2);
    
        printf("Cadastrando a terceira pessoa.\n");
        printf("-------------------------------\n");
        printf("NOME: ");
        fflush(stdin);
        getchar();
        scanf("%s", nome3);
        printf("SEXO [M/F]: ");
        fflush(stdin);
        getchar();
        sexo3 = getchar();
        printf("NOTA: ");
        fflush(stdin);
        scanf("%f", &nota3);
    
        int quebra1 = strcspn(nome1, "\n");
        nome1[quebra1] = '\0';
        int quebra2 = strcspn(nome2, "\n");
        nome2[quebra2] = '\0';
        int quebra3 = strcspn(nome3, "\n");
        nome3[quebra3] = '\0';
    
        printf("\nListagem Completa.");
        printf("\n------------------------------------");
        printf("\nNOME\t\tSEXO\tNOTA");
        printf("\n%s\t\t%c\t%.1f", nome1, sexo1, nota1);
        printf("\n%s\t\t%c\t%.1f", nome2, sexo2, nota2);
        printf("\n%s\t\t%c\t%.1f", nome3, sexo3, nota3);
        printf("\n------------------------------------");
        printf("\n\n");
    }

    RESULTADO!

    <<<<<—— EX004 LISTAGEM ——>>>>>>
    Cadastrando a primeira pessoa.
    ——————————-
    NOME: Rafael Santos
    SEXO [M/F]: M
    NOTA: 8
    Cadastrando a segunda pessoa.
    ——————————
    NOME: Eduarda Santos
    SEXO [M/F]: NOTA: Cadastrando a terceira pessoa.
    ——————————-
    NOME: SEXO [M/F]: M
    NOTA: 8

    Listagem Completa.
    ————————————
    NOME SEXO NOTA
    Rafael Santos
    8.0
    Eduarda S 0.0
    ntos M 8.0
    ————————————

    em resposta a: O comando fflush(stdin); não está funcionando #63223

    O BUG que eu quis dizer é que todos os comando da aula não funciona ele pula pra linha seguinte,
    Porém o exemplo que você deu funciona mas faz uma quebra de linha automática no printf após exibir o nome!

    Exemplo:

    printf("Qual seu nome? ");
    fgets(nome, 30, stdin);
    printf("Prazer em conhecê-lo %s seja bem vindo!", nome);

    O resultado fica assim na tela!

    Qual seu nome? Rafael
    Prazer em conhecê-lo Rafael
    seja bem vindo // o seja bem vindo pula para linha de baixo após a variável nome ser exibida!

    em resposta a: O comando fflush(stdin); não está funcionando #62838

    Boa noite, também estou com dificuldade usando Linux 20.04, nenhum dos comandos funciona corretamente, todos tem bugs, já a maneira que a tutora Mayla disponibilizou não consegui compreender corretamente se puder fazer um exemplo de como utilizar o fgets() agradeço!

Visualizando 7 posts - 1 até 7 (de 7 do total)