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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
сержи
6 / 6 / 0
Регистрация: 03.07.2010
Сообщений: 222
#1

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

17.10.2013, 21:22. Просмотров 400. Ответов 7
Метки нет (Все метки)

помогите перевести с код паскаля в с++
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 минуты
хеллллп
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2013, 21:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос с паскаля в с++ (C++):

с паскаля на Си++ - C++
uses crt; var a:array of integer; i,n,max,min:integer; c:char; begin ClrScr; repeat writeln('Выберите действие:');...

Из Паскаля в С++ - C++
Дана программа на Паскале: Program q; var a,b:byte; begin Writeln('Двузначные числа, удвоенная сумма цифр которых равна...

Из Паскаля на СИ - C++
const c = 9; var a, b, x, y: real; begin write('Введите x: '); readln(x); b := x + c * c; a := exp(ln(abs(92))...

Из Паскаля на С++ - C++
Здравствуйте. Помогите переписать это решение на C++. uses crt; var a:integer; function del(n:integer):integer; var...

из паскаля в си) - C++
Переведите мне пожалуйста прогу, написанную в паскале, в си))))) для меня это очень важно))))))) завтра последний срок) program...

Из паскаля в С++ - C++
Program lab5; Var a:array of integer; n,I,min,k:integer; P:longint; s:real; Begin Writeln('введите размерность массива'); ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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");
}
1
сержи
6 / 6 / 0
Регистрация: 03.07.2010
Сообщений: 222
18.10.2013, 07:16  [ТС] #3
Блин чего то не пойму что вводить тут?
По условию вроде правильно ввожу: Внутреннее представление данных типа string. Строка представляется в виде массива элементов типа char (одиночных символов). Индексация массива начинается с 0. Первый элемент массива содержит однобайтный двоичный код числа - текущая длина строки, следующие байты содержат ASCII-коды символов строки, их количество совпадает с объявленной длиной строки. Таким образом, операции над строкой могут быть реализованы как операции поэлементной обработки массива. Над каждым элементом массива допускаются все операции, допустимые над операндами типа char и только они. Для работы с элементами строки (например, с байтом текущей длины) как с числами выполняется их преобразование в числовую форму (функция Ord) и обратно (функция Chr).

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

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

Добавлено через 8 часов 29 минут
объясните программу плизззззз
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
18.10.2013, 15:45 #4
Цитата Сообщение от сержи Посмотреть сообщение
объясните программу плизззззз
Приведённая в первом посте программа заточена под иcпользуемый в Паскале тип String, который устроен именно так, как это описано в вашем предыдущем посте. В С++ строки устроены абсолютно иначе. Что вы предлагаете здесь переводить или объяснять? Хотите чтобы вам помогли, сформулируйте для начала задание.
0
сержи
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
0
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
18.10.2013, 15:51 #6
Цитата Сообщение от сержи Посмотреть сообщение
Первый элемент массива содержит однобайтный двоичный код числа - текущая длина строки,
первый элемент string в c++ не содержит длину строки.
длина строки определяется по нулевому символу '\0'. где он встретится в строке, там и будет ее конец
0
сержи
6 / 6 / 0
Регистрация: 03.07.2010
Сообщений: 222
18.10.2013, 15:57  [ТС] #7
Цитата Сообщение от _ Посмотреть сообщение
первый элемент string в c++ не содержит длину строки.
длина строки определяется по нулевому символу '\0'. где он встретится в строке, там и будет ее конец
изначально это задание нужно было писать в Паскале. Но так как мы пишем все на с++/, ее надо написать в с++
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
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";
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2013, 18:43
Привет! Вот еще темы с ответами:

С Паскаля на С++ - C++
Дана целочисленная матрица размера M × N. Найти количество ее строк, все элементы которых различны. ...

Из паскаля в С++ - C++
Ребят, помогите, пожалуйста, перевести из паскаля в С++, буду благодарен за помощь. Заранее спасибо. program example1; var ...

С Паскаля на С++ - C++
program Matrix25; var MAx,Sum,num,j,i,M,N:integer; a: array of integer; begin // Ввод данных writeln('Введите числа M (M&lt;=10)...

из паскаля в C++ - C++
3)Даны два действитьельных числа. Заменить первое число нулем, если оно меньше или равно второму и оставить числа без изменения в противном...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.10.2013, 18:43
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru