?
main programm:
--------------------------------------------------------------------------------
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <assert.h>
#include <iostream.h>
#include <string.h>
#include "Buchhaltung.h"
// Feldgroesse
const unsigned mitarbeiter_max=30;
void main()
{
unsigned anzahl_der_initialisierten_Elemente=0;
// Feld deklarieren
struct Mitarbeiter alleMitarbeiter[mitarbeiter_max];
// Feld initialisieren
anzahl_der_initialisierten_Elemente = initialisierung(alleMitarbeiter);
// Funktionstests
assert(anzahl_geschlecht_mitarbeiter(alleMitarbeiter, anzahl_der_initialisierten_Elemente, true)==1);
assert(anzahl_geschlecht_mitarbeiter(alleMitarbeiter, anzahl_der_initialisierten_Elemente, false)==2);
assert(personalnummer_sortiert(alleMitarbeiter, anzahl_der_initialisierten_Elemente)==false);
// Gehaelter erhoehen
gehalterhoeung(alleMitarbeiter, anzahl_der_initialisierten_Elemente, 3.0f, 100);
// Unsortiertes Feld ausgeben
ausgabe(alleMitarbeiter, anzahl_der_initialisierten_Elemente);
// Feld mit Quiksort sortieren
sort(alleMitarbeiter, anzahl_der_initialisierten_Elemente);
// Sortiertes Feld ausgeben
ausgabe(alleMitarbeiter, anzahl_der_initialisierten_Elemente);
}
funktionen:
-------------------------------------------------------------------------------
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <assert.h>
#include <iostream.h>
#include <string.h>
#include "Buchhaltung.h"
void quickSort(Mitarbeiter array[], int left, int right);
void swap(Mitarbeiter in_array[], int i, int j);
unsigned initialisierung(Mitarbeiter Mitarbeiter_Feld[])
{
unsigned i=0;
strcpy(Mitarbeiter_Feld[i].vorname,"Hans");
strcpy(Mitarbeiter_Feld[i].nachname,"Haider");
Mitarbeiter_Feld[i].personalnummer=2;
Mitarbeiter_Feld[i].alter=32;
Mitarbeiter_Feld[i].gehalt=100;
Mitarbeiter_Feld[i].geschlecht=true;
strcpy(Mitarbeiter_Feld[++i].vorname,"Irene");
strcpy(Mitarbeiter_Feld[i].nachname,"Blabla");
Mitarbeiter_Feld[i].personalnummer=1;
Mitarbeiter_Feld[i].alter=28;
Mitarbeiter_Feld[i].gehalt=1000;
Mitarbeiter_Feld[i].geschlecht=false;
strcpy(Mitarbeiter_Feld[++i].vorname,"Tina");
strcpy(Mitarbeiter_Feld[i].nachname,"Wert");
Mitarbeiter_Feld[i].personalnummer=3;
Mitarbeiter_Feld[i].alter=31;
Mitarbeiter_Feld[i].gehalt=1250;
Mitarbeiter_Feld[i].geschlecht=false;
return ++i;
}
unsigned anzahl_geschlecht_mitarbeiter(Mitarbeiter Mitarbeiter_Feld[], unsigned mitarbeiter_anzahl, bool geschlecht)
{
unsigned anzahl=0;
for(unsigned i=0; i<mitarbeiter_anzahl; i++)
{
if(Mitarbeiter_Feld[i].geschlecht==geschlecht)
anzahl++;
}
return anzahl;
}
bool personalnummer_sortiert(Mitarbeiter Mitarbeiter_Feld[], unsigned mitarbeiter_anzahl)
{
unsigned anzahl=0;
for(unsigned i=0; i<mitarbeiter_anzahl-1; i++)
{
if(Mitarbeiter_Feld[i].personalnummer < Mitarbeiter_Feld[i+1].personalnummer)
{
anzahl++;
}
}
if(anzahl==(mitarbeiter_anzahl-1))
return true;
return false;
}
void gehalterhoeung(Mitarbeiter Mitarbeiter_Feld[], unsigned mitarbeiter_anzahl, float prozentsatz, unsigned sockelbetrag)
{
for(unsigned i=0; i<mitarbeiter_anzahl; i++)
{
Mitarbeiter_Feld[i].gehalt += (Mitarbeiter_Feld[i].gehalt * prozentsatz/100) + sockelbetrag;
}
}
void ausgabe(Mitarbeiter Mitarbeiter_Feld[], unsigned mitarbeiter_anzahl)
{
for(unsigned i=0; i<mitarbeiter_anzahl; i++)
{
printf("Vorname: %s",Mitarbeiter_Feld[i].vorname);
printf("\nNachname: %s",Mitarbeiter_Feld[i].nachname);
printf("\nPersonalnummer: %d",Mitarbeiter_Feld[i].personalnummer);
printf("\nAlter: %d",Mitarbeiter_Feld[i].alter);
printf("\nGehalt: %0.01f",Mitarbeiter_Feld[i].gehalt);
printf("\nGeschlecht: %d\n\n",Mitarbeiter_Feld[i].geschlecht);
}
printf("\n\n");
}
void sort(Mitarbeiter Mitarbeiter_Feld[], unsigned feldgroesse)
{
quickSort(Mitarbeiter_Feld,0, feldgroesse - 1);
}
void quickSort(Mitarbeiter array[], int left, int right)
{
int current, last;
if (left >= right) return;
swap(array, left, (left+right)/2);
last = left;
for (current = left + 1; current <= right; current++)
{
if (array[current].personalnummer < array[left].personalnummer)
swap(array, ++last, current);
}
swap(array, left, last);
quickSort(array, left, last-1);
quickSort(array, last+1, right);
}
void swap(Mitarbeiter in_array[], int i, int j)
{
struct Mitarbeiter temp;
memcpy(&temp, in_array+i, sizeof(struct Mitarbeiter));
memcpy(in_array+i, in_array+j, sizeof(struct Mitarbeiter));
memcpy(in_array+j, &temp, sizeof(struct Mitarbeiter));
}
header-datei:
--------------------------------------------------------------------------------
struct Mitarbeiter
{
char vorname[100];
char nachname[100];
unsigned personalnummer;
unsigned alter;
bool geschlecht;
float gehalt;
};
unsigned anzahl_geschlecht_mitarbeiter(Mitarbeiter Mitarbeiter_Feld[], unsigned mitarbeiter_anzahl, bool geschlecht);
unsigned initialisierung(Mitarbeiter Mitarbeiter_Feld[]);
bool personalnummer_sortiert(Mitarbeiter Mitarbeiter_Feld[], unsigned mitarbeiter_anzahl);
void gehalterhoeung(Mitarbeiter Mitarbeiter_Feld[], unsigned mitarbeiter_anzahl, float prozentsatz, unsigned sockelbetrag);
void ausgabe(Mitarbeiter Mitarbeiter_Feld[], unsigned mitarbeiter_anzahl);
void sort(Mitarbeiter Mitarbeiter_Feld[], unsigned feldgroesse);
funzt nun ganz prima;-))
was meint ihr dazu?
cu