Jump to content

Contador de Panquecas


Fabio Machado

Recommended Posts

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

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

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

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.

  • Vote 1
Link to comment
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.