Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [pasca->C] Переписать готовую лабу из Pascal в Си 
:(
    Опции темы
IceBeerG
Дата 17.4.2007, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 17.4.2007

Репутация: нет
Всего: нет



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

Код

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


Это сообщение отредактировал(а) Alexeis - 19.4.2007, 13:33
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0565 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.