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

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

Войти
Регистрация
Восстановить пароль
 
PrimeJust
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 14
#1

Перевести код с Pascal - C++

16.10.2012, 22:41. Просмотров 696. Ответов 11
Метки нет (Все метки)

код
Pascal
1
2
3
4
5
6
7
8
9
10
 for i:=1 to length(num_st)do
  begin
   num_st[i]:=upcase(num_st[i]);
   if num_st[i] in ['A'..'Z']then n1:=ord(num_st[i])-55
                             else  val(num_st[i],n1,code);
   mult:=1;
   for j:=1 to (length(num_st)-i)do
    mult:=mult*key;
    num_10:=num_10+n1*mult;
  end;
вызывает затруднение
n1:=ord(num_st[i])-55 и val(num_st[i],n1,code);
а про ['A'..'Z'] -isdigit нужен не так ли?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2012, 22:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевести код с Pascal (C++):

Перевести код с С++ в С и Pascal - C++
кароч люди мну дали задание....... мну нада перевести з одного с(си) в другой с(си) и потом в паскаль.... кто может помогите: #include...

Перевести код с Pascal на С++ - C++
Ребята,помогите преобразовать код,представленный по этой ссылке http://www.cyberforum.ru/turbo-pascal/thread1053110.html на С++ Задание...

Перевести код с Pascal - C++
Помогите разобраться, что тут написано. Хотелось бы это на Си, т.к паскаль не знаю( заранее спасибо) var ans, a, p :int64; ...

Перевести код c Pascal в C++ - C++
uses Crt; function Fun(a,b,c:integer):boolean; begin if a<(b+c) then Fun:=true else Fun:=false; end; var ...

Перевести код с Pascal - C++
нужно написать программу на C++ из паскаля program pr1; uses crt; const WG=100; type tmasi=array of integer; var a:tmasi;...

