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

Изменение системы счисления - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не могу запустить code blocks http://www.cyberforum.ru/cpp-beginners/thread688047.html
При запуске программы появляется окно с текстом- не могу создать каталок проекта (мой перевод с английского) Помогите.
C++ Проверка на ошибки(линейн.алгоритм) Проблем-с не могу вдублить где ошибки. #include <iostream> #include <cmath> using namespace std; int main () { wcout.imbue(locale("rus_rus.866")); int z,k,m,z,c; c = 3; cout << "Введите m: \n"; http://www.cyberforum.ru/cpp-beginners/thread688037.html
C++ Арифмитическое выражение
Само задание: 13,4sin(-1,26)cos| x/7,5 | Где ошибка? #include <iostream> #include <Stdafx.h> #include <cmath> int main() { int x; int otvet;
C++ Циклы: вычислить сумму и произведение ряда
Помогите пожалуйста..Короче нам задали сделать лабу и в одном из заданий такое уровнение (прикриплено ниже ) подскажите как в С++ записать или хоть обьясните что ето токое и как вообще оно решается хотяб с математической точки зрения... Вычислить значение уравнения, которое содержит сумму + произведение y=\sum_{i=1}^{5{i}^{2}}\frac{{5i}^{2}}{i!}+\prod_{i=1}^{25}{i}^{2}
C++ Метод простых итераций http://www.cyberforum.ru/cpp-beginners/thread687998.html
Необходимо реализовать программно метод простых итерация для решения НУ. к примеру возьмём x^6-3x^2+x-1, интервал изоляции корня . Однако до конца метод не понимаю. Точнее главные проблемы с проверкой сходимости... К виду фи(x) привожу т.о.: fi(x) = x + c *(f(x)), однако как программно реализовать... не очень понимаю что то... На входе задаю x0 = a, условие прерывания: xnext - x <=eps &&...
C++ Инкремент и преинкремент Здравствуйте. Я вот решил протестить в чем разница между инкрементом и преинкрементом, и как-то не увидел разницы... В чем же разница? :) #include <iostream> using namespace std; int main(){ int l=0; for(int i=0;i<10;i++){ l+=i; cout<<l<<endl; } подробнее

Показать сообщение отдельно
A1mirr
Сообщений: n/a
04.11.2012, 19:09     Изменение системы счисления
Задача: перевести число (возможно, очень большое) из данной системы счисления в другую, а так же циклически сдвинуть переведённое число его на d позиций
Проблема решения: на некоторых вариантах (например 16->32 или 22->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
#include <stdio.h>
#include <conio.h>
#include <iostream>
 
void main ()
{
    long i=0,n=0,k=0,d=0,p=1;
    char c[32768], ic[32768],dc[32768], inp[32768],base_out,base_inp,ch;
    base_inp=10;                                        //в какой вводим
    base_out=22;                                        //в какой выводим
    for (i=0;i<32769;i++)
        c[i]=ic[i]=dc[i]=inp[i]=0;
    printf("vvedite korrektnoe polozhitelnoe chislo\n");
    while((int(ch=getchar())!='\n'))                        // считывание вводимого числа
    {                                                       
        n++;                                        //количество цифр в числе
        inp[n]=ch;                                          
        if (inp[n]>96) inp[n]+=-87;                 //перевод малых английских в цифры
        if (inp[n]>64) inp[n]+=-55;                         //больших английских
        if (inp[n]>47) inp[n]+=-48; 
    }
 
    while (p!=n+1)                              //перевод в заданную систему счисления
    {
        inp[n+1]=0;                                         
        for(i=1;i<=n;i++)                                   
        {                                                   
            inp[i+1]=inp[i+1]+(inp[i]%base_out)*base_inp;   
            inp[i]=inp[i]/base_out;                         
        }                                                   
        c[k]=inp[n+1]/base_inp;                             
        if (!inp[p]) p++;                                   
        k++;                                                
    }
    while (c[k]==0) k--;                                    //убираем нули в начале
    for(i=k;i>-1;i--)                                       //вывод числа
        if (c[i]<10) printf("%c",(c[i])+48);
        else printf("%c",(c[i])+55);
    printf("\nvvedite sdvig\n");            
    scanf("%d",&d);
    printf("   ");
    for(i=k;i>-1;i--)                                       //сдвиг
    {
        ic[(i+d+100000*(k+1))%(k+1)]=c[i];                  //влево
        dc[(i-d+100000*(k+1))%(k+1)]=c[i];                  //вправо
    }                                   //100000 нужны, если сдвиг очень большой
 
    printf("\n<< \n");
    for(i=k;i>-1;i--)                                       //вывод сдвинутого влево
        if (ic[i]<10) printf("%c",(ic[i])+48);
        else printf("%c",(ic[i])+55);
    printf("\n>> \n");
    for(i=k;i>-1;i--)                                       //вывод сдвинутого вправо
        if (dc[i]<10) printf("%c",(dc[i])+48);
        else printf("%c",(dc[i])+55);
    getch();
}
Добавлено через 11 часов 51 минуту
Отвечу сам себе: возникало переполнение char'a, потому и работало некорректно. Заменил на int и всё стало как надо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru