Форум программистов, компьютерный форум CyberForum.ru

с паскаля в с++ - C++

Восстановить пароль Регистрация
 
сержи
6 / 6 / 0
Регистрация: 03.07.2010
Сообщений: 222
17.10.2013, 21:22     с паскаля в с++ #1
помогите перевести с код паскаля в с++
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
program MYstring;
var len1, len2:byte;
    s1, s2: string;
function center (s1,s2:string; len1,len2:byte):string;
var res:string;
    ind,i1,i2:integer;
 
begin
  res := s1;
  res[0] := chr(len1+len2);
  ind := len1 div 2;
  i1 := len1+len2;
  i2 := len1;
  repeat
         res[i1] := res[i2];
         dec(i2); dec(i1);
  until i2=ind;
  for i1 := 1 to len2 do res[ind+i1] := s2[i1];
  center := res;
end;
begin
     repeat
     writeln('Input string:');
     readln (s2);
     readln (s1);
     len1 := ord(s1[0]);
     len2 := ord(s2[0]);
     if len1+len2>255 then writeln ('Wrong input data');
     until len1+len2 <= 255;
     writeln (center(s1,s2,len1,len2));
     writeln ('Enter from EXIT');
     readln;
end.
Добавлено через 1 час 3 минуты
хеллллп

Добавлено через 32 минуты
хеллллп
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2013, 21:22     с паскаля в с++
Посмотрите здесь:

C++ из паскаля в си)
C++ с паскаля на с++
из паскаля в с++ C++
C++ C Паскаля на С++
С паскаля на с++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
B@R_LOG
 Аватар для B@R_LOG
18 / 18 / 0
Регистрация: 03.07.2013
Сообщений: 49
17.10.2013, 21:40     с паскаля в с++ #2
Как вспомнил.
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
#include "stdafx.h"
#include <string>
#include <iostream>
 
using namespace std;
 
int len1, len2;
string s1, s2;
string center (string s1, string s2, int len1, int len2)
{
  string res; int ind,i1,i2;
  res = s1;
  res[0] = char(len1+len2);
  ind = len1/2;
  cout << "!";
  i1 = len1+len2;
  i2 = len1;
  do 
  {    res[i1]= res[i2]; i2--; i1--; /* error*/}
  while( i2!=ind);
 
  for (i1=1; len2; i1++) res[ind+i1]= s2[i1];
  return res;
}
void main()
{   
    do 
    {
        cout << "Input string:";
        cin >> s2 >> s1;
        len1 = int(s1[0]);
        len2 = int(s2[0]);
        if ( (len1+len2) > 255 ) cout << "\nWrong input data";
        
      
    }
     while ( len1+len2 > 255);
     cout <<  center(s1,s2,len1,len2);
     system("pause");
}
сержи
6 / 6 / 0
Регистрация: 03.07.2010
Сообщений: 222
18.10.2013, 07:16  [ТС]     с паскаля в с++ #3
Блин чего то не пойму что вводить тут?
По условию вроде правильно ввожу: Внутреннее представление данных типа string. Строка представляется в виде массива элементов типа char (одиночных символов). Индексация массива начинается с 0. Первый элемент массива содержит однобайтный двоичный код числа - текущая длина строки, следующие байты содержат ASCII-коды символов строки, их количество совпадает с объявленной длиной строки. Таким образом, операции над строкой могут быть реализованы как операции поэлементной обработки массива. Над каждым элементом массива допускаются все операции, допустимые над операндами типа char и только они. Для работы с элементами строки (например, с байтом текущей длины) как с числами выполняется их преобразование в числовую форму (функция Ord) и обратно (функция Chr).

А выдает все время вот это: !

Добавлено через 32 минуты
объясните программу плизззззз

