Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 14
1

Перевести код с Pascal

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

Author24 — интернет-сервис помощи студентам
код
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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2012, 22:41
Ответы с готовыми решениями:

Перевести код с Pascal
uses crt; const nmax=20; var a:array of integer; n,i,d:integer; f:boolean; begin...

Перевести код с Pascal
пожалуйста помогите перевести код с паскаля в с++ uses crt; var N,M:longint; k:byte; begin...

Перевести код с Pascal
помогите перевести 2 программы из паскаль в С++ 1) uses graphABC; begin...

Перевести код с Pascal
№1 var s1,s2,n: longint; f: integer; begin write('vvedite natural chislo '); ...

11
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 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
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 14
16.10.2012, 23:00  [ТС] 3
я понял, а код с++ в студию можно?
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
16.10.2012, 23:06 4
PrimeJust, подправил. См выше.
0
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
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 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
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
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
16.10.2012, 23:36 8
PrimeJust, весь код давайте.
Div - "/", mod - "%".
0
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
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
16.10.2012, 23:44 10
PrimeJust, ну, а что она делать должна?
0
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 14
16.10.2012, 23:51  [ТС] 11
переводить в системы счисления. ввводим число потом вводим систему в которой мы ввели это число, потом вводим систему в которой мы хотим получить число , получаем ответ (2ичная . 8риная. . 10ричная 16.ричная системы счисления)
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2012, 00:48
Помогаю со студенческими работами здесь

Перевести код с Pascal на C++
Здравствуйте, дана задача : &quot;Последовательность Фибоначчи образуется так: первый и второй члены...

Перевести код из Pascal в C++
Помогите перевести код из Паскаля в С++ Uses crt; const n = 10; var x: array of integer;...

Перевести код с Pascal на C# и C++
Помогите переписать прогу с одного языка на другой. Вот Pascal const maxn = 150; var w:...

Перевести код с Pascal
program sro3_2; var A,B,C:array of...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru