Dana jest następująca struktura listy:
struct lista {
float a, b;
struct lista *n;
};
Napisz funkcję, która zmodyfikuje listę przechowującą prostokąty w taki sposób, że prostokąty,
których pole jest mniejsze niż średnia arytmetyczna wszystkich elementów znajdą się na końcu listy.
Zamiany elementów dokonaj bez alokowania nowej pamięci (za rozwiązanie zadania z alokacją
pamięci można otrzymać maksymalnie 13 punktów). Względna kolejność elementów w obrębie
podzbiorów mniejsze oraz większe równe średniej powinna zostać zachowana. Wskaźnik na
początek listy przekaż jako parametr funkcji.
oto kod
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define X 2.2
struct element
{
float x,y;
struct element* nast;
};
typedef struct element* ADRES;
void funkcja(ADRES pierwszy)
{
ADRES pom=pierwszy;
int ile=0;
float srednia=0.0;
float pole=0.0;
float suma=0.0;
while(pom!=NULL)
{
suma=suma+(pom->x)+(pom->y);
ile++;
pom=pom->nast;
}
srednia=suma/ile;
ADRES pom1=pierwszy;
while(pom1!=NULL)
{
pole=(pom1->x)*(pom->y);
if(pole<srednia)
{
//tutaj prostokat powinien ladowac na koniec
}
pole=0.0;
pom1=pom1->nast;
}
}
int main()
{
return 0;
}
mam problem z ustawieniem tych elementów prostokatow których pole jest mniejsze na koniec listy?może wie ktoś jak to powinno wyglądać?