Добавлено через 8 часов 29 минут
объясните программу плизззззз
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
18.10.2013, 15:45     с паскаля в с++ #4
Цитата Сообщение от сержи Посмотреть сообщение
объясните программу плизззззз
Приведённая в первом посте программа заточена под иcпользуемый в Паскале тип String, который устроен именно так, как это описано в вашем предыдущем посте. В С++ строки устроены абсолютно иначе. Что вы предлагаете здесь переводить или объяснять? Хотите чтобы вам помогли, сформулируйте для начала задание.
сержи
6 / 6 / 0
Регистрация: 03.07.2010
Сообщений: 222
18.10.2013, 15:49  [ТС]     с паскаля в с++ #5
Цитата Сообщение от rangerx Посмотреть сообщение
Приведённая в первом посте программа заточена под иcпользуемый в Паскале тип String, который устроен именно так, как это описано в вашем предыдущем посте. В С++ строки устроены абсолютно иначе. Что вы предлагаете здесь переводить или объяснять? Хотите чтобы вам помогли, сформулируйте для начала задание.
Задание: Внутреннее представление данных типа string. Строка представляется в виде массива элементов типа char (одиночных символов). Индексация массива начинается с 0. Первый элемент массива содержит однобайтный двоичный код числа - текущая длина строки, следующие байты содержат ASCII-коды символов строки, их количество совпадает с объявленной длиной строки. Таким образом, операции над строкой могут быть реализованы как операции поэлементной обработки массива. Над каждым элементом массива допускаются все операции, допустимые над операндами типа char и только они. Для работы с элементами строки (например, с байтом текущей длины) как с числами выполняется их преобразование в числовую форму (функция Ord) и обратно (функция Chr).

Выполнение работы
• Запустить на выполнение программу.
• Ввести с клавиатуры исходные данные (строку символов).
• Вывести на экран результаты решения задачи.
• Представить различные варианты решения задачи при различных исходных данных.
• В основной программе обеспечить обработку ошибочных ситуаций.


Center(s1,s2,l) центрирование - расположение строки s1 в середине строки s2 длины l
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
18.10.2013, 15:51     с паскаля в с++ #6
Цитата Сообщение от сержи Посмотреть сообщение
Первый элемент массива содержит однобайтный двоичный код числа - текущая длина строки,
первый элемент string в c++ не содержит длину строки.
длина строки определяется по нулевому символу '\0'. где он встретится в строке, там и будет ее конец
сержи
6 / 6 / 0
Регистрация: 03.07.2010
Сообщений: 222
18.10.2013, 15:57  [ТС]     с паскаля в с++ #7
Цитата Сообщение от _ Посмотреть сообщение
первый элемент string в c++ не содержит длину строки.
длина строки определяется по нулевому символу '\0'. где он встретится в строке, там и будет ее конец
изначально это задание нужно было писать в Паскале. Но так как мы пишем все на с++/, ее надо написать в с++
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2013, 18:43     с паскаля в с++
Еще ссылки по теме:

С Паскаля на С++ C++
с паскаля на с++ C++
Из Паскаля на СИ C++

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

Или воспользуйтесь поиском по форуму:
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
18.10.2013, 18:43     с паскаля в с++ #8
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
48
49
50
51
52
53
54
55
56
57
58
#include <cstring>
#include <iostream>
 
using namespace std;
 
void center(const char* s1, char* s2, const int n1, const int n2)
{
  int i = n1 + n2;
  int j = n2;
  while(j >= (n2 / 2))
  {
    s2[i] = s2[j];
    --i;  --j;
  }
 
  ++j;
  i = 0;
  while(i < n1)
  {
    s2[j] = s1[i];
    ++i; ++j;
  }
}
 
bool string_input(const char* msg, char* s, int n)
{
  cout << msg;
  if(!cin.get(s, n))
    return false;
 
  cin.ignore(n, '\n');
  cout << '\n';
 
  return true;
}
 
int main()
{
  const int N = 256;
  char s1[N], s2[N];
  if(!string_input("s1:\n", s1, N) ||
     !string_input("s2:\n", s2, N))
  {
    cout << "error\n";
    return 1;
  }
 
  const int n1 = strlen(s1);
  const int n2 = strlen(s2);
  if((n2 == 1) || ((n1 + n2) > (N - 1)))
  {
    cout << "error\n";
    return 1;
  }
 
  center(s1, s2, n1, n2);
  cout << "result(s2):\n" << s2 << "\n";
}
Yandex
Объявления
18.10.2013, 18:43     с паскаля в с++
Ответ Создать тему
Опции темы

Текущее время: 08:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru