R.Raposo
17-05-2008, 13:20
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.
Mr. Brightside
17-05-2008, 13:57
Podes usar uma estrutura onde possas guardar vários valores, como um array com a dimensão do array original, ou uma lista ligada.
R.Raposo
17-05-2008, 14:05
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
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;
Mr. Brightside
17-05-2008, 14:10
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]).
R.Raposo
17-05-2008, 14:17
Obrigado vou experimentar então inventar mais um bocado.
darkdisaster
17-05-2008, 19:55
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[i] > maior )
maior=array numeros[i]
}
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;
R.Raposo
17-05-2008, 20:26
Esta resolvido e esta ai a solução
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;