Witam
do rozwiązania mam podane poniżej zadanie w języku C, rozwiązałem je jednak interesuje mnie to czy jest poprawnie rozwiązane i czy istnieje lepszy algorytm.
zad
dana jest tablica nieujemnych liczb całkowitych, należy napisać program który wypisze podium zwycięzców (ich numer)
przykład:
tab1[10]={0,6,2,6,4,9,6,7,8,3}
podium[3]={9,8,7}
czyli po prostu program wypisuje 3 największe elementy tablicy.
#include <stdio.h>
#include <stdlib.h>
int a=20;
int b=3;
int* up()
{
int i;
int *tab,*tab2;
int pierwszy,drugi,trzeci;
tab=(int*)malloc(b*sizeof(int));
tab2=(int*)malloc(a*sizeof(int));
for(i=0;i<a;i++)
{
tab2[i]=i;
}
pierwszy=tab2[0];
drugi=tab2[0];
trzeci=tab2[0];
for(i=0;i<a;i++)
{
if(pierwszy<tab2[i])
{
pierwszy=tab2[i];
}
}
for(i=0;i<a;i++)
{
if(tab2[i]<pierwszy && tab2[i]>drugi)
{
drugi=tab2[i];
}
}
for(i=0;i<a;i++)
{
if(tab2[i]<drugi && tab2[i]>trzeci)
{
trzeci=tab2[i];
}
}
tab[0]=pierwszy;
tab[1]=drugi;
tab[2]=trzeci;
return tab;
}
int main()
{
int *tab, i;
tab = up();
for(i=0; i<b;i++)
{
printf("%d\n", tab[i]);
}
return 0;
}