Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
1

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

08.09.2011, 22:26. Показов 1488. Ответов 8
Метки нет (Все метки)

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

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

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

Перевод программы из qbasic в С++
помогите перевести программу из Qbasic на С++ значение n = 3 OPEN &quot;input7.TXT&quot; FOR INPUT AS #1...

Перевод с qbasic на Pascal
Здравствуйте! Я написал программу для qBasic. Помогите пожалуйста переписать её для Pascal....

8
2554 / 1319 / 178
Регистрация: 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
594 / 532 / 76
Регистрация: 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
1255 / 705 / 359
Регистрация: 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
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
09.09.2011, 15:05 5
ну скорей всего ругается на выход за границы знакового байта. сделай char беззнаковым (unsigned) тогда не будет.
1
1255 / 705 / 359
Регистрация: 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
84 / 57 / 8
Регистрация: 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
1255 / 705 / 359
Регистрация: 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
84 / 57 / 8
Регистрация: 07.08.2010
Сообщений: 185
11.09.2011, 00:01 9
Цитата Сообщение от softmob Посмотреть сообщение
да так по лучше, но ошибка была, не правильно в десятичную систему переводило. исправил, теперь вроде норм работает
Молодец
0
11.09.2011, 00:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.09.2011, 00:01
Помогаю со студенческими работами здесь

Перевод из QBasic в VB.NET
Здраствуйте, дали задание перевести программу на VB.net вот исходник (это часть кода): N=12:...

Перевод с Borland Pascal на QBasic
Переведите, пожалуйста, на Basic. Последовательность Хэмминга образуют натуральные числа, не...

Перевод кода Fortran в QBasic
Здравствуйте. Подскажите пожалуйста как правильно будет перевести данный код из Fortran в QBasic....

Перевод из Visual Basic в qBasic
Sub My() Dim i As Integer, summ As Single, t As Single Dim x As Integer, f As Boolean t =...


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

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