6 / 6 / 2
Регистрация: 13.04.2012
Сообщений: 57
1

Pascal to C++

21.04.2012, 20:46. Показов 3562. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Может кто-нибудь перевести из Pascal на C++?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
var 
    os: string; 
    s: string; 
    p: integer; 
    ts: string; 
    c: boolean; 
begin 
    Assign(input, 'input.txt'); 
    reset(input); 
    Assign(output, 'output.txt'); 
    rewrite(output); 
 
    while not EOF(input) do 
    begin 
        readln(os); 
        c:= false; 
        s:=os; 
 
        repeat 
            p := Pos(' ', s); 
            if p>0 then Delete(s, p, 1); 
        until p=0; 
 
        ts := Copy(s, Length(s)-2, 3); 
        if (ts='+1;') or (ts='-1;') then 
        begin 
          Delete(s, Length(s)-2, 3); 
          p := pos(':=', s); 
          if p>0 then 
          begin 
            if Length(S) mod 2 = 0 then 
            begin 
                if Copy(s, 1, Length(s) div 2-1) = Copy(s, 2+Length(s) div 2, Length(s)) then 
                begin 
                    c:= true; 
                    if ts[1] = '-' then 
                        s := 'Dec('+Copy(s, 1, Length(s) div 2-1)+');' 
                    else 
                        s := 'Inc('+Copy(s, 1, Length(s) div 2-1)+');' 
 
                end; 
            end; 
          end; 
 
        end; 
        if c then 
            writeln(s) 
        else 
            writeln(os); 
    end; 
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.04.2012, 20:46
Ответы с готовыми решениями:

Turbo Pascal, Pascal ABC, Free Pascal, PascalABC.NET - в чем разница?
Всем привет, решил изучать Паскаль, но на форуме увидел 4 его версии - Turbo Pascal, Pascal ABC,...

Нужно перевести код из Turbo Pascal в Pascal ABC.NET
Доброго времени суток. На форуме находил похожие темы, но к сожалению так и не смог разобраться....

Нужно перевести программу с Turbo Pascal в Pascal ABC.NET
Вот есть программный код , но он для турбо паскаля, помогите перевести его в АБС.NET Program...

Различия трансляторов Pascal ABC.Net и Turbo/Borland Pascal
Пожалуйста, объясните различия между компиляторами Pascal ABC.Net и Turbo/Borland Pascal

9
127 / 125 / 16
Регистрация: 03.07.2011
Сообщений: 354
21.04.2012, 20:55 2
если объясните зачем тут нужны файлы и что в общем делает программа, то я попробую
1
6 / 6 / 2
Регистрация: 13.04.2012
Сообщений: 57
21.04.2012, 21:07  [ТС] 3
Добрый вечер!

Программа должна считывать из файла текст-программу и преобразовывать в ней строки.
Исходный файл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int main()
{
int a;
int b;
a=1;
b=2;
a=a+1;
b=b-1;
 
return 0;
}
Строка "a=a+1;" должна замениться на "а++;", а "b=b-1;" на "b--;".
Т.е. "переменная=переменная+1" должна меняться на "переменная++", при этом длина названия переменной может быть любой. Остальные строки должны остаться неизменными.

Следовательно на выходе получается:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int main()
{
int a;
int b;
a=1;
b=2;
a++;
b--;
 
return 0;
}
0
127 / 125 / 16
Регистрация: 03.07.2011
Сообщений: 354
21.04.2012, 22:15 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <string>
#include <fstream>
 
using namespace std;
 
int main()
{
    ifstream input("input.txt");                    //Файл с входными данными
    ofstream output("output.txt");                  //Файл с выходными данными
    do {
        string line;
        getline(input, line);                       //Считываем строку
        int rpos;
        if((rpos = line.find("=")) == line.npos)    //Если в строке нет знака =
        {
            output << line << "\n";                 //Записываем строку в вывод
            continue;                               //Переходим к следующей строке
        }
        //-----------
        int pos;
        while((pos = line.find(" ")) != line.npos)  //Удаляем все пробелы
        {
            line.erase(pos, 1);
        }
        //-----------
        int zpos;
        if((zpos = line.find("+")) != line.npos || (zpos = line.find("-")) != line.npos) //Если в строке есть + или -
        {
            string lvalue = line.substr(0, rpos);   //То, что слева от равно
            if(lvalue == line.substr(rpos + 1, zpos - rpos - 1)) //если a=a+... или a=a-...
            {
                if(line.find(lvalue+"+1;") != line.npos)
                    line = lvalue+"++;\n";
                else if(line.find(lvalue+"-1;") != line.npos)
                    line = lvalue+"--;\n";
            }
        }
        output << line << "\n";                     //Записываем строку в вывод
    } while(!input.eof());
 
    input.clear();
    input.close();
    output.clear();
    output.close();
    return 0;
}
как-то так)
1
6 / 6 / 2
Регистрация: 13.04.2012
Сообщений: 57
21.04.2012, 22:24  [ТС] 5
Большое спасибо, все работает. Пойду разбираться :)
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,485
Записей в блоге: 1
21.04.2012, 22:36 6
по-моему паскалевская программа с файлами не работает, или я ошибаюсь?
1
6 / 6 / 2
Регистрация: 13.04.2012
Сообщений: 57
21.04.2012, 23:04  [ТС] 7
Без понятия, не проверял. Но С-шная точно работает.
0
127 / 125 / 16
Регистрация: 03.07.2011
Сообщений: 354
21.04.2012, 23:14 8
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
по-моему паскалевская программа с файлами не работает, или я ошибаюсь?
да походу, там файл открывается, а строка считывается с клавиатуры
0
0 / 0 / 0
Регистрация: 25.02.2019
Сообщений: 2
25.02.2019, 15:50 9
Venzo, поможешь?
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,485
Записей в блоге: 1
25.02.2019, 16:20 10
Qultaev20, чем, блин, "поможешь"?
Ты только зарегался на форуме и это твой первый вопрос!
0
25.02.2019, 16:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2019, 16:20
Помогаю со студенческими работами здесь

Нужно перевести код с Pascal ABC на Turbo Pascal - рисование работающей мельницы
Вот код, он должен рисовать работающею мельницу. uses graphABC,crt; type point=record ...

Список слов распечатать в алфавитном порядке. В Turbo Pascal или Pascal ABC
Дана непустая последовательность слов, в каждом из которых содержится от 1 до 6 заглавных латинских...

Есть ли аналог модуля tpdate.tpu (Turbo Pascal) для Free Pascal
Внимание! Нужно срочно узнать название юнита для freepascal, который выполняет функции tpdate.tpu...

Из множества выбрать три различные точки по условию -из Turbo Pascal во Free Pascal
Даны 2 множества точек на плоскости. Выбрать три различные точки первого множества так, чтобы круг...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru