[C]Os maiores valores num array

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.
 
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;
 
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]).
 
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;
 
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;
 
Back
Topo