Raphael Carnaúba 1 #1 Postado 21 Abril, 2010 (editado) McCarthy é um teórico famoso de ciência da computação. No seu trabalho, ele definiu uma função recursiva, chamada f91, que recebe como entrada um inteiro N e retorna um inteiro positivo definido como a seguir: Se N ≤ 100, então f91 (N) = f91 (f91 (N + 11)); Se N ≥ 101, então f91 (N) = N - 10. Escreva um programa que computa a função f91 de McCarthy. Entrada O arquivo de entrada consiste de uma série de inteiros positivos, cada inteiro é no máximo 1.000.000. Há no máximo 250.000 casos de teste. Cada linha possui somente um número. O fim da entrada é alcançada quando o número 0 é encontrado. O número 0 não deve ser considerado como parte do conjunto de teste. Saída O programa deve imprimir cada resultado em uma linha, seguindo o formato fornecido no exemplo de saída. Exemplo Entrada: 500 91 0 Saída: f91(500) = 490 f91(91) = 91 Dou 10V$ pra quem acertar, mandar as respostas por P.M Editado 21 Abril, 2010 por Raphael Carnaúba Compartilhar este post Link para o post Compartilhar em outros sites
Rich Man 0 #2 Postado 21 Abril, 2010 (editado) Se N ≥ 101 poderia ser substituido por Se N > 100 li mais 2 vezes e entendi meio dificil heim '.' Editado 21 Abril, 2010 por Rich Man Compartilhar este post Link para o post Compartilhar em outros sites
Raphael Carnaúba 1 #3 Postado 21 Abril, 2010 Rich Man, Se N ≤ 100 o resultado vai ser F91 (F91 ( N + 11) ) Se N ≥ 101 o resultao vai ser N - 10. Lembra de funções e equações no ensino médio? xD Compartilhar este post Link para o post Compartilhar em outros sites
the_labrax 0 #4 Postado 22 Abril, 2010 (editado) em tese algo parecido com isto... alguem arruma e manda como mp pra ele int f91(int n) { if(n >= 101) return n-10; if(n <= 100) return f91(f91(n+11)); } int main() { int valor[linhas]; <-- malloc ou alguma função de alocação se quiser //funções de entrada while(valor[linha]!=0): ler: valor[linha] = linha arquivo... //funções de saída escrever: f91(%valor%) = (executar: f91(%valor%)) <-- implementar aqui a resposta } que esmola... Editado 23 Abril, 2010 por the_labrax Compartilhar este post Link para o post Compartilhar em outros sites
Nenzzy 0 #5 Postado 23 Abril, 2010 hãa? tendi bosta nenhuma Compartilhar este post Link para o post Compartilhar em outros sites
Mickfern 32 #6 Postado 23 Abril, 2010 Olha, voce poderia postar o nível de dificuldade para isto ? Estou começando no ramo, mas não entendi nada, isso é para intermediário ou experiente? Compartilhar este post Link para o post Compartilhar em outros sites
Blue Bird2 0 #7 Postado 23 Abril, 2010 dificil isso Compartilhar este post Link para o post Compartilhar em outros sites
Raphael Carnaúba 1 #8 Postado 25 Abril, 2010 Pareçe ser super-facil, mais tem uma casca de banana. díria que de 0-10 é um 6. the_labrax, tá certo tua lógica... não precisa ler arquivo, apenas o que foi digitado no console. basta um std::cin ou scanf. Compartilhar este post Link para o post Compartilhar em outros sites
Baxnie 8 #9 Postado 26 Abril, 2010 (editado) int f91(int n) { if(n <= 100) return 91; return n-10; } int main(int argc, char *argv[]) { printf("%d\n",f91(500)); printf("%d\n",f91(90)); return 0; } Que função tosca kk ... Editado 26 Abril, 2010 por Baxnie <= 100 é 91 lols Compartilhar este post Link para o post Compartilhar em outros sites
Raphael Carnaúba 1 #10 Postado 26 Abril, 2010 Vc adora uma piadinha né Baxnie? hauhauhauhua :] Compartilhar este post Link para o post Compartilhar em outros sites
HenneT 2 #11 Postado 20 Junho, 2010 fiz assim, x.x #include <iostream> #include <cstdlib> #include <list> using namespace std; /* Se N ≤ 100, então f91 (N) = f91 (f91 (N + 11)); Se N ≥ 101, então f91 (N) = N - 10. */ int f91(int valor){ if(valor >= 101) return (valor - 10); else return f91(valor + 11); } int main(){ list<int> lista; int valor; cout << "Digite alguns inteiros (0 para sair):\n"; do { cin >> valor; if(valor) lista.push_back (valor); else break; } while (valor); while (!lista.empty()) { valor = lista.front(); cout << " f91 (" << valor << ")" << " = "<< f91(valor) << endl ; lista.pop_front(); } system("pause"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites