• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Ped@ntilva

Ginasio

16 mensagens neste tópico

Boas,

Alguem me pode ajudar neste exercicio?

Eu não estou a perceber o enunciado...

O exercício físico num ginásio consiste em levantar uma barra com um certo peso. A barra é levantada um certo número

de vezes, a que se chama de “repetições”. o exercício é composto por várias séries, isto é, ao fim de N repetições o atleta

descansa e depois retoma novamente outras N repetições. Este procedimento é repetido um certo número de vezes, a que

se chama o número de “séries”. Alguns atletas, pela idade avançada ou condição física, não podem ultrapassar um certo

limite para o peso total levantado. O atleta escolhe o peso e número de repetições que pretende, mas o exercício termina

antes que esse valor limite seja ultrapassado. Desenvolva um programa para calcular o peso total levantado pelo atleta ao

longo das séries e repetições, sabendo que esse total não pode ultrapassar o valor limite.

Dados de entrada (a pedir ao utilizador):

• peso – o peso da barra a ser levantada (p.ex. 25,5 Kg)

• rep – o número de repetições (p.ex. 12)

• ser – o número de séries (p.ex. 3)

• max – o valor máximo de peso total a não ultrapassar (p.ex. 70,5 Kg)

Dados de saída (a apresentar no ecrã):

• o peso total levantado (para os valores acima especificados dá 51,0 Kg)

a) Implemente uma função que devolve o peso total levantado ao fim de um número de repetições, sem que esse peso

ultrapasse o máximo.

b) Implemente uma função que devolve o peso total levantado ao fim de um número de séries, sem que esse peso

ultrapasse o máximo. Utilize a função anterior.

c) Escreva o programa que calcula o peso total levantado. Utilize as funções anteriores.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se percebi bem, seria isto:

a)

tens de encontrar o número de repetições que não ultrapassa o peso máximo = a parte inteira da ( peso total máximo / peso da barra)

depois calculas o nº de rep. = min (n.º de rep. máximo calculado anteriormante, nº de rep definido no input)

peso total levantado = n.º de rep x peso da barra

b)

a mesma coisa, mas em vez de repetições, são as séries:

tens de encontrar o número de séries que não ultrapassa o peso máximo = a parte inteira da ( peso total máximo / peso total das rep. calculado na alinea anterior)

depois calculas o nº de series = min (n.º de series máximo calculado anteriormante, nº de series definido no input)

peso total levantado = n.º de series x peso total das séries calculado na alinea anterior

c)

Bem :confused:, não percebo a diferença entre esta pergunta e a b) :confused:

Se calhar seria criar uma função main que contem as outras duas em que o resultado final é aquele devolvido pela função b) :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fiquei sem percebe na mesma :confused:

mas obrigado...

Eu fiz assim mas não deve tar nada certo....

#include <iostream>

using namespace std;

float funcao_a(float peso, int rep, float max);
float funcao_b(float peso, int rep, int ser, float max);

int main(){
   //eu atribuí os valores nas variáveis.
   float peso = 25.5;
   int rep = 12;
   int ser = 3;
   float max = 70.5;
   float total;
   total = funcao_b(peso, rep, ser, max);
   cout << "Saida: " << total << endl << endl;
   system ("pause");
   return 0;
}

float funcao_a(float peso, int rep, float max){
     float total;
     total = max*0.01;
     total = rep/total;     
     return total;
}

float funcao_b(float peso, int rep, int ser, float max){     
     float peso_total=0;
     for (int i = 0; i < ser;i ++){
         peso_total += funcao_a(peso, rep, max);
     }
     return peso_total;
}

Cumps...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então mas eu não consigo fazer as funções sem saber qual a fórmula que diz o máximo de certo atleta... :|

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então mas eu não consigo fazer as funções sem saber qual a fórmula que diz o máximo de certo atleta... :|

É um dos dados do input!

Eu faria assim:

#include <iostream>
using namespace std;

