Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 3
Регистрация: 18.04.2014
Сообщений: 118

Переведите код с С++ на Pascal

20.04.2014, 14:00. Показов 1252. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <iostream>;
#include <string>;
#include <conio.h>;
 
using namespace std;
 
const int RANK = 8; //Шаг 1.
 
string FromDecimalToBinary(string, int);
string FromBinaryToDecimal(string);
string SumBinary(string, string, int);
bool ifDecimalValid(string);
 
int main()
{
    string Value1, Value2, SumValue; //Шаг 2.
    setlocale(LC_ALL, "Russian");
    
    while(true)
    {
    cout << "Введите первое слогаемое: ";
    cin >> Value1; //Шаг 3.
    if (!(ifDecimalValid(Value1))) {cout << "Число должно быть положительное и целое!" << endl; continue;} //Шаг 4.
    Value1 = FromDecimalToBinary(Value1, RANK); //Шаг 5.
    if (Value1 == "ERROR") {cout << "Данное число в двоичном представленни займет больше " << RANK << " разрядов!" << endl; continue;} //Шаг 6.
    break;
    }
 
    cout << "Первое слогаемое в двоичном представленни: " << Value1 << endl; //Шаг 7.
    
    while(true)
    {
    cout << "Введите второе слогаемое: "; 
    cin >> Value2; //Шаг 8.
    if (!(ifDecimalValid(Value2))) {cout << "Число должно быть положительное и целое!" << endl; continue;} //Шаг 9.
    Value2 = FromDecimalToBinary(Value2, RANK); //Шаг 10.
    if (Value2 == "ERROR") {cout << "Данное число в двоичном представленни займет больше " << RANK << " разрядов!" << endl; continue;} //Шаг 11.
    break;
    }
 
    cout << "Второе слогаемое в двоичном представленни: " << Value2 << endl; //Шаг 12.
 
    SumValue = SumBinary(Value1, Value2, RANK); //Шаг 13.
    if (SumValue == "ERROR") //Шаг 14.
    {
    cout << "Сумму невозможно в двоичной системе счисления представить используя " << RANK << "разрядов"  << endl;
    system("Pause");
    return 0;
    }
    cout << "Сумма двух слогаемых в двоичной системе счеслении: " << SumValue << endl; //Шаг 15.
 
    SumValue = FromBinaryToDecimal(SumValue); //Шаг 16.
    cout << "Сумма двух слогаемых в десятичной системе счеслении: " << SumValue << endl; //Шаг 17.
 
    system("Pause");
 
    return 0;
}
 
string FromDecimalToBinary(string value, int RANK)
{
    string Binary; int Decimal = 0;
    for (int i = value.length()-1, grade = 1; i > -1; i--, grade *= 10)
    {
        Decimal = Decimal + (value[i] - '0')* grade;
    }
    for (; Decimal != 0; Decimal/=2) { Binary = char((Decimal%2) + '0') + Binary; }
    
    if (Binary.length() > RANK) { return "ERROR"; } 
    
    for (int i = Binary.length(); i < RANK; i++) { Binary = '0' + Binary; }
 
    return Binary;
}
 
string FromBinaryToDecimal(string value)
{
    string Result; int Decimal = 0;
    for (int i = value.length()-1, grade = 1; i > -1; i--, grade *= 2)
    {
        Decimal = Decimal + (value[i] - '0')*grade;
    }
    while (Decimal != 0)
    {
        Result = char((Decimal - (Decimal / 10) * 10) + '0') + Result;
        Decimal /= 10;
    }
 
    return Result;
}
 
string SumBinary(string v1, string v2, int RANK)
{
    string Sum, some, flag = "0";
    for (int i = RANK-1; i > -1; i--) 
    {
        some = string(flag) + v1[i] + v2[i];
        if ((some == "010") || (some == "001") || (some == "100")) { Sum = '1' + Sum; flag = '0'; continue; }
        if ((some == "011") || (some == "101") || (some == "110")) { Sum = '0' + Sum; flag = '1'; continue; }
        if (some == "111") { Sum = '1' + Sum; flag = '1'; continue; }
        if (some == "000") { Sum = '0' + Sum; flag = '0'; continue; }
    }
    if (flag == "1") { return "ERROR";  }
    return Sum;
}
 