Перевести код с Pascal - C++
uses crt; const nmax=20; var a:array of integer; n,i,d:integer; f:boolean; begin repeat write('Размер массива до...

11
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.10.2012, 22:59 #2
ord(num_st[i])-55 - это ascii код i-го символа. Причем идет смещение на 55 символов и присваивается n1. (int) num_s[i]. Кодировка наверно какая-то. val - преобразование строки (в данном случае символа) в число. n1=atoi(num_s[i]).
['A'..'Z'] - множество заглавных букв от A до Z. Т.е. тут лучше проверку типа if ((num_st[i]>='A')&&(num_st[i]<='Z')) ...
0
PrimeJust
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 14
16.10.2012, 23:00  [ТС] #3
я понял, а код с++ в студию можно?
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.10.2012, 23:06 #4
PrimeJust, подправил. См выше.
0
PrimeJust
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 14
16.10.2012, 23:12  [ТС] #5
ну вроже можно так if (isdigit(num_st[i])) но меня не это интересует , а then n1:=ord(num_st[i])-55
else val(num_st[i],n1,code); нужен код с++ , а также
Pascal
1
2
3
4
5
mod_:=div_ mod new_key;
   div_:=div_ div new_key;
   str(mod_,s);
   if mod_>=10 then s:=chr(mod_+55);
   res:=s+res;
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.10.2012, 23:29 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Как-то так:
C++
1
2
3
4
5
6
7
8
for (int i=1; i<=strlen(num_st); i++)
  {
  ...
  if ((num_st[i]>='A')&&(num_st[i]<='Z')) 
   n1=((int)num_st[i])-55;
  else  
    n1=atoi(num_st[i]);
  ...
Добавлено через 5 минут
C++
1
2
3
4
5
6
 mod_=div_ % new_key;
   div_=div_ / new_key;
   itoa(mod_,s,10);
   if (mod_>=10)
    s=static_cast<char>(mod_)+55;
   res+=s;
1
PrimeJust
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 14
16.10.2012, 23:33  [ТС] #7
Цитата Сообщение от BumerangSP Посмотреть сообщение
n1=atoi(num_st[i]);
1 Ошибка 4 error C2664: atoi: невозможно преобразовать параметр 1 из "char" в "const char *" c:\users\александр\documents\visual studio 2010\projects\lab1_ork_06\lab1_ork_06\lab1_ork_06.cpp 40 1 lab1_ork_06

а так же интересует в с++ div i mod паскаля

вот ошибки
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.10.2012, 23:36 #8
PrimeJust, весь код давайте.
Div - "/", mod - "%".
0
PrimeJust
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 14
16.10.2012, 23:39  [ТС] #9
предыдущие ошибки а вот сам код
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
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
program schislen;
uses crt;
var num_st,res,s:string;
    key,new_key,
    mult,j,i,n1,
    div_,num_10,
    mod_,code   :word;    { byte - unsigned 8-bit;   word - unsigned 16-bit; }
    d           :char;
begin
 while true do
 begin
  clrscr;
  textcolor(13);
  writeln('ЋЈа**ЁзҐ*Ёп:');
  writeln('- нв* Їа®Ја*¬¬* а*Ў®в*Ґв в®«мЄ® б 楫묨 зЁб«*¬Ё ЎҐ§ §**Є*\');
  writeln('- ¬®¦*® ЁбЇ®«м§®ў*вм в®«мЄ® бЁб⥬л бзЁб«Ґ*Ёп - 2, 8, 10 Ё«Ё 16\');
  writeln('- *Ґ«м§п ЁбЇ®«м§®ў*вм §**зҐ*Ёп, ¤«п а*§¬ҐйҐ*Ёп Є®в®але');
  writeln('  вॡгҐвбп Ў®«миҐ 2-е Ў*©в\');
  writeln('- *Ґв ***«Ё§* ** ®иЁЎЄг ЇаЁ *ҐЇа*ўЁ«м*®¬ гЄ*§**ЁЁ ');
  writeln('  ®б*®ў**Ёп ЁбЇ®«м§®ў***®© бЁб⥬л бзЁб«Ґ*Ёп Ё«Ё в®©,');
  writeln('  ў Є®в®аго **¤® ЇҐаҐўҐбвЁ\');
  writeln('- *Ґв ***«Ё§* ** ®иЁЎЄг ЇаЁ ЁбЇ®«м§®ў**ЁЁ жЁда,');
  writeln('  Є®в®але *Ґв ў ¤***®© бЁб⥬Ґ бзЁб«Ґ*Ёп\');
  writeln;
  textcolor(15);
  write('‚ўҐ¤ЁвҐ зЁб«® ў бЁб⥬Ґ бзЁб«Ґ*Ёп 2, 8, 10 Ё«Ё 16: ');
  textcolor(14);
  readln(num_st);
  textcolor(10);
  write('‚ўҐ¤ЁвҐ ®б*®ў**ЁҐ ЁбЇ®«м§®ў***®© бЁб⥬л бзЁб«Ґ*Ёп: ');
  textcolor(14);
  readln(key);
 
  num_10:=0;
  for i:=1 to length(num_st)do
  begin
   num_st[i]:=upcase(num_st[i]);
   if num_st[i] in ['A'..'Z']then n1:=ord(num_st[i])-55
                             else  val(num_st[i],n1,code);
   mult:=1;
   for j:=1 to (length(num_st)-i)do
    mult:=mult*key;
    num_10:=num_10+n1*mult;
  end;
 
  textcolor(14);
  writeln;
  write('‚*иҐ зЁб«® ў 10-© бЁб⥬Ґ бзЁб«Ґ*Ёп: ');
  textcolor(7);
  writeln(num_10);
 
  textcolor(10);
  writeln;
  write('‚ўҐ¤ЁвҐ ®б*®ў**ЁҐ бЁб⥬л бзЁб«., ў Є®в®аго **¤® ЇҐаҐўҐбвЁ ');
  write('Ї®«гзҐ**®Ґ зЁб«®:');
  textcolor(14);
  readln(new_key);
 
  div_:=num_10;
  mod_:=num_10;
  res:='';
  while div_>=1 do
  begin
   mod_:=div_ mod new_key;
   div_:=div_ div new_key;
   str(mod_,s);
   if mod_>=10 then s:=chr(mod_+55);
   res:=s+res;
  end;
  textcolor(11);
  writeln;
  write('‚*иҐ зЁб«® ў ');
  write(new_key);
  write('-© бЁб⥬Ґ бзЁб«Ґ*Ёп: ');
  textcolor(9);
  writeln(res);
  gotoxy(30,25);
  textcolor(15);
  writeln('Ќ*¦¬ЁвҐ:  Enter - зв®Ўл Їа®¤®«¦Ёвм   Ё   ');
  write('                                       1   - зв®Ўл ўл©вЁ');
  d:=readkey;
  if (d='1') then halt;
 end;
end.
вот что то на с++ тут не весь код перевел
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
// lab1_ork_06.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <conio.h>
#include<string>
#include<iostream>
 
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    int key,new_key,mult,j,i,n1,div_,num_10=0,mod_,code;
    char d;
    char num_st[250],*res,*s;
 
    //while (i=0)
    //{
        printf("ЋЈа**ЁзҐ*Ёп:");
        printf("- нв* Їа®Ја*¬¬* а*Ў®в*Ґв в®«мЄ® б 楫묨 зЁб«*¬Ё ЎҐ§ §**Є*\n");
        printf("- ¬®¦*® ЁбЇ®«м§®ў*вм в®«мЄ® бЁб⥬л бзЁб«Ґ*Ёп - 2, 8, 10 Ё«Ё 16\n");
        printf("- *Ґ«м§п ЁбЇ®«м§®ў*вм §**зҐ*Ёп, ¤«п а*§¬ҐйҐ*Ёп Є®в®але");
        printf(" вॡгҐвбп Ў®«миҐ 2-е Ў*©в\n");
        printf("- *Ґв ***«Ё§* ** ®иЁЎЄг ЇаЁ *ҐЇа*ўЁ«м*®¬ гЄ*§**ЁЁ ");
        printf("  ®б*®ў**Ёп ЁбЇ®«м§®ў***®© бЁб⥬л бзЁб«Ґ*Ёп Ё«Ё в®©,");
        printf("  ў Є®в®аго **¤® ЇҐаҐўҐбвЁ\n");
        printf("- *Ґв ***«Ё§* ** ®иЁЎЄг ЇаЁ ЁбЇ®«м§®ў**ЁЁ жЁда,");
        printf("  Є®в®але *Ґв ў ¤***®© бЁб⥬Ґ бзЁб«Ґ*Ёп\n");
        printf("‚ўҐ¤ЁвҐ зЁб«® ў бЁб⥬Ґ бзЁб«Ґ*Ёп 2, 8, 10 Ё«Ё 16: ");
        scanf("%s",num_st);
        printf("‚ўҐ¤ЁвҐ ®б*®ў**ЁҐ ЁбЇ®«м§®ў***®© бЁб⥬л бзЁб«Ґ*Ёп: ");
        scanf("%i",&key);
 
        for (int i =1;i<strlen(num_st);i++)
        {
            num_st[i]=toupper(num_st[i]);
            if (isdigit(num_st[i]))
                n1=((int)num_st[i])-55;
            else
            {
                 n1=atoi(num_st[i]);
            }
            mult=1;
            for (int j =1;j<(strlen(num_st)-i);j++)
                mult=mult*key;
            num_10=num_10+n1*mult;
        }
        printf("\n‚*иҐ зЁб«® ў 10-© бЁб⥬Ґ бзЁб«Ґ*Ёп: ");
        printf("%i \n",num_10);
        printf("‚ўҐ¤ЁвҐ ®б*®ў**ЁҐ бЁб⥬л бзЁб«., ў Є®в®аго **¤® ЇҐаҐўҐбвЁ ");
        printf("Ї®«гзҐ**®Ґ зЁб«®: ");
        scanf("%i",&new_key);
        div_=num_10;
        mod_=num_10;
        *res=' ';
        do
        {
            mod_=div_ % new_key;
            div_=div_ / new_key;
            itoa(mod_,s,10);
            if (mod_>=10)
             s=static_cast<char>(mod_)+55;
                 res+=s;
        }
        while (div_>=1);
        getch();
    //}
    return 0;
}
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
16.10.2012, 23:44 #10
PrimeJust, ну, а что она делать должна?
0
PrimeJust
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 14
16.10.2012, 23:51  [ТС] #11
переводить в системы счисления. ввводим число потом вводим систему в которой мы ввели это число, потом вводим систему в которой мы хотим получить число , получаем ответ (2ичная . 8риная. . 10ричная 16.ричная системы счисления)
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
17.10.2012, 00:48 #12
PrimeJust, ок, если раньше не выложат, постараюсь перевести.

Добавлено через 51 минуту
Компилирует, но не проверял. Сами доделаете.
Кликните здесь для просмотра всего текста
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
#include <conio.h>
#include<string>
#include<iostream>
 
using namespace std;
int main()
{
    int key,new_key,mult,j,i,n1,div_,num_10=0,mod_,code;
    char d;
    char num_st[250],*s;
    string res;
 
        scanf("%s",num_st);
        printf("Osnovanie isp SS: ");
        scanf("%i",&key);
 
        for (int i=1;i<strlen(num_st);i++)
        {
            num_st[i]=toupper(num_st[i]);
            if ((num_st[i]>='A')&&(num_st[i]<='Z')) 
             n1=((int)num_st[i])-55;
           else  
            n1=static_cast<int>(num_st[i]);
           
            mult=1;
 
            for (int j=1;j<=(strlen(num_st)-i); j++)
                mult=mult*key;
            num_10=num_10+n1*mult;
        }
        printf("\nVashe v 10 ss: ");
        printf("%i \n",num_10);
        printf("V kakuy perevesti ");
        printf("Poluchennoe chislo: ");
        scanf("%i",&new_key);
        div_=num_10;
        mod_=num_10;
        res=' ';
        while (div_>=1)
        {
            mod_=div_ % new_key;
            div_=div_ / new_key;
            itoa(mod_,s,10);
            if (mod_>=10)
             *s=static_cast<char>(mod_)+55;
                 res+=s;
        }
        cout<<"\nVashe chislo "<<new_key<<"-y ss: "<<res;
        getch();
 
    return 0;
}
0
17.10.2012, 00:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2012, 00:48
Привет! Вот еще темы с ответами:

Перевести код из Pascal в с++ - C++
Нужно перевести из паскаля в с++ две программы, кот. интегрируют методом симсона и трапеций соответственно. Заранее спасибо, форумчане)) ...

Перевести код с Pascal - C++
procedure Max_el_matr; label 1; begin max_el:=A; p:=2; q:=1; for i:=2 to RazmMatr do begin ...

Перевести код из Pascal в C++ - C++
Помогите пожалуйста. begin for i := 1 to n do begin P :=i; C := 1 ; PR:=истина; end; C := 0; write(P,...,P); i := 1; ...

Перевести код с Pascal - C++
var a,b,c:real; begin clrscr; writeln('Vvedite A='); readln(a); writeln('Vvedite B='); readln(b); If a&gt;b...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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