// devolve o min
int minimo(int a, int b)
{
if(a<
	return a;
else
	return b;
}

// função a-> devolve o valor levantado em cada repetição
float funcao_a(float peso_max, float peso_barra, int n_rep)
{
int	n_rep_min;

//tens de encontrar o número de repetições que não
//ultrapassa o peso máximo = a parte inteira da ( peso total máximo / peso da barra)
n_rep_min=(int)(peso_max/peso_barra);
n_rep_min=minimo(n_rep_min,n_rep);

return (n_rep_min*peso_barra);
}

// função b-> devolve o valor levantado em cada serie
float funcao_b(float peso_max, float peso_barra, int n_rep, int n_ser)
{
int		n_ser_min;
float	peso_rep;	//peso levantado em cada repetição

peso_rep=funcao_a(peso_max,peso_barra,n_rep);

//tens de encontrar o número de séries que não
//ultrapassa o peso máximo = a parte inteira da
//( peso total máximo / peso total das rep. calculado na alinea anterior)
n_ser_min=(int)(peso_max/peso_rep);
n_ser_min=minimo(n_ser_min,n_ser);

return (n_ser_min*peso_rep);
}

int main(void)
{
float	peso_barra,
		peso_max;
int		n_rep,
		n_ser;

// input
cout<<"peso da barra [kg]: ";
cin>>peso_barra;
cout<<"n. de repeticoes: ";
cin>>n_rep;
cout<<"n. de series: ";
cin>>n_ser;
cout<<"o valor maximo de peso a nao ultrupassar [kg]: ";
cin>>peso_max;

// output
cout<<endl
	<<"O valor maximo levantado e de:"
	<<funcao_b(peso_max,peso_barra,n_rep,n_ser)<<"kg"<<endl;

system("pause");

return 0;
}

E dá, como é esperado, o mesmo resultado do exemplo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, falta a terceira função, mas verifica lá se é isto que queres.... penso que esotu a reponder acertadamente a esse confuso enunciado.... :(

#include <iostream>
using namespace std;


int weightinrepetitions (float& peso, int& repeticoes, float& maximo) {
float pesorepeticoes = peso * repeticoes;
while (pesorepeticoes >= maximo) {
--repeticoes;
pesorepeticoes = peso * repeticoes; }
cout << "O Atleta devera fazer " << repeticoes << " levantamentos de uma barra de " << peso << ". Desta maneira levantara\´ " << pesorepeticoes << " KG que está abaixo do seu valor maximo definido de " << maximo << " KG.";
return 0;}


int weightinseries (float& peso, int& repeticoes, int& nseries, float& maximo) {
float pesoseries = peso * repeticoes * nseries;
while (pesoseries >= maximo) {
--nseries;
pesoseries = peso * repeticoes * nseries;}
cout << "Deverá fazer " << nseries << " series de " << repeticoes << " levantamentos de uma barra de " << peso << " KG levantando, deste modo, " << pesoseries << " KG. Desta maneira, não ultrapassara\´ o maximo por si definido de " << maximo << " KG.";
return 0;}


int main () {

float weight, max;
int repetitions,series,escolha;

cout << ":::::::::FITNESS CONTROLER:::::::::" << endl;
cout << endl << "1 - Peso total levantado ao final de um numero de repeticoes, sem que esse peso ultrapasse o maximo."
     << endl << "2 - Peso total ao fim de um numero de series, sem que esse peso ultrapasse o maximo.";
cout << endl << "3 - Sair";

do {
cout << endl << endl << "Insira o numero correpondente ao que quer fazer: ";
cin >> escolha;


cout << endl << "------------------------------------" << endl;
cout << "Insira o peso da barra a levantar: "; cin >> weight;
cout << "Insira o numero de repetiçoes: "; cin >> repetitions;
cout << "Por fim, insira o peso maximo a levantar: "; cin >> max;


switch (escolha) {
case 1 : weightinrepetitions(weight, repetitions, max); break;
case 2: cout << "Insira o numero de series: "; cin >> series; 
weightinseries(weight, repetitions, series, max); break;
default : cout << "Insira um valor que corresponda a alguma opção!"; break;
}
}while (escolha != 3);
return 0;}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ah, agora sim, vou dar um geito nisso... :(

O código foi feito "em cima do joelho", alias a função funcao_a e funcao_b pode bem ser a mesma, alterando só o input:

a função funcao_b(peso_max,peso_barra,n_rep,n_ser) é o mesmo que funcao_a(peso_max,funcao_a(peso_max,peso_barra,n_rep),n_ser)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não me referia ao teu código brinkaero, mas sim à ideia do programa, que como podes ver, fiz o codigo por mim mesmo, não com base no teu. :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

vbmaster o codigo que fizeste acho que não é o pedido pelo enunciado, mesmo assim obrigado.

O do brinkaero parece funcionar na perfeição. Muito Obrigado.

Não sei como chegas-te a esta conclusão mas a verdade é que parece funcionar mto bem.

Mais uma x obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

vbmaster o codigo que fizeste acho que não é o pedido pelo enunciado, mesmo assim obrigado.

O do brinkaero parece funcionar na perfeição. Muito Obrigado.

Não sei como chegas-te a esta conclusão mas a verdade é que parece funcionar mto bem.

Mais uma x obrigado.

Bem... vou tentar explicar melhor com o exemplo.

Tens os seguintes dados:

Dados de entrada (a pedir ao utilizador):

• peso – o peso da barra a ser levantada (p.ex. 25,5 Kg)

• rep – o número de repetições (p.ex. 12)

• ser – o número de séries (p.ex. 3)

• max – o valor máximo de peso total a não ultrapassar (p.ex. 70,5 Kg)

a) Implemente uma função que devolve o peso total levantado ao fim de um número de repetições, sem que esse peso

ultrapasse o máximo.

R: Então é o seguinte, independentemente do valor que o atleta quer levantar(n.º de rep), este não pode ultrapassar o limite!

Ele pretende levantar 12x a barra em cada série, ou seja, 12 repetições. No 1.º levanta 25,5 no segundo 51,0 no terceiro 76,5<-ultrapassou, por isso em cada série ele só pode

fazer 2 repetições. Este número é igual a divisão inteira entre o peso máximo e o peso da barra (70.5/25.5=2.7647), por outras palavras, este n.º é igual ao n.º de barras perfazem o peso máximo por defeito.

Contudo se o atleta quer fazer uma repetição, então não vai fazer 2 repetições(valor máximo). Por isso é necessário retirar o valor mínimo entre o que ele pode no máximo e o que ele pretende!

Depois de saber o n.º de repetições é só calcular o valor do peso total.

Na b) é a mesma coisa mas em vez de estarmos a falar do peso das barras, estamos a falar do peso levantado em cada repetição!

Na 1.ª é 51,0 na 2.ª é 102,0<-ultrapassou.

...

Espero que tenhas entendido :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É urgente; temos um trabalho de programação com o problema do ginásio para entregar na segunda; mto importante! Tamos mt confusos! agradeciamos ajuda! :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora