Ped@ntilva Posted February 9, 2006 at 02:26 PM Report Share #13632 Posted February 9, 2006 at 02:26 PM 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úmerode 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 Link to comment Share on other sites More sharing options...
brink@ero Posted February 9, 2006 at 03:13 PM Report Share #13635 Posted February 9, 2006 at 03:13 PM 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 😕 , não percebo a diferença entre esta pergunta e a b) 😕 Se calhar seria criar uma função main que contem as outras duas em que o resultado final é aquele devolvido pela função b) 😕 Link to comment Share on other sites More sharing options...
Ped@ntilva Posted February 9, 2006 at 04:10 PM Author Report Share #13636 Posted February 9, 2006 at 04:10 PM Fiquei sem percebe na mesma 😕 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... Link to comment Share on other sites More sharing options...
vbmaster Posted February 9, 2006 at 05:36 PM Report Share #13641 Posted February 9, 2006 at 05:36 PM Só uma coisa... como se sabe o valor máximo de cada pessoa? Link to comment Share on other sites More sharing options...
Ped@ntilva Posted February 9, 2006 at 05:38 PM Author Report Share #13642 Posted February 9, 2006 at 05:38 PM Este é o enunciado. Não dá mais informação nenhuma. Link to comment Share on other sites More sharing options...
vbmaster Posted February 9, 2006 at 05:55 PM Report Share #13643 Posted February 9, 2006 at 05:55 PM 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... :| Link to comment Share on other sites More sharing options...
Ped@ntilva Posted February 9, 2006 at 06:21 PM Author Report Share #13645 Posted February 9, 2006 at 06:21 PM Pois. Esse é o meu problema.... Link to comment Share on other sites More sharing options...
brink@ero Posted February 9, 2006 at 06:30 PM Report Share #13647 Posted February 9, 2006 at 06:30 PM 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. Link to comment Share on other sites More sharing options...
vbmaster Posted February 9, 2006 at 07:19 PM Report Share #13649 Posted February 9, 2006 at 07:19 PM ah, agora sim, vou dar um geito nisso... 😞 Link to comment Share on other sites More sharing options...
vbmaster Posted February 9, 2006 at 08:03 PM Report Share #13651 Posted February 9, 2006 at 08:03 PM 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;} Link to comment Share on other sites More sharing options...
brink@ero Posted February 9, 2006 at 08:09 PM Report Share #13654 Posted February 9, 2006 at 08:09 PM 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) Link to comment Share on other sites More sharing options...
vbmaster Posted February 9, 2006 at 08:11 PM Report Share #13655 Posted February 9, 2006 at 08:11 PM 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. 😞 Link to comment Share on other sites More sharing options...
Ped@ntilva Posted February 10, 2006 at 02:21 PM Author Report Share #13689 Posted February 10, 2006 at 02:21 PM 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. Link to comment Share on other sites More sharing options...
brink@ero Posted February 10, 2006 at 02:43 PM Report Share #13694 Posted February 10, 2006 at 02:43 PM 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 👍 Link to comment Share on other sites More sharing options...
urgente Posted June 21, 2007 at 11:26 AM Report Share #108896 Posted June 21, 2007 at 11:26 AM É urgente; temos um trabalho de programação com o problema do ginásio para entregar na segunda; mto importante! Tamos mt confusos! agradeciamos ajuda! 😁 Link to comment Share on other sites More sharing options...
TheDark Posted June 21, 2007 at 02:21 PM Report Share #108952 Posted June 21, 2007 at 02:21 PM E qual é a confusão exactamente? Desaparecido. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now