C++ struktury pracownicy

0

Hejka :) Czy mógłby ktoś poprawić błędy w C++?

Mam problem z moim kodem, program nie pokazuje sum, srednich itp. tylko pokazuje liczby typu -303892729874238.
Jak to zmienic zeby działał prawidłowo?

  1. Utwórz strukturę o nazwie pracownicy w której będą przechowywane następujące dane:
  • dane osobowe pracownika ( imię, nazwisko, pesel); dane te zapisane powinny być w strukturze dane_os;
  • wysokość wynagrodzenia pracownika w każdym miesiącu 2010r.;
  • średnia wysokość wynagrodzenia pracownika w roku 2010r.;
  1. Napisz funkcję wpisz, która wczytuje dane do struktury pracownicy, przy czym użytkownik wpisuje dane pracownika oraz wysokość wynagrodzenia. Średnia wysokość wynagrodzenia powinna być w tej funkcji doliczona i wpisana w odpowiednie pole.
  2. Napisz funkcję drukuj, która drukuje dane pracownika zapisane w strukturze pracownicy (dane osobowe, wysokość wynagrodzenia oraz średnią wysokość wynagrodzenia).
  3. W funkcji main utwórz tablicę struktur pracownicy o nazwie firma, w której zapisane będą informacje o wszystkich pracownikach tej firmy. Następnie wpisz do niej dane pracowników i wydrukuj ja na ekran (używając funkcji wpisz oraz drukuj).
  4. Napisz funkcję średnia, która oblicza średnią miesięczną wynagrodzenia w tej firmie.
  5. Napisz funkcję max która znajduje najlepiej zarabiającego pracownika tej firmy w roku 2010 i wydrukuj jego dane na ekran.
  6. Napisz funkcję najstarszy, która znajduje najstarszego pracownika tej firmy i wydrukuj jego dane na ekran (Można przyjąć, że w firmie nie ma osób urodzonych tego samego dnia).

Oto mój kod:

include <iostrem>
include <conio.h>
include <string>
include <cstdlib>
using namespace std;


long long sw=0;
struct pracownicy
{
string imie;
string nazwisko;
long long pesel;
long long wynagrodzenie;
} robotnicy[ 2 ];

void wpisz()
{
for( int i = 0; i < 2; i++ )
{
cout < "Podaj Imie " < " " < i + 1 < "Pracownika :";
cin >> robotnicy[ i ].imie;
cout < "Podaj Nazwisko " < " " < i + 1 < "Pracownika :";
cin >> robotnicy[ i ].nazwisko;
cout < "Podaj Pesel " < " " < i + 1 < "Pracownika :";
cin >> robotnicy[ i ].pesel;
cout < "Podaj Wynagrodzenie " < " " < i + 1 < "Pracownika :";
cin >> robotnicy[ i ].wynagrodzenie;
}
}
void wyswietl()
{
pracownicy robotnicy[ 2 ];
for( int i = 0; i < 2; i++ )
{
cout << robotnicy[ i ].imie << " ";
cout << robotnicy[ i ].nazwisko << " ";
cout << robotnicy[ i ].pesel << " ";
cout << robotnicy[ i ].wynagrodzenie << endl;
}
}

long long suma()
{
wpisz();
for( int i = 0; i < 2; i++ )
{
sw = sw + robotnicy[ i ].wynagrodzenie;
}
cout << "Suma wynagrodzenia :" << sw;

return sw;
}
long long srednia()
{
long long sredniaw;
for( int i = 0; i < 2; i++ )
{
sredniaw = sw / 2;
cout << "Srednia wynagrodzenia pracownikow :" << sredniaw;
}
return sredniaw;
}
long long max()
{
int max = 0;
for( int i = 0; i < 2; i++ )
{
if( robotnicy[ i ].wynagrodzenie < robotnicy[ i + 1 ].wynagrodzenie )
{
max = robotnicy[ i + 1 ].wynagrodzenie;
cout << max;
}

}
cout << "najwyzszy zarobek" << max;
return max;
}
int najstarszy()
{
int stary = 0;
for( int i = 0; i < 2; i++ )
{
if( robotnicy[ i ].pesel < robotnicy[ i + 1 ].pesel )
{
stary = robotnicy[ i + 1 ].pesel;
}
}
cout << "najstarszy pracownik" << stary;
return stary;
}


int main()
{
pracownicy robotnicy;
wpisz();
wyswietl();
max();
najstarszy();
system( "pause" );
return 0;
}
0

Bo wypisujesz niezainicjalizowaną tablice struktur.

void wyswietl()
{
pracownicy robotnicy[ 2 ]; //<-- co to tu robi skoro masz już taką samą, tylko że globalną?
for( int i = 0; i < 2; i++ )
{
cout << robotnicy[ i ].imie << " ";
cout << robotnicy[ i ].nazwisko << " ";
cout << robotnicy[ i ].pesel << " ";
cout << robotnicy[ i ].wynagrodzenie << endl;
}
}
0
  1. rób wcięcia
  2. po co używasz globalnych wartości do lokalnych obliczeń (np sw przy liczeniu sumy)
  3. oddziel wypisywanie i obliczenia
  4. zmień sposób obliczania starszeństwa, bo po peselach w prosty sposob się nie da...(kodowanie dat urodzonych powyżej 2000roku)
0

Nie pomogliscie mi ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1