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

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

Войти
Регистрация
Восстановить пароль
 
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
#1

Перевод из Qbasic в C++ - C++

08.09.2011, 22:26. Просмотров 750. Ответов 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
#include <iostream>
#include <math.h>
#include <string>
using namespace std;
void main()
{               
        char u[]="0123456789ABCDEF";
        char a[512];
        cout << "vvedite vvedite chislo: "; 
        cin >> a;
        int q=0,p=0;
        cout << "vvedite vvedite q: ";
        cin >> q;
        cout << "vvedite vvedite p: ";
        cin >> p;
        int len=strlen(a);
        len-=1;
        double r=0,z=0,j=0;
        while(len>=0)
    {
        for (int i=0; i<16;i++)
        {               
        if (toupper(a[len])==u[i]) j=i;
        }
        int g = pow(q,r);
        z += j * g;
        r += 1;
        len-=1;
        }
        int h=z;
    string x="";
        while (h>0)
    {
        char m= u[h%p];
    x+=m;
        h/=p;
        }
    reverse(x.begin(), x.end());
    cout << x;
        cout << endl;
        system("pause");
}
проверьте код, подскажите что исправить...
P.S. c++ ток на днях начал изучать

прога на qbasic:
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
CLS: u$ = "0123456789ABCDEF"
INPUT "vvedite chislo"; a$: INPUT "vvedite q"; q: INPUT "vvedite p"; p
FOR i = LEN(a$) TO 1 STEP -1: j = INSTR(u$, UCASE$(MID$(a$, i, 1))) - 1
    z = z + j * q ^ r: r = r + 1
NEXT
DO
    c$ = MID$(u$, (z MOD p) + 1, 1) + c$: z = z \ p
LOOP UNTIL z = 0
PRINT STRING$(80, 196); c$
Добавлено через 22 минуты
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
#include <iostream>
#include <math.h>
#include <string>
using namespace std;
void main()
{               
        char u[]="0123456789ABCDEF";
        char a[512];
        cout << "vvedite vvedite chislo: "; 
        cin >> a;
        int q=0,p=0;
        cout << "vvedite vvedite q: ";
        cin >> q;
        cout << "vvedite vvedite p: ";
        cin >> p;
        int len=strlen(a);
        len-=1;
        double r=0,z=0,j=0;
        while(len>=0)
        {
        for (int i=0; i<16;i++)
        {               
        if (toupper(a[len])==u[i]) j=i;
        }
        int g = pow(q,r);
        z += j * g;
        r += 1;
        len-=1;
                }
        int h=z;
        string x="";
        while (h>0)
        {
        char m= u[h%p];
        x+=m;
        h/=p;
                }
        reverse(x.begin(), x.end());
    char k=196;     
    for (int i=0;i<80;i++)  cout << k;
        cout << x << endl << endl;
    system("pause");
}
Добавлено через 3 часа 10 минут
Можно ли с string работать по символьно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2011, 22:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевод из Qbasic в C++ (C++):

Перевод с QBasic в С/С++ - C++
Есть программа для QBasic, она нужна в С/С++ RANDOMIZE TIMER CLS DIM k(5) k(1) = 0 k(2) = 0 К(3) = 0 k(4) = 0

Перевод программы из QBasic в C/C++ - C++
Перевод программы из QBasic в C/C++: CLS INPUT st$ stn$ = &quot;&quot; INPUT s11$ INPUT s12$ k1 = LEN(st$) k2 = LEN(s11$) i = 1 ...

Перевести с QBasic на С++ - C++
Добрый день.Имеется рабочий код на QBasic,хочу переписать его на C++.Пока не получается,требуется ваша помощь. CLS INPUT &quot;ширина...

