Fabio Machado Posted June 30, 2021 at 06:28 PM Report Share #622835 Posted June 30, 2021 at 06:28 PM Boas, Estou com alguma dificuldade em perceber o que está errado no código que gerei, pois nunca me dá com exatidão qual a pessoa que comeu menos panquecas, a que comeu mais dá certo.Obrigado (Estou a usar o Visual Studio 2019) int pancakes[10]; int index; int index2; int max = 1; int min = 1; int max_pancakes = 1; int min_pancakes = 1; for (index = 1; index < 10; index++) { std::cout << "INSERT THE NUMBER OF PANCAKES THAT THE PERSON" << index << "EAT" << std::endl; std::cin >> pancakes[index]; } for (index2 = 1; index2 < 10; index2++) { for (index = 1; index < 10; index++) { if (pancakes[index2] < pancakes[index]) { max = pancakes[index]; max_pancakes = index; } else if (pancakes[index] < pancakes[index2]) { min = pancakes[index]; min_pancakes = index; } } } std::cout << " THE PERSON WHO EAT MORE PANCAKES IS " << max_pancakes << std::endl; std::cout << " THE PERSON WHO EAT LESS PANCAKES IS " << min_pancakes << std::endl; Link to comment Share on other sites More sharing options...
rbsrbs_dev Posted June 30, 2021 at 11:37 PM Report Share #622843 Posted June 30, 2021 at 11:37 PM Olá Fabio, Os arrays em C++ e grande parte das linguagems de programação começam com index a 0. O primeiro inteiro do array int pancakes[10]; é pancakes[0], pancakes[1] é o segundo, pancakes[9] é o último (décimo elemento). A tua lógica para atualizar o menor e maior também está errado: deves usar um único ciclo for e a condição deve comparar o maior/menor com o elemento na posição atual. Tambem deves ter cuidado com a inicialização das variaveis min e max, tens duas escolhas: ou usas um valor muito baixo para max (eg: -1) e um valor muito alto para min. Ou então de preferência, inicia-os com o valor do primeiro elemento do array. Link to comment Share on other sites More sharing options...
Fabio Machado Posted July 1, 2021 at 05:25 PM Author Report Share #622846 Posted July 1, 2021 at 05:25 PM 17 horas atrás, rbsrbs_dev disse: Olá Fabio, Os arrays em C++ e grande parte das linguagems de programação começam com index a 0. O primeiro inteiro do array int pancakes[10]; é pancakes[0], pancakes[1] é o segundo, pancakes[9] é o último (décimo elemento). A tua lógica para atualizar o menor e maior também está errado: deves usar um único ciclo for e a condição deve comparar o maior/menor com o elemento na posição atual. Tambem deves ter cuidado com a inicialização das variaveis min e max, tens duas escolhas: ou usas um valor muito baixo para max (eg: -1) e um valor muito alto para min. Ou então de preferência, inicia-os com o valor do primeiro elemento do array. Olá, Sim, realmente na saída só me dá a opção para 9 pessoas, deve ser por ter o index =1 inicialmente; Então como dizes, devo iniciar cada máx e min com o valor de pancakes[0] ?? Link to comment Share on other sites More sharing options...
rbsrbs_dev Posted July 2, 2021 at 05:50 PM Report Share #622859 Posted July 2, 2021 at 05:50 PM Quote deve ser por ter o index =1 inicialmente Não é deve, é mesmo. Se a linguagem inicia indexação a 0, é a zero. Quote devo iniciar cada máx e min com o valor de pancakes[0] ?? Algo formidável na programação é que podes testar as tuas hipóteses e analisar os resultados sem ter que esperar por a concessão de ninguém. 1 Report 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