1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[C]Os maiores valores num array

Discussão em 'Programação' iniciada por R.Raposo, 17 de Maio de 2008. (Respostas: 6; Visualizações: 1408)

  1. R.Raposo

    R.Raposo Power Member

    Boas tardes,

    Estava aqui a programar um pouco em C e fiquei preso numa parte, por exemplo:

    Imaginamos que temos o array numeros[5]

    Agora nesse array, ver e dizer em qual posição está o maior, mas a minha dificuldade é mesmo na parte de se na posição 0 e 1 forem iguais como faço para mostrar depois do ciclo que são os 2.
     
  2. Podes usar uma estrutura onde possas guardar vários valores, como um array com a dimensão do array original, ou uma lista ligada.
     
  3. R.Raposo

    R.Raposo Power Member

    lista ainda não estou tão avançado :)

    Pensei na historia do array secundario com o mesmo tamanho mas no meu tem um pequeno problema. Eu vou po o excerto do switch que preciso disso


    Código:
     int fumax[numf];
                        clrscr();
                        max=f[0].getsalario();
                        fumax[0]=1;
                        for (i=1;i<=numf;i++){
                            if (f[i].getsalario()>max){
                               fumax[i]=1;
                               fumax[i-1]=0;
                               max=f[0];
                            else
                                if (f[i].getsalario()=max)
                                   fumax[i]=1;
     
  4. Quando o valor actual é maior que o máximo já encontrado, tens de pôr a 0 todas as posições em fumax até à actual, e não apenas i - 1. Além disso deves actualizar o máximo com o valor actual (não com f[0]).
     
  5. R.Raposo

    R.Raposo Power Member

    Obrigado vou experimentar então inventar mais um bocado.
     
  6. Eu geralmente em algoritmos de procurar o maior ou menor marco spr a 1ª casa ( array numeros[0] ) como maior e a partir daí corro um for() de array numeros[1] até array numeros[max].


    int i,maior = array numeros[0];
    for(i=0; i< MAX_)
    {
    if ( array numeros > maior )
    maior=array numeros
    }

    Se quiseres saber quantos "maiores" existem arranjas uma var auxiliar.
    Como disseram, uma estrutura também é fixe, assim:

    typedef struct
    {
    int array numeros[MAX]
    int indice_do_maior;

    }estrutura_very_nice;
     
  7. R.Raposo

    R.Raposo Power Member

    Esta resolvido e esta ai a solução


    Código:
    case 4:
                        int fumax[numf];
                        float max;
                        clrscr();
                        max=f[0].getsalario();
                        fumax[0]=1;
                        cout<<"\nQuem tem o maior salario:\n";
                        for (i=1;i<=numf;i++)
                            if (f[i].getsalario()>max)
                               max=f[i].getsalario();
                        for (i=0;i<=numf;i++)
                            if (f[i].getsalario()==max)
                                  cout<<"Nome: "<<f[i].getnome()<<"\n";
                        getche();
                        break;
     

Partilhar esta Página