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

Перевод слов в цифры (по правилу a-1, b-2, z-26, aa-27...) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Одномерный массив ( вычислить произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами) http://www.cyberforum.ru/cpp-beginners/thread984191.html
Необходимо вычислить произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами массива. Затем упорядочить все элементы массива по убыванию вот код #include <cstdlib> #include <iostream> #include <math.h>
C++ Определить входит ли корень уравнения в отрезок Здравствуйте. Подскажите пожалуйста, как лучше сделать. .есть 3 корня уравнения - x1, x2, x3 .Дан определенный промежуток на оси х.( например от x=3 до x=8) Нужно определить, входит ли данный корень в этот промежуток. Желательно с кодом, если можно.. Заранее спасибо. Очень благодарен за то, что вы помогаете http://www.cyberforum.ru/cpp-beginners/thread984184.html
Функции Класса C++
Добрый день , возник вопрос. К примеру есть класс class C_class{ void func_1(); void func_2(); } //Возможно ли вызвать функцию класса func_2 из func_1 ? и как этго сделать ? void class::func_1{ Тут нужно вызвать функцию func_2();
C++ Найти сумму положительных элементов двумерного массива
Всем привет.Нужна помощь в написании этой программы: программа случайным образом заполняет двумерный масив 6*5 целыми числами из диапазона и находит сумму положительных элементов на пересечении четных строе и нечетных столбцов. Вснем кто лткликнулся большое спасибо!!!
C++ Написать программу, которая в строке заменяет символы http://www.cyberforum.ru/cpp-beginners/thread984171.html
Всем привет .Очень срочно нужна программка. Нужен код программы ,которая в строке введенной пользователем заменяет символы s и t на + и ! и подсчитывает количество таких замен. Всем кто откликнулся большое спасибо!:)
C++ OpenCV Всем здрасти :D Начал изучать OpenCV, и стоит такая задача. Есть видеофайл, который нужно вывести на экран, но вывести его нужно так: http://www.cyberforum.ru/attachment.php?attachmentid=319692&stc=1&d=1382396232 Где RGB - результат R1G1B1 - предыдущий кадр R2G2B2 - текущий кадр Омега принимает любое значение. Буду очень признателен, если кто знает где про это можно почитать. Либо... подробнее

Показать сообщение отдельно
Xerocry
0 / 0 / 0
Регистрация: 28.09.2013
Сообщений: 21

Перевод слов в цифры (по правилу a-1, b-2, z-26, aa-27...) - C++

22.10.2013, 09:31. Просмотров 716. Ответов 2
Метки (Все метки)

Здравствуйте. Тренируюсь в с++, пишу программу. Должна переводить слова в цифры(причём a-1, b-2, z-26, aa-27...) и обратно. В одну сторону работает отлично, а в другую багует на любом сочетании цифр, при переводе которых в буквы присутствует буква z. В чём ошибка и как её можно исправить?
Заранее спасибо! =)
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
    
 
    /* Numerically Speaking */
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
     
    typedef struct Big{
            int len;
            int num[50];
    };
     
    Big number;
    Big letter;
     
    Big sumn(Big *a, int n, int base)
    {
              Big res = *a;
              int pos=0;
              int i=0;
              res.num[pos]+=n;
              for(i=0; i<=res.len; i++)
              {
                     if(res.num[i]>base)
                      {                    
                            res.num[i+1]+=res.num[i]/base;
                            res.num[i]%=base;
                      }
              }      
              if (res.num[res.len]>0) res.len++;
              return res;
    }
     
    Big multi(Big *a, int b, int base)
    {
      Big res=*a;
      int r = 0, i;
      for (i=0;i<res.len || r != 0;i++)
      {
        res.num[i] = res.num[i] * b + r;
        r = res.num[i]/base;
            res.num[i]%=base;
      }
         if (i > res.len)
        res.len = i;
      return res;
    }
     
    void let2num()
    {
            for(int i=letter.len-1; i>=0; i--)
            {
                    number=multi(&number, 26, 10);
                    number=sumn(&number, letter.num[i],10);
                    number=multi(&number, 1, 10);
            }
    }
     
    void num2let()
    {
            for(int i=number.len-1; i>=0; i--)
            {
                    letter=multi(&letter, 10, 26);
                    letter=sumn(&letter, number.num[i], 26);
            }
    }
     
     
    int main()
    {
            char buf[1024];
            int x;
     
            while(scanf("%s", buf)==1)
            {
                    if (!strcmp(buf, "*")) break;
                    if (buf[0]>='0' && buf[0]<='9')
                    {
                            number.len = strlen(buf);
                            for(int i=0; i<number.len; i++)
                            {
                                    number.num[i] = buf[number.len-i-1]-'0';
                            }
                            num2let();
                    }
                    else
                    {
                            letter.len = strlen(buf);
                            for(int i=0; i<letter.len; i++)
                            {
                                    letter.num[i] = buf[letter.len-i-1]-'a'+1;
                            }
                            number.len = 1;
                            let2num();
                    }
           
     
                    for(int i=letter.len-1; i>=0; i--)
                                    {
                                            printf("%c", ('a'+letter.num[i])-1);
                                    }
                    printf("\t");
                    for(int i=number.len-1; i>=0; i--)
                            {
                                    printf("%c", '0'+number.num[i]);
                                    if (i && (i%3==0))
                                    {
                                            printf(",");
                                    }
                            }
                    printf("\n");
                    memset(&number, 0, sizeof(Big));
                    memset(&letter, 0, sizeof(Big));
     
     
            }
    }
Код: http://pastebin.com/xi342gST
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru