Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2019, 13:59   #1
Kadet12
 
Регистрация: 31.01.2019
Сообщений: 9
Сообщение Перевод из Паскаля на С++

Добрый день! Прошу помочь, подсказать.
Есть программа на Pascal, ее необходимо перевести в C++.

Код:
type mas=array of integer;
procedure massiv(var a:mas;n,k:integer);
var i:integer;
begin
setlength(a,n);
writeln('Исходный массив номер ',k);
for i:=0 to n-1 do
begin
a[i]:=random(1000);
write(a[i]:4)
end;
writeln;
end;
procedure sort_bouble(var a:mas;n:int
eger;var p:integer) ;
var i,k,x:integer;
begin
writeln('Сортировка пузырьком');
p:=0;
for k:=0 to n-2 do
for i:=0 to n-2 do
if a[i]>a[i+1] then
begin
inc(p);
x:=a[i];
a[i]:=a[i+1];
a[i+1]:=x
end;
for i:=0 to n-1 do
write(a[i]:4);
writeln;
writeln('Количество перестановок=',p)
end;
procedure sort_vyb(var a:mas;n:integer;var p:integer);
var i,j,k,x:integer;
begin
writeln('Сортировка выбором');
for i:=0 to n-2 do
begin
k:=i;
for j:=i+1 to n-1 do
if a[j]<a[k] then k:=j;
inc(p);
x:=a[i];
a[i]:=a[k];
a[k]:=x;
end;
for i:=0 to n-1 do
write(a[i]:4);
writeln;
writeln('Количество перестановок=',p)
end;
 
var i,p1,p2,pb,pv:integer;
a,a1:mas;
begin
randomize;
pb:=0;
pv:=0;
for i:=1 to 5 do
begin
massiv(a,1000,i);
a1:=a;
writeln('Нажмите Enter для продолжения');
readln;
sort_bouble(a,1000,p1);
inc(pb,p1);
writeln('Нажмите Enter для продолжения');
readln;
sort_vyb(a1,1000,p2);
inc(pv,p2);
writeln('Нажмите Enter для продолжения');
readln
end;
pb:=round(pb/5);
pv:=round(pv/5);
writeln('Среднее число перестановок:');
writeln('- пузырек=',pb);
writeln('- выбор=',pv);
end.
Kadet12 вне форума Ответить с цитированием
Старый 30.04.2019, 14:07   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А подсказку какую ожидаешь?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.04.2019, 14:11   #3
Kadet12
 
Регистрация: 31.01.2019
Сообщений: 9
По умолчанию

В виде перевода)
Kadet12 вне форума Ответить с цитированием
Старый 30.04.2019, 14:21   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Это не подсказа и не помощь, а подайте лодырю на пропитание называется ) Тему перетащить в фриланс, может кто-то и напишет за вознаграждение?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.04.2019, 16:47   #5
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Начнём с того, что с++ вообще толком не понимает, что такое тип массива. И очень часто даже сами массивы путает с указателями. Оператор sizeof разницу ещё понимает, а присваивание, передача параметра и тому подобное с линейным массивом работает как с указателем, а с многомерным вообще по-размому. Присваивание работает с ним как с кратным указателем, то есть с указателем на указатель, а передача параметра – как с указателем на нулевой массив младшей на 1 размености. Например с двумерным массивом передача параметра работает как с указателем на нулевой одномерный массив-элемент, а с трёхмерным – как с указателем на нулевой двумерный массив-элемент. Многомерный c++ массив – это всегда массив массивов. Причём, двумерный массив – линейный массив линейных массивов, трёхмерный массив – линейный массив линейных массивов линейных массивов. Но как параметр передаётся указатель не на указатель, а только на элемент, какого бы типа он ни был, даже если элемент сам массив. Писать класс и перегружать оператор []?
taras-proger77 вне форума Ответить с цитированием
Старый 30.04.2019, 16:50   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,726
По умолчанию

Узнать про std::array и std::vector, не?
p51x вне форума Ответить с цитированием
Старый 30.04.2019, 17:01   #7
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Во-первых в оригинале был массив динамичней динамического. А std::array что? А во-вторых то, что класс кто-то уже сделал, не означает, что в сам язык встроена конструкция, аналогичная array of. array of описывает доклассовый тип массива, у него нет членов. А нечто, выполняющее функцию массива, написал ещё Шилдт. Можно хоть у него скопировать, хоть не шаблонный класс написать. Но это как переводить на английский не слово «снег», а фразу «поликристаллическая вода с воздушными пустотами между сваренными вместе кристаллами». Про «бред профессора» слышали? По форме будет не то же самое, но ту же задачу решить можно.

Последний раз редактировалось taras-proger77; 30.04.2019 в 17:04.
taras-proger77 вне форума Ответить с цитированием
Старый 30.04.2019, 17:13   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,726
По умолчанию

В исходной задаче при наличии setlength все массивы фиксированной и одной длины.
array of заменяется std::vector.

Цитата:
Сообщение от taras-proger77 Посмотреть сообщение
array of описывает доклассовый тип массива, у него нет членов
Покажите мне работу с array of без setlength
p51x вне форума Ответить с цитированием
Старый 30.04.2019, 17:16   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от taras-proger77 Посмотреть сообщение
А std::array что?
а std::vector что?

Цитата:
Сообщение от taras-proger77 Посмотреть сообщение
то, что класс кто-то уже сделал, не означает, что в сам язык встроена конструкция
и?

Цитата:
Сообщение от taras-proger77 Посмотреть сообщение
Но это как переводить на английский не слово «снег»
нет.
это как переводить на англ. "хорэ бред нести, за базаром следи и ваще не суйся в Тулу со своим самоваром". Будете дословно переводить?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод на C++ с паскаля dimka123 Помощь студентам 0 12.04.2014 23:16
перевод с паскаля на с++ kostan3 Общие вопросы C/C++ 1 29.03.2014 21:33
перевод из паскаля на с++ Olgaandsasha Общие вопросы C/C++ 0 06.03.2014 19:43
Перевод из паскаля на СИ Кот Шрёдингера Помощь студентам 0 02.11.2011 20:07
Перевод с Паскаля на С++ MrJenika Помощь студентам 2 20.11.2009 20:42