bool ifDecimalValid(string value)
{
    for (int i = value.length() - 1; i > -1; i--)
    {
        if((value[i] <'0') && (value[i] > '9')) { return false; }
    }
    return true;
}
Добавлено через 16 часов 37 минут
Вот само задание
Разработать программу побитового сложения двух целых положительных чисел. Дополнительное условие:
Числа задаются в 10 сист. счисл. , выполнить проверку, что они являются целыми и положительными ,преобразовать эти числа в двоичное числов количество разрядов 8 бит, обеспечить проверку на переполнение. Выполнить операцию побитового сложения, проверить результат на переполнение Преобразовать полученное число в 10 сист. счисл. , выводить как промежуточные так и конечные результаты.
Если можно с комментариями.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.04.2014, 14:00
Ответы с готовыми решениями:

Переведите Java код в Pascal
Доброго времени суток. Переведите Java код в Pascal public String gpsTagVerify(String id, short rnd) { W_log.m1d(&quot;Verifying...

Переведите этот код в Pascal пожалуйста
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { setlocale(LC_ALL,&quot;Russian&quot;); int a,b; ...

Переведите код с Pascal на C#
uses crt; const n=15; var mas1,mas2:array of integer; i,k1,k2:integer; begin write('Ishodniy massiv A: '); ...

1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
21.04.2014, 16:09
Лучший ответ Сообщение было отмечено lixod96 как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{$R+}
var
  a, b, c: byte;
begin
  Write('A B: '); ReadLn(a,b);
  if (a=0) or (b=0) then RunError(201);
  c:=a+b;
  WriteLn('C(10) = ',c);
  Write('C(2)  = ');
  a:=$80;
  while a<>0 do begin
    Write(chr(ord('0')+ord(a and c<>0)));
    a:=a shr 1;
  end; WriteLn;
end.
Примечания. 1) Числа в памяти хранятся в двоичном виде, операции с ними производятся в двоичном виде. 2) Read/ReadLn осуществляют ввод числа в десятичном виде. 3) Директива $R+ заставляет компилятор генерировать проверки выхода значений за диапазон. При попытке ввести число вне диапазона 0..255 (неотрицательное 8 битное) будет выдано сообщение "Runtime error 201" и адрес инструкции ReadLn(a,b). Если результат сложения выйдет за указанный диапазон, будет выдано сообщение "Runtime error 201" и адрес инструкции c:=a+b. 4) При выводе числа с помощью Write/WriteLn производится преобразование из двоичного представления в десятичное. 5) 0 не является положительным числом (см. условие), поэтому в этом случае также генерируем ошибку выполнения 201. 6) Для вывода побитового представления используется проверка по маске со сдвигом.

PS. Я понимаю, что в задании, возможно имелось в виду что-то несколько иное, но тем не менее приведённая программа заданию соответствует полностью, десятичный ввод, проверка на положительность/переполнения, двоичное хранение и двоичные операции, вывод в десятичном и двоичном виде.
Есть другие мнения на этот счёт?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.04.2014, 16:09
Помогаю со студенческими работами здесь

Переведите код с Pascal на С++
program lab100301; uses crt; type tablica=record name:string; sred:real; rus,math,fiz:byte; end; var ...

Переведите код с Pascal на C#
var a:array of integer; i,n,k:integer; input,output:text; begin assign(input,'input.txt'); ...

Переведите код pascal в Delphi
Function TestWildCard(S,WildCard:String):boolean; var i,j:integer; fnd:boolean; begin fnd:=true; if...

Переведите код с Pascal на QBasic
Program z1; Var S:String; k,p:integer; BEGIN Write ('введите исходную строку:'); Readln(S); While Pos('i',S)&gt;0 Do ...

Пожалуйста переведите код с Pascal на C#
]uses crt; var a:arrayof integer; i,b,s,a1,kol:integer; begin clrscr; s:=0; kol:=0; writeln('Введите число A'); ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Если у вас не установлены Android SDK, NDK сделайте это, JDK, то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Перейдите по ссылке:. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru