Siemka. Chciałabym się Was spytać, jak zrobić program, który wypisze na ekran największy i najmniejszy element, i co najważniejsze - użytkownik sam wpisuje ilość danych. Próbowałam na podstawie tego kodu:
#include <stdlib.h>
typedef struct
{
char nazwisko[20], imie[20];
int rok_ur;
float srednia;
} TDane;
typedef struct
{
TDane d;
struct TElement* next;
} TElement;
typedef TElement* TWsk;
int main()
{
TDane x;
TWsk P;
P=NULL;
WprowadzDane(&P);
printf("\nWprowadzono nastepujace dane: \n");
UsunStos(&P);
return 0;
}
int WprowadzStudenta(TDane *x)
{
printf("Podaj nazwisko: ");
scanf("%s", x->nazwisko);
printf("Podaj imie: ");
scanf("%s", x->imie);
printf("Podaj rok urodzenia: ");
scanf("%d", &x->rok_ur);
printf("Podaj srednia: ");
scanf("%f", &x->srednia);
return 0;
}
int WyswietlStudenta(TDane x)
{
printf("%s %s %d %4.2f\n", x.nazwisko, x.imie, x.rok_ur, x.srednia);
return 0;
}
int NaStos(TWsk *P, TDane x)
{
TWsk Q;
Q=(TElement*)malloc(sizeof(TElement));
Q->d=x;
Q->next=(*P);
(*P)=Q;
return 0;
}
int ZeStosu(TWsk *P, TDane *x)
{
TWsk Q;
if(P!=NULL)
{
Q=(*P);
*x=Q->d;
(*P)=Q->next;
free(Q);
}
return 0;
}
int WprowadzDane(TWsk *P)
{
int n, i;
TDane x;
printf("Dane ilu osob chcesz wprowadzic?: ");
scanf("%d", &n);
for(i=1; i<=n; i++)
{
printf("%d osoba: \n", i);
WprowadzStudenta(&x);
NaStos(&(*P), x);
}
return 0;
}
int UsunStos(TWsk *P)
{
TDane x;
while((*P)!=NULL)
{
ZeStosu(&(*P), &x);
WyswietlStudenta(x);
}
return 0;
}
int WyswietlStos(TWsk P)
{
while (P!=NULL)
{
WyswietlStudenta(P->d);
P=P->next;
}
return 0;
}
Zrobić tak:
int NajwiekszyElement(TWsk P)
{
int najwiekszy = 0;
int ile = 0;
while(P!=NULL)
{
if(P->d.rok_ur>najwiekszy)
najwiekszy = P->d.rok_ur;
++ile;
P = P->next;
}
if(ile==0)
{
printf("Brak najwiekszego elementu!");
return 0;
}
return 0;
}
W głowie wiem, że największy element jest tylko wtedy, gdy jest on większy od wszystkich pozostałych, jednak tutaj nie wiem czy czegoś nie pomieszałam. Byłabym wdzięczna za pomoc.