Ir ao conteúdo
  • Cadastre-se

Estudo C++


Raingrave

Posts recomendados

Alguém poderia dar um help comecei a estudar c++ estou fazendo uma lista de exercicíos e tranquei?

 

segue os enunciados:

 

1) FUP q leia de cada pessoa o nome,o ano de nasc. e peso. O programa deve encerrar a leitura dos dados quando for digitado um peso negativo.No final antes do final do programa devera ser apresentado: a)Quantas pessoas estão na faixa de 20 a 30 anos; b)A idade media das pessoas com peso maior que 80kg.

 

2) FUP q leia o nome e a nota escolar de cada aluno de uma turma de 37 alunos.No final do programa apresentar: A maior nota e o nome do aluno que tem esta nota e a menor nota e o nome do aluno q tem esta nota.


O exercicío 2 consegui exibir a maior e menor nota mas não consigo pegar o respectivo nome:

 

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
    char nome[80];
    char nomeMaiorNota[80];
    char nomeMenorNota[80];
    int nota;
    int maiornota = 0;
    int menornota = 10;
    int cont = 0;
    
    while (cont < 37) {
        printf("Digite um nome: ");
        gets_s(nome);
        
        printf_s("Digite a nota: ");     
        scanf_s("%d", &nota);

        fflush(stdin);
        
        if (nota > maiornota ) {
            maiornota = nota;
    
        }
            
        
        if (nota < menornota) {
            menornota = nota;
        }
        cont = cont++;
    }
        printf("Nome do aluno maior nota:%s \n", nome);
        
        printf("Nome do aluno menor nota:%s \n", nome);
        
        printf("Menor nota:%d \n", menornota);
    return 0;
}

Link para o comentário
Compartilhar em outros sites

#include <stdio.h> main (){    char nome[50];    int ano, aux1=0;    float peso=0, aux2=0, aux3=0;    while (peso>=0)    {        scanf ("%f", &peso); // pega o peso;        if (peso>=0)        {            scanf ("%d", &ano); // pega o ano;            if ((2014-ano)>=20 && (2014-ano)<=30) // verifica a idade;            {                aux1++;            }            if (peso>80) // verifica o peso;            {                aux2=aux2+(2014-ano);                aux3++;            }            fflush(stdin); // limpa o buffer;            gets (nome); // pega o nome;        }    }    printf ("%d\n", aux1); // mostra quantas pessoas possuem idade de 20 a 30 anos;    printf ("%.2f\n", aux2/aux3); // média da idade das pessoa com mais de 80 kg;}system ("pause");
Link para o comentário
Compartilhar em outros sites

Não é boa prática utilizar dois métodos de leitura para o mesmo tipo de entrada (teclado).

 

A função "fflush()" está sendo usada de maneira errada. Ela é utilizada para buffer de saída e não de entrada.

Portanto, ela não é portável e pode ter comportamento inesperado.

O buffer fica "sujo" porque o caracter que representa a tecla ENTER ('\n') é mantido no próprio buffer e será lido na próxima próxima leitura.

Usando a função "scanf()", dá pra ignorar esse caracter usando "%*c" após o "%s".

 

Ajustei o código pra seguir um padrão:

#include <stdlib.h>#include <stdio.h> int main(void){    char nome[50] = {'\0'};    int idade = 0;    int faixaEtaria = 0;    int qtdAcimaOitenta = 0;    int opcao = 0;    int opcaoWhile = 1;    float peso = 0;    float mediaIdadePeso = 0;     while( opcaoWhile )    {         printf("Escolha uma opção:\n1 - Inserir\n2 - Mostrar resultado\n3 - Sair\nOpcao: ");        scanf("%d", &opcao );        printf("\n\n");         switch( opcao )        {            case 1:                /* Nome não está sendo usado */                printf("Nome: ");                scanf("%s%*c", nome); // pega o nome;                 printf("Peso: ");                scanf("%f", &peso); // pega o peso;                 printf("Ano: ");                scanf ("%d", &idade); // pega o ano;                idade = 2014 - idade;                printf("\n\n");                 if ( idade >= 20 && idade <= 30 ) // verifica a idade;                    faixaEtaria++;                 if ( peso > 80 ) // verifica o peso;                        mediaIdadePeso = ( ( mediaIdadePeso * qtdAcimaOitenta ) + idade ) / ++qtdAcimaOitenta; // Média incremental                 break;             case 2:                printf ("\n\nTotal de pessoas entre 20 e 30 anos: %d\n", faixaEtaria ); // mostra quantas pessoas possuem idade de 20 a 30 anos;                printf ("Idade media das pessoas com mais de 80 kilos: %.2f\n\n\n", mediaIdadePeso ); // média da idade das pessoa com mais de 80 kg;                break;             case 3:            default:                opcaoWhile = 0;        }    }     return 0;}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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!