Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2010, 17:08   #1
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию Pascal -> C++

Код:
{ Construirea arborelui }    
function ConsArb(St, Dr: Integer): PNod;
var  Arbore: PNod;
begin  New(Arbore);
  with Arbore^ do
  begin    ValSt := St;    ValDr := Dr;
    if St < Dr then    begin      ArbSt := ConsArb(St, NrMul[Dr, St]);
      ArbDr := ConsArb(NrMul[Dr, St] + 1, Dr);    end
      else    begin      ArbSt := nil;     ArbDr := nil;    end;
  end;  ConsArb := Arbore;
end;
Доброго времени суток всем экспертам, не могли бы вы подсказать как данная конструкция будет выглядеть на си ?
with Arbore^ do

- Большой пасяб за помощь
coNsept вне форума Ответить с цитированием
Старый 01.06.2010, 17:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

чтот тип:
Код:
PNod ConsArb(int St,Dr){
 PNod Arbore=new PNod;
 Arbore.ValSt=St;
 Arbore.ValDr=Dr;
 if(st<dr) {
  ArbSt=ConsArb(St,NrMul[Dr][St]);
  ArbDr=ConsArb(NrMul[Dr][St]+1,Dr);
 } else {
  ArbSt=null;
  ArbDr=null;
 }
 return Arbore;
}
За точность не ручаюс
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.06.2010, 18:14   #3
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

немного поправил код Stilet'а
Код:
PNod ConsArb(int St, int Dr) {
    PNod Arbore = (PNod)malloc(sizeof(Nod));// = new Nod; // но не PNod
    Arbore->ValSt=St;
    Arbore->ValDr=Dr;
    if(St<Dr) {
        Arbore->ArbSt=ConsArb(St,NrMul[Dr][St]); // если ArbSt член структуры Nod
        Arbore->ArbDr=ConsArb(NrMul[Dr][St]+1,Dr); // если ArbDr член структуры Nod
    } else {
        ArbSt=0; //NULL
        ArbDr=0; //NULL
    }
    return Arbore;
}
netrino вне форума Ответить с цитированием
Старый 01.06.2010, 18:46   #4
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Stilet, netrino - спасиб за перевод, но я так и не понял какую роль выполняет конструкция with Arbore^ do
coNsept вне форума Ответить с цитированием
Старый 01.06.2010, 19:02   #5
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

В принципе with smth. do является неким аналогом using-директивы, только не для пространств имен, а для классов.
Если using-директива делает в данной области видимости все содержимое пространства имен глобальным, то with-do делает в области видимости глобальным содержимое класса. В C++ точного аналога with-do нет, вместо него используется явное обращение к членам класса.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 02.06.2010, 07:05   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
with-do делает в области видимости глобальным содержимое класса.
Я уточню: With работает не только с классами а и с записями. Если указать некое свойство записи в определении то в теле этого оператора будет учитываться что работа идет именно с этим свойством. А это может быть (скорее всего как в случае у автора) работа с записью (в Си с структурой)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.06.2010, 08:32   #7
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
With работает не только с классами а и с записями
Да, действительно. Я это как-то молчаливо подразумевал, впрочем, не вполне обоснованно - в паскале записи и классы имеют принципиальное отличие, в противоположность C++, где технически между структурой и классом разница исключительно формальная.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Turbo Pascal or Pascal ABC Ikram Паскаль, Turbo Pascal, PascalABC.NET 0 27.04.2010 13:44
а free pascal не читает задачи которые написаны на turbo pascal? demonara Паскаль, Turbo Pascal, PascalABC.NET 3 25.05.2009 16:28
Перевод кода из Pascal в Object Pascal zemskov77 Общие вопросы Delphi 1 03.01.2009 09:37