Sprawdzenie zadania [C]

vokus
Użytkownik
Użytkownik
Posty: 50
Rejestracja: 8 lis 2008, o 00:03
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 2 razy

Sprawdzenie zadania [C]

Post autor: vokus »

Witam. Mam pewnie problem z zadaniem z C. Otóż mam do napisania funkcję, która przechodzi po liście struktur { wiek, pensja, i wskaźnik do nastepnego}, i oblicza średnią pensji pracowników mających pomiędzy 25, a 30 lat ....napisałem coś takiego:

Kod: Zaznacz cały

float srednia (struct element * head){
      struct element * tmp;
      float 0.0;
      int i;
      for (tmp=head; tmp->nast!=NULL; tmp=tmp->nast){
          if(tmp->wiek<30 && tmp->wiek>25){ 
                          x=x+tmp->pensja;
                          i++;
                          }
                          }
                          return x/i;
 }

i mam jeszcze pytanie do innego zadania. Chodzi mi o naprowadzenie mnie na jakiś pomysł. Trzeba otworzyć dwa pliki binarne z posortowanymi danymi i zapisać w jednym pliku, tak żeby były posortowane ( tam według wieku czy coś takiego, podobna struktura do powyższej). Otworzyć zapisać i zamknąć umiem ale jak posortować to wg. jakiejś konkretnej wielkości w strukturze to już nie za bardzo. Stworzyć listę i wstawiać sortując? Może da rade jakoś prościej, bo to byłby doś pracochłonny zabieg
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

Sprawdzenie zadania [C]

Post autor: Afish »

Odnośnie drugiego pytania, to wystarczy dowolny algorytm sortujący z odpowiednim komparatorem (czyli funkcją porównującą elementy). A co do pierwszego pytania, to zastanów się co się stanie, gdy do funkcji zostanie przekazany NULL.
vokus
Użytkownik
Użytkownik
Posty: 50
Rejestracja: 8 lis 2008, o 00:03
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 2 razy

Sprawdzenie zadania [C]

Post autor: vokus »

Pierwsze już wiem jak. Czyli w drugim wystaczy posortować i zapisać? Nie trzeba tworzyć tablicy czy listy?
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

Sprawdzenie zadania [C]

Post autor: Afish »

Jak to sobie przechowasz, to już Twój wybór. Wczytujesz cały plik do pamięci i przechowujesz go jako tablica/kolejka/lista/wektor/drzewo/etc..., potem to sortujesz i zapisujesz do drugiego pliku. Możesz zastosować sortowanie przez wstawianie na bieżąco w trakcie tworzenia listy, tak jak mówiłeś. Zakładając, że znasz liczbę danych w pliku, to ja zrobiłbym strukturę, wczytał cały plik do pamięci, następnie zdefiniował własny komparator i odpalił metodę qsort wykorzystując ten komparator. Potem tylko zapisanie do pliku i po zabawie.
vokus
Użytkownik
Użytkownik
Posty: 50
Rejestracja: 8 lis 2008, o 00:03
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 2 razy

Sprawdzenie zadania [C]

Post autor: vokus »

No niestety liczba danych nie jest znana. Czyli lista...
ODPOWIEDZ