Jump to content
Ped@ntilva

Ginasio

Recommended Posts

Ped@ntilva

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

Share this post


Link to post
Share on other sites
brink@ero

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:

Share this post


Link to post
Share on other sites
Ped@ntilva

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...

Share this post


Link to post
Share on other sites
vbmaster

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... :|

Share this post


Link to post
Share on other sites
brink@ero

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.

Share this post


Link to post
Share on other sites
vbmaster

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;}

Share this post


Link to post
Share on other sites
brink@ero

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)

Share this post


Link to post
Share on other sites
vbmaster

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. :(

Share this post


Link to post
Share on other sites
Ped@ntilva

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.

Share this post


Link to post
Share on other sites
brink@ero

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:

Share this post


Link to post
Share on other sites
urgente

É 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:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.