Перевести программу с Pascal'я на C++ [требует правки]

245
06 мая 2017, 22:51

Помогите, пожалуйста, перевести программу с Pascal'я на С++, буду очень признателен! Вот условие: Описать функцию InvertStr(SS, KK, NN) строкового типа, возвращающую инвертированную подстроку строки SS, содержащую в обратном порядке NN символов строки SS, начиная с ее KK-го символа. Если KK превосходит длину строки SS, то возвращается пустая строка; если длина строки меньше K+NK+N, то инвертируются все символы строки, начиная с ее KK-го символа. Вывести значения функции InvertStr для данной строки SS и каждой из трех пар положительных целых чисел: (K1K1, N1N1), (K2K2, N2N2), (K3K3, N3N3).

    program param;
    type
     St=String;
    var
    S:St;
    i,K,N:integer;
    Function InvertStr(S:St;K,N:integer):String;
    var
    i:integer;
    Stemp:String;
    begin
    if K>Length(s) then InvertStr:=''
     else
      begin
       if K+N-1>Length(s) then N:=Length(s)-K+1;
       for i:=K+N-1 downto K do Stemp:=Stemp+S[i];
      end;
     InvertStr:=Stemp;
    end;
   begin
   Write('S:');
   Readln(S);
    for i:=1 to 3 do
     begin
      Write('K: ');
      readln(K);
      Write('N: ');
      readln(N);
      Writeln(InvertStr(S,K,N));
     end;
   end.

вот что получилось у меня, но st не принимает значение

    #include <iostream>
    #include <string>

    using namespace std;
    string s;
    int i,k,n;
    string st (string s,int k,int n)
    {
        string stemp,st;
        if (k>s.length())
        {
            st='\0';
        } else
        {
            if (k+n-1>s.length())
            {
                n=s.length()-k+1;
                for (i=k+n-1;i<k+1;i++)
                {
                    stemp=stemp+s[i];
                }
            }
        }
        st=stemp;
        return st;
    }
    int main()
    {
        cout<<"s= ";
        getline(cin,s);
        for (i=0;i<3;i++)
        {
            cout<<"K: ";
            cin>>k;
            cout<<"N: ";
            cin>>n;
            cout<<"st= "<<st(s,k,n);
                }
                return 0;
    }
READ ALSO
ReadDirectoryChangesW всегда возвращает 0

ReadDirectoryChangesW всегда возвращает 0

Нужно отследить изменения в каталоге и его подкаталогахДля этого использую функцию ReadDirectoryChangesW, но она постоянно возвращает 0

266
Ошибка сегментирования (Linux)

Ошибка сегментирования (Linux)

В данном коде получаю Ошибка сегментирования (сделан дамп памяти)Компилирую под Linux

440
LoadLibrary возвращает нули

LoadLibrary возвращает нули

Пытаюсь явно подключить dll библиотеки в свой c++ проект, вычитал, что делается это по такому принципу:

199
Компиляция Protocol Buffers в VS 2017

Компиляция Protocol Buffers в VS 2017

ЗдравствуйтеНе получается использовать Protocol Buffers в VS 2017 (Debug x86)

402