Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [pasca->C] Переписать готовую лабу из Pascal в Си


Автор: IceBeerG 17.4.2007, 20:52
Вот есть такая лаба, написанная на Паскале..Нужно переписать ее на Си..пожалуйста помогите..очень надо)))

Код

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.



Спасибо большое заранее)))


M
Alexeis
Модератор: используйте подсветку кода http://forum.vingrad.ru/index.php?showtopic=126445

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)