1

Тема: переведення коду з однієї мови на іншу

з паскаля на С , паскаль не знаю , а код потрібен

var
  s: string;
  i, back: integer;
begin
  s := 'aga not non stop begin end assa';

  i := 1;
  while i <= length(s) do begin
    while(i <= length(s)) and (s[i] = ' ') do inc(i);
    if i <= length(s) then begin
      back := i;
      while(i<=length(s)) and (s[i] <> ' ') do inc(i);
      if s[back] = s[i - 1] then writeln(copy(s, back, i - back));
    end;
  end;
end.

2

Re: переведення коду з однієї мови на іншу

Програма друкує всі слова (слово - довільна послідовність символів серед яких нема пробілу) в стовпчик. Тепер вам залишається написати таку саму на C.


P.S. Я теж паскаля не знаю, як і C, тому перекладу на Python:

import re
s = 'aga not non stop begin end assa'
print re.sub(' +', '\n', s)

3

Re: переведення коду з однієї мови на іншу

Перекладати з мову на мову в загальному випадку складніше, ніж писати з нуля за умовою.
Хоча є і автоматичні перекладачі, хоча їхній код вам, швидше за все, не сподобається.

4

Re: переведення коду з однієї мови на іншу

koala написав:

Перекладати з мову на мову в загальному випадку складніше, ніж писати з нуля за умовою.

Всього лише на константу складніше. :) Просто додається крок - зрозуміти що робить оригінальна програма, але я це вже зробив, залишилось написати код на C, але топікстартер стверджував що це вміє.

5 Востаннє редагувалося koala (13.01.2014 10:17:42)

Re: переведення коду з однієї мови на іншу

bunyk написав:

Просто додається крок - зрозуміти що робить оригінальна програма

В такому разі на C ще легше:

#include <stdio.h>
void main(void)
{
  printf("aga\nnot\nnon\nstop\nbegin\nend\nassa");
}

Чи все ж треба не те, що робить оригінальна програма, а виконати певне завдання, під яке оригінальна програма писалася?

6

Re: переведення коду з однієї мови на іншу

tarasvladyka написав:

з паскаля на С , паскаль не знаю , а код потрібен

Прихований текст

var
  s: string;
  i, back: integer;
begin
  s := 'aga not non stop begin end assa';

  i := 1;
  while i <= length(s) do begin
    while(i <= length(s)) and (s[i] = ' ') do inc(i);
    if i <= length(s) then begin
      back := i;
      while(i<=length(s)) and (s[i] <> ' ') do inc(i);
      if s[back] = s[i - 1] then writeln(copy(s, back, i - back));
    end;
  end;
end.

Прихований текст

з паскаля на С

Дякую, що вказали з якої мови потрібно перевести.

паскаль не знаю

Вибачте за грубість, але якщо ви Pascal не знаєте, навіщо вам код на С?
Просто з цікавості, де ви взяли цей код?

а код потрібен

Ну, якщо потрібен, можливо ви вже щось самі намагались зробити, продемонструйте будь-ласка, можливо в вас виникли якісь питання? Запитуйсте, не соромтесь.

"Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."
- Linus Torvalds