Valaki aki profi programozásban az tud nekem erre a feladatra egy kódot írni?
Írjon fájlkezelő programot a következő probléma megoldására:
Kérje be a felhasználótól „*” végjelig név, hallgatói átlag, lakhatási támogatás
adatokat.
Számoljon ösztöndíjat mindegyes hallgatónak a következők figyelembevételével:
0 <= átlag < 2.0 nem jár ösztöndíj
2.0 <= átlag < 3.1 10 000 Ft
3.1 <= átlag < 4.0 15 000 Ft
4.0 <= átlag <= 5.0 25 000 Ft
Írja ki a név, átlag, ösztöndíj, lakhatási támogatás és összesen (ösztöndíj+lakhatási)
adatokat egy szöveges állományba, melynek legyen „hallgato.txt” a neve.
Majd olvassa vissza az adatokat, és írassa ki táblázatos formában.
Végezetül számolja ki, hogy átlagosan mennyi támogatást (összesen, azaz ösztöndíj és
lakhatási) kap egy hallgató.
#2 kérdése teljesen jogos. Azonkívül ha már megoldást vársz, legalább specifikáld le a dolgot tisztességesen!
Kell-e pl hibakezelés? Milyen libek használhatók? Mi a céloprendszer? Mennyit vagy hajlandó áldozni a programra?
Tetszik a feladat, fel is fogom rakni az oldalamra ezért elkészítettem a megoldást. De el kell, hogy vegyem a kedved mert ez pascal-ban készült :)
program feles_sor_ha_atirom_c_be;
type hallgato = record
nev : string[50];
atlag : real;
tamogatas : integer;
osztondij :integer;
teljes : integer;
end;
var
bevitel: hallgato;
seged : string;
hiba : integer;
adatfile : Textfile;
adatfilenev: string;
hallgatoszam : integer;
osszestamogatas : integer;
begin
hallgatoszam := 0;
osszestamogatas := 0;
adatfilenev:='c:\hallgato.txt';
{$I-}
Assign(adatfile, adatfilenev);
ReWrite(adatfile);
repeat
hiba := 1;
WriteLn;
Write('Név: ');
ReadLn(bevitel.nev);
if bevitel.nev= '*' then Break;
while (hiba <> 0) or (bevitel.atlag > 5 ) do
begin
Write('Átlag: ');
ReadLn(seged);
Val(seged, bevitel.atlag, hiba);
end;
hiba := 1;
while hiba <> 0 do
begin
Write('Lakhatási támogatás: ');
ReadLn(seged);
Val(seged, bevitel.tamogatas, hiba);
end;
hiba:=round(bevitel.atlag * 10);
case hiba of
0..20 : bevitel.osztondij := 0;
21..30 : bevitel.osztondij := 10000;
31..40 : bevitel.osztondij := 15000;
41..50 : bevitel.osztondij := 25000;
end;
bevitel.teljes := bevitel.tamogatas + bevitel.osztondij;
WriteLn(adatfile, bevitel.nev, #13, bevitel.atlag:1:1, #13, bevitel.tamogatas, #13, bevitel.osztondij, #13, bevitel.teljes);
until bevitel.nev='*';
Close(adatfile);
Reset(adatfile);
WriteLn;
Write('Név ');
Write('Átlag ');
Write('Támogatás ');
Write('Ösztöndíj ');
WriteLn('Öszesen ');
WriteLn('----------------------------------------------------------------------');
while not eof(adatfile) do
begin
Readln(adatfile, bevitel.nev);
Readln(adatfile, bevitel.atlag);
Readln(adatfile, bevitel.tamogatas);
Readln(adatfile, bevitel.osztondij);
Readln(adatfile, bevitel.teljes);
osszestamogatas := osszestamogatas + bevitel.teljes;
WriteLn;
inc(hallgatoszam);
while Length(bevitel.nev) < 30 do bevitel.nev := bevitel.nev + ' ';
Write(bevitel.nev:30,bevitel.atlag:10:1,bevitel.tamogatas:10,bevitel.osztondij:10,bevitel.teljes:10);
end;
Close(adatfile);
{$I+}
WriteLn;
WriteLn;
Writeln('Átlagos támogatás: ', osszestamogatas / hallgatoszam:10:0, ' / fő');
end.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!