Вот есть такая лаба, написанная на Паскале..Нужно переписать ее на Си..пожалуйста помогите..очень надо))) Код | program SotrInfo; const ARRAY_LENGTH=4;{razmernost massiva} type TSotrInfo=record{tip dannyh osotrudnike} strFIO:string[50];{stroka - fio} iAge:integer;{vozrast} bVO:boolean;{voennoobyazannost} end; TArr=array[1..ARRAY_LENGTH] of TSotrInfo;{massiv s informaciey o sotrudnike} procedure InputData(var Arr:TArr);{procedura vvoda dannyh o sotrudnikah} var i:integer;{i - schetchik} ch:char;{dlya vvoda simvola} begin for i:=1 to ARRAY_LENGTH do{dlya i ot 1 do kolichestva sotrudnikov} begin writeln('Pozhaluysta vvedite dannye po ',i,'-mu sotrudniku'); writeln('FIO:'); readln(Arr[i].strFIO);{chitaem fio i-go sotrudnika} writeln('Age:'); readln(Arr[i].iAge);{chitaemvozrast i-go sotrudnika} writeln('VO?(y-da, inache - net)'); readln(ch); Arr[i].bVO:=UpCase(ch)='Y';{esli vveli "y", to voennoobyazan, inache net} end; end; procedure PrintRec(var Rec:TSotrInfo); begin writeln('FIO: ',Rec.strFIO);{pechat fio} writeln('Age: ',Rec.iAge);{pechat vozrasta} {pechat voennoobyazannosti} write('VO: '); if(Rec.bVO) then writeln('VO') else writeln('ne VO'); end; procedure PrintData(var Arr:TArr);{procedura pechati dannyh o sotrudnikah} var i:integer;{i-schetchik} begin for i:=1 to ARRAY_LENGTH do{dlya kazhdogo sotrudnika} PrintRec(Arr[i]); end; function GetYoungVONumber(var Arr:TArr):integer; {funkciya vozvrashaet nomer samogo molodogo voennoobyzannogo} var i,j,iResult,min:integer;{i,j-schetchiki, iResult - rezultat, min - minimalnyy vozrast} begin iResult:=0;{inicializaciya rezultata} i:=1;{inicializaciya schetchika} while(i<=ARRAY_LENGTH) and not (Arr[i].bVO) do{poka ne doshli do konca massiva i i-tyy sotrudnik ne voennoobyazan} inc(i);{uvelichivaem i} if i<=ARRAY_LENGTH then{esli i menshe dliny massiva, to est hotya by 1 voennoobyazannyy} begin iResult:=i;{zapominaem nomer 1 voennoobyazannogo} min:=Arr[i].iAge;{zapominaem ego vozrast kak minimalnyy} for j:=i+1 to ARRAY_LENGTH do{dly j ot sleduyushego za i do konca massiva} if (Arr[j].bVO)and(Arr[j].iAge<min) then{esli j-yy sotrudnik voennoobyazan i ego vozrast menshe minimalnogo} begin iResult:=j;{zapominaem novyy rezultat - nomer sotrudnika} min:=Arr[j].iAge;{zapominaem novyy minimalnyy vozrast} end; end; GetYoungVONumber:=iResult;{vozvrashaem rezultat - nomer samogo molodogo iz voennoobyazannyh} end; function GetOldAgeVO(var Arr:TArr):integer; {funkciya vozvrashet vozrast samogo vozrastnogo iz vo} var i,j:integer;{i,j-schetchiki} max:integer;{rezultat} begin max:=-1;{inicializaciya rezultata} if ARRAY_LENGTH>0 then{esli dlina massiva > 0} begin i:=1;{inicializaciya schetchika} while(i<=ARRAY_LENGTH) and not Arr[i].bVO do{poka ne konec massiva i Arr[i] ne VO} inc(i);{uvelichivaem i} if i<=ARRAY_LENGTH then{esli i menshe dliny massiva} begin max:=Arr[i].iAge;{zapominaem max vozrast pervogo vo} for j:=i+1 to ARRAY_LENGTH do{ot i+1 do konca massiva} if Arr[j].bVO and (Arr[j].iAge>max) then{esli Arr[i] - vo i ego vozrast bolshe} max:=Arr[j].iAge;{zapominaem novyy max vozrast} end; end; GetOldAgeVO:=max;{vozvrashaem rezultat} end; function GetOldAgeNeVO(var Arr:TArr):integer; {funkciya vozvrashaet vozrast samogo vozrastogo iz ne vo} var i,j:integer;{schetchiki} max:integer;{rezultat} begin max:=-1;{inicializaciya rezultata} if ARRAY_LENGTH>0 then{esli dlina massiva > 0} begin i:=1;{inicializaciya schetchika} while(i<=ARRAY_LENGTH) and Arr[i].bVO do{poka ne konec massiva i Arr[i] - VO} inc(i);{uvelichenie i} if i<=ARRAY_LENGTH then{esli ne konec massiva} begin max:=Arr[i].iAge;{zapominaem vozrast pervogo ne vo} for j:=i+1 to ARRAY_LENGTH do{ot j=i+1 do konca massiva} if not Arr[j].bVO and (Arr[j].iAge>max) then{esli Arr[i] ne vo i ego vozrast bolshe} max:=Arr[j].iAge;{zapominaem vozrast} end; end; GetOldAgeNeVO:=max;{vozvrashaem maksimalnyy vozrast} end; var Arr:TArr; i,result:integer; begin writeln('Pozhaluysta vvedite informaciyu o sotrudnikah:'); InputData(Arr);{vvod dannyh} writeln('Ishodnye dannye:'); PrintData(Arr);{pechat dannyh} result:=GetYoungVONumber(Arr);{poluchem nomer molodogo} if result>0 then{esli on est} begin writeln('Samyy molodoy iz voennoobyazannyh:'); PrintRec(Arr[result]);{pechataem informaciyu} end; result:=GetOldAgeVO(Arr);{uznaem maksimalnyy vozrast} if result>0 then{esli vozrast > 0} begin writeln('Samye vozrostnye iz VO:'); {pechat informacii} for i:=1 to ARRAY_LENGTH do if Arr[i].bVO and (Arr[i].iAge=result) then PrintRec(Arr[i]); end; result:=GetOldAgeNeVO(Arr);{uznaem maksimalnyy vozrast} if result>0 then{esli vozrast > 0} begin writeln('Samye vozrostnye iz ne VO:'); {pechat informacii} for i:=1 to ARRAY_LENGTH do if not Arr[i].bVO and (Arr[i].iAge=result) then PrintRec(Arr[i]); end; readln;{zhdem vvoda} end.
|
Спасибо большое заранее))) Это сообщение отредактировал(а) Alexeis - 19.4.2007, 13:33
|