Массивы,инициализация(qbasic'овские read,data) - C++
Недавно начал изучать С++. Маленький совет: книги не покупай, а скачивай через интернет.(если есть возможность конечно) Некоторые...

Перевод из QBasic в VB.NET - QBasic
Здраствуйте, дали задание перевести программу на VB.net вот исходник (это часть кода): N=12: M=0 32 DIM MES(12),X(372) 33 DATA...

Перевод с qbasic на Pascal - Turbo Pascal
Здравствуйте! Я написал программу для qBasic. Помогите пожалуйста переписать её для Pascal. Заранее спасибо. CLS OPEN &quot;input.txt&quot;...

8
soon
2541 / 1306 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.09.2011, 22:49 #2
Цитата Сообщение от softmob Посмотреть сообщение
Можно ли с string работать по символьно?
Конечно.
C++
1
2
std::string str = "abcdef";
std::cout << str[0];
1
OstapBender
583 / 522 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
09.09.2011, 02:53 #3
лучше написали бы что должна делать программа а то ничерта не ясно, а знатоков бейсика по видимому не много тут
тогда и проверить можно будет...
а то гадать, например, что вот это и зачем как-то не очень
C++
1
2
3
4
        int g = pow(q,r);
        z += j * g;
        r += 1;
        len-=1;
1
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
09.09.2011, 12:55  [ТС] #4
программа для перевода из одной системы счисления в другую. (основания от 2 до 16)
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
#include <iostream>
#include <math.h>
#include <string>
using namespace std;
void main()
{                
        string u="0123456789ABCDEF", a,x="";
        int q=0,p=0;
        double z=0, r=0,j=0;
        cout << "vvedite vvedite chislo: "; 
        cin >> a;      
        cout << "vvedite vvedite q: ";
        cin >> q;
        cout << "vvedite vvedite p: ";
        cin >> p;
        int len=a.length();
        len-=1;        
        while(len>=0)
        {
        for (int i=0; i<16;i++)
        {               
        if (toupper(a[len])==u[i]) j=i;
                }
        z += j * pow(q,r);
        r += 1;
        len-=1;
                }
        int h=z;
        while (h>0)
        {
        x+= u[h%p];
        h/=p;
                 }
        reverse(x.begin(), x.end());                  
        for (int i=0;i<80;i++)  {char k=196; cout << k;}
        cout << x << endl << endl;
        system("pause");
}
Добавлено через 3 часа 50 минут
Как правильно распечатать ascii символы? На char k=#символа; cout << k; ругается во время проверки...
0
OstapBender
583 / 522 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
09.09.2011, 15:05 #5
ну скорей всего ругается на выход за границы знакового байта. сделай char беззнаковым (unsigned) тогда не будет.
1
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
09.09.2011, 17:36  [ТС] #6
спс, теперь не ругается... какие есть замечания по самому коду?
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
#include <iostream>
#include <math.h>
#include <string>
using namespace std;
void main()
{                
        string u="0123456789ABCDEF", a,x="";
        int q=0,p=0;
        double z=0, r=0,j=0;
        cout << "vvedite vvedite chislo: "; 
        cin >> a;      
        cout << "vvedite vvedite q: ";
        cin >> q;
        cout << "vvedite vvedite p: ";
        cin >> p;
        int len=a.length();
        len-=1;        
        while(len>=0)
        {
        for (int i=0; i<16;i++)
        {               
        if (toupper(a[len])==u[i]) j=i;
                }
        z += j * pow(q,r);
        r += 1;
        len-=1;
                }
        int h=(int)z;
        while (h>0)
        {
        x+= u[h%p];
        h/=p;
                 }
        reverse(x.begin(), x.end());  
        unsigned char k=196;               
        for (int i=0;i<80;i++)  { cout << k;}
        cout << x << endl << endl;
        system("pause");
}
0
alexzak
84 / 57 / 1
Регистрация: 07.08.2010
Сообщений: 185
10.09.2011, 03:09 #7
Цитата Сообщение от softmob Посмотреть сообщение
какие есть замечания по самому коду?
Посмотри, может тебе так больше понравится:

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
#include <iostream>
#include <ostream>
#include <string>
#include <algorithm>
#include <locale>
 
using namespace std;
 
template <typename T>
T input(string const & message, T const & def)
{
    T var(def);
    cout << message << ": ";
    cin >> var;
    return var;
}
 
int main()
{
    locale defloc;
    string u("0123456789ABCDEF");
 
    string a = input("vvedite chislo", string());
    int q = input("vvedite q", 0);
    int p = input("vvedite p", 0);
 
    int z = 0;
    for (size_t i = 0; i != a.size(); ++i)
    z += z * p + u.find(toupper(a[i], defloc));
 
    string c;
    for (; z > 0; z /= p)
    c += u[z % p];
    reverse(c.begin(), c.end());
 
    cout << string(80, '\xc4') << endl
         << c << endl;
}
1
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
10.09.2011, 21:20  [ТС] #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
#include <iostream>
#include <ostream>
#include <string>
#include <algorithm>
#include <locale>
 
using namespace std;
 
template <typename T>
T input(string const & message, T const & def)
{
    T var(def);
    cout << message << ": ";
    cin >> var;
    return var;
}
 
void main()
{
    locale defloc;
    string u("0123456789ABCDEF"); 
    string a = input("vvedite chislo", string());
    string c;
    int q = input("vvedite q", 0);
    int p = input("vvedite p", 0);  
    unsigned long long int f=1,z=0; 
   
    for (int len=a.size()-1; len>=0;len-=1)
    {
        z += f*u.find(toupper(a[len], defloc));
    f*=q;   
    }
      
        for (; z > 0; z /= p) c += u[z % p];
 
    reverse(c.begin(), c.end()); 
    cout << string(80, '\xc4') <<  c << endl;
    system("pause");
}
Добавлено через 9 часов 10 минут
доделал прогу, теперь переводит и дробные числа..
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
#include <iostream>
#include <ostream>
#include <string>
#include <algorithm>
#include <locale>
#include <math.h>
#include <sstream>
 
using namespace std;
 
template <typename T>
T input(string const & message, T const & def)
{
    T var(def);
    cout << message << ": ";
    cin >> var;
    return var;
}
 
void main()
{
    locale defloc;
    string u("0123456789ABCDEF"); 
    string a = input("vvedite chislo", string());
    string c,w;
    int q = input("vvedite q", 0);
    int p = input("vvedite p", 0);      
    unsigned long long int z=0; 
    if (a.find(',')!=-1) a[a.find(',')]='.';
    int k=a.find('.'), r = (a.size() - k-1),l=0;
    if (k==-1) 
        r=0;
    else
        {r*=-1;
        a=a.erase(k, 1);
        }
    long double d=0, f=pow((double)q,r);
    
        for (int len=a.size()-1; len>=0;len-=1)
        {
        if (r>=0)
        z += f*u.find(toupper(a[len], defloc));
        else
            d += f*u.find(toupper(a[len], defloc));
        f*=q;
            r+=1; 
        }   
        
    for (; z > 0; z /= p) c += u[z % p];
        
    do
    {
    l+=1;
    if ( l>20 ) break;
    d*=p;
    w+=u[(int)d];
    ostringstream ost;
        ost << d;
        string s_d = ost.str();
        s_d='0'+s_d.erase(0, s_d.find('.'));
    d=stod(s_d);
    }
    while((d>0)); 
           
    reverse(c.begin(), c.end()); 
    cout << string(80, '\xc4') <<  c << '.'<<w<< endl;
    system("pause");
}
0
alexzak
84 / 57 / 1
Регистрация: 07.08.2010
Сообщений: 185
11.09.2011, 00:01 #9
Цитата Сообщение от softmob Посмотреть сообщение
да так по лучше, но ошибка была, не правильно в десятичную систему переводило. исправил, теперь вроде норм работает
Молодец
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2011, 00:01
Привет! Вот еще темы с ответами:

Перевод из Visual Basic в qBasic - QBasic
Добрый день! Хотел бы попросить помочь мне перевести программу из Visual Basic в qBasic. Или помочь найти конвертер...

Перевод кода из Pascal в QBASIC - QBasic
Помогите переписать код в язык QBasic Задание такое: Дан массив A размера N и целые числа К и L (1&lt;=K&lt;L&lt;=N). Переставить в обратном...

Перевод кода из Fortran в QBasic - QBasic
Здравствуйте. Подскажите пожалуйста с переводом кода из Fortran. DO 5 I=1,N 5 Y1(I)=Z(I)*H IF (E_1) 6, 7,...

Перевод из Visual Basic в qBasic - Visual Basic
Sub My() Dim i As Integer, summ As Single, t As Single Dim x As Integer, f As Boolean t = CSng(InputBox(&quot;vvedite&quot;)) summ = 0 i...


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

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

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