Dostal jsem za úkol v rámci seminární práce vytvořit program v Pascalu a nevím si s tím moc rady- použití příkazů..
Úkol:
Program pro účetní,která si vede statistiku zaměstnanců. Program má umět vypočítat průměrný plat zaměstnance v daném období, najít měsíc,kdy si zaměstnanec vydělal maximum a minimum, spočítat průměrný plat zaměstnanců za určitý počet měsíců/celé období.
probíhat by to mělo asi takhle:
Uživatel si vybere, kolik zaměstnanců chce zadat, a na jak dlouhé období(v měsících).
Zadá data z klávesnice a celá struktura se přehledně vypíše.
Poté bude uživatel dotázán, co chce spočítat (průměr,maximum,minimum..) a program to vypíše..
Děkuji moc,pokud se najde někdo schopen pomoci. :)
Fórum › Pascal
Seminární práce - prosím pomožte:
S tým recordom si na to šiel dobre, proste si musíš navrhnúť nejakú štruktúru ktorá bude zastupovať konkrétneho zamestnanca takže asi bude obsahovať meno, priezvisko, plat ... Potom si podľa toho koľko tých zamestnancov chceš vytvoríš pole zamestnancov a budeš pracovať potom iba s tým to poľom.
program UCETNI_PROGRAM;
Type mzdytab = Record
jmeno: string[15];
mesic: integer;
mzda: integer;
end;
Type Mzdytab2= array [1..50] of Mzdytab;
var Pracmax, obdobi, i,j :integer;
prehled: mzdytab;
prehled2:mzdytab2;
begin
writeln('Zadejte delku obdobi v mesicich:');
Readln(obdobi);
Writeln('Zadejte pocet pracovniku');
Readln(Pracmax);
for i:= 1 to Pracmax do
begin
writeln('Zadejte jmeno pracovnika:');
readln(prehled.jmeno);
for j:=1 to obdobi do
begin
writeln ('Zadejte mesic pro pracovnika ' ,prehled.jmeno);
readln(prehled.mesic);
writeln ('Zadejte mzdu pro pracovnika ',prehled.jmeno, ' pro mesic ' ,prehled.mesic);
readln(prehled.mzda);
end;
end;
writeln('Celkovy prehled pracovniku a mezd pracovniku dle mesicu');
{for i:=1 to Pracmax do}
begin
writeln('Poradove cislo Pracovnik Mesic Mzda ');
writeln( i, prehled.jmeno, prehled.mesic, prehled.mzda);
end;
readln;
end.
Ty to síce ukladáš do premennej prehled ale stále znova a znova, takže v konečnom dôsledku v tej premennej na konci budeš mať posledného zadaného pracovníka. Moja rada ukladaj ho do poľa a potom vypisuj to pole.
Tak jsem se to pokusil předělat na to pole, nicméně teď nevim, jak zajistit jakýsi přehledný výpis všeho a všech- přehled..
program UCETNI_PROGRAM;
Type mzdytab = Record
jmeno: string[15];
mesic: integer;
mzda: integer;
end;
Type Mzdytab2= array [1..12] of Mzdytab;
Type Mzdytab3= array [1..20] of Mzdytab2;
var Pracmax, obdobi, i,j :integer;
{prehledpom: Mzdytab2}
prehled: Mzdytab3;
begin
writeln('Zadejte delku obdobi v mesicich:');
Readln(obdobi);
Writeln('Zadejte pocet pracovniku');
Readln(Pracmax);
for i:= 1 to Pracmax do
begin
writeln('Zadejte jmeno pracovnika:');
readln(prehled[i,1].jmeno);
for j:=1 to obdobi do
begin
writeln ('Zadejte mesic pro pracovnika ' ,prehled[i,j].jmeno);
readln(prehled[i,j].mesic);
writeln ('Zadejte mzdu pro pracovnika ',prehled[i,j].jmeno, ' pro mesic ' ,prehled[i,j].mesic);
readln(prehled[i,j].mzda);
end;
end;
writeln('Celkovy prehled pracovniku a mezd pracovniku dle mesicu');
{for i:=1 to Pracmax do}
begin
writeln('Poradove cislo Pracovnik Mesic Mzda ');
writeln( i, prehled[1,1].jmeno, prehled[1,1].mesic, prehled[1,1].mzda);
end;
readln;
end.
To bunjee :
Nejdřív si prosímtě udělej jasno co chceš ukládat a do jaké struktury. Když tak si to nějak namaluj a pak teprve piš program.
Protože momentálně máš nadeklarováno pole dvaceti polí s dvanácti položkami ve kterých je jméno, měsíc a mzda. Jestli dobře počítám, je to celkem 240 jmen, 240 měsíců a 240 mezd.
Nemělo to být spíš 20 (či původně 50) jmen a u každého z nich 12 měsíčních mezd?
Takže tvoje stuktura vypadá nějak takto:
mzdytab2[1](jmeno,mesic,mzda)
mzdytab2[2](jmeno,mesic,mzda)
...
mzdytab2[12](jmeno,mesic,mzda)
a to celé ještě 20x
Doporučení: názvy si vol tak, aby se v tom dobře orientovalo (takhle to je samá mzdytab a kdo má poznat, co to má být), typy já pojmenovávám třeba Tosoba, Tmzdy apod... Proměnné pak bez T - takže osoba, mzdy a pod...
Takže podle zadání si nadeklaruj základní typ pro jednu osobu (Tosoba), která bude mít položku jméno a položku mzdy.
Položka mzdy (Tmzdy) by mohla být pole dvanásti hodnot. Pro který měsíc je konkrétní mzda bude dáno indexem pro mzdy a nemusíš to zvlášť ukládat. No a pro všechny osoby to bude typ Tosoby, který bude obsahovat 20 (nebo 50) osob typu Tosoba.
Výsledek by vypadal nějak takto:
osoby[1](jmeno,mzdy[1],mzdy[2]...mzdy[12])
osoby[2](jmeno,mzdy[1],mzdy[2]...mzdy[12])
...
osoby[20](jmeno,mzdy[1],mzdy[2]...mzdy[12])
No a přehledný výpis všeho?
takže pokud načteš "pocet" osob a u každé z nich "obdobi" měsíčních mezd, tak třeba takto:
write('Jméno':15,' '); for m:=1 to obdobi do write(i:5); writeln;
for i=1 to pocet do
begin
write(osoba[i].jmeno:15,' ');
for m:=1 to obdobi do write(osoba[i].mzdy[m]:5);
writeln;
end;
PS: pro ladění programu ti doporučuju nastudovat typové konstanty, nebudeš pak muset při každým spouštění furt dokola zadávat nějaká jména a mzdy, ale budeš je mít už nachystané.
V takovém případě nedeklaruj pole pro 20 osob, ale třeba jen pro pět, protože v typové konstantě musí být uvedeny všechny položky pole. Až to odladíš, můžeš přidat...
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Seminární práce — založil marwe.k
Seminární práce do školy — založil Peter
Seminární práce Assembler — založil Martin
PROSÍM, POMOZTE — založil Jakub Chábek
Pomozte mi prosim... — založil Robo
Moderátoři diskuze