Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Где вы обычно реализуете поведение настраиваемой программистом системы?

Где вы обычно реализуете поведение настраиваемой программистом системы?
В виртуальных методах класса-наследника.
16,7%
 (1)
В свойствах процедурного типа.
16,7%
 (1)
Как-то еще.
66,7%
 (4)
Голосование открыто только для зарегистрированных пользователей.
Проголосовало: 6  

Например, при реализации библиотеки кода общего пользования.
Ответ: па сабжу: конечно же "как-то еще".
Вопрос: Перевод числа из шестнадцатеричной системы счисления в десятеричную

Добрый день. Никак не могу понять, как можно реализовать переход из 16 системы в десятеричную.
Вот допустим нам дано число: FF12A в 16-ричной системе. По другому это же число 15151210 в 16-ричной системе.
Вот как при вводе этого "FF12A" получить это "15151210".
Вот представил переменную типа string и что дальше? Нужно как-то выделить каждую букву отдельно и с помощью оператора "если" присвоить каждой букве свое значение, но я не знаю, как выделить каждую букву. Надеюсь вы сможете мне помочь, спасибо вам)
Ответ:
Сообщение от Ermitash
По другому это же число 15151210 в 16-ричной системе.
Вы хотели сказать, что FF12A16 - это число 15*164+15*163+1*162+2*161+10*160 = 104477810, или все же вы имели в виду, что мы должны получить именно число 1515121010?

Если первое, то вариант Казанского.
Если второе - то вариант Апостроффа.

С уважением,
Аксима
Вопрос: Реализовать выдачу в системе заданной суммы m минимальным числом денежных знаков

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
uses crt;
var i,j,m,n,b:longint;
k:arrary[1..1000]of longint;
 
begin
 write('M-> ');
 readln(m);
 write('N-> ');
 readln(n);
 write('??????? ?????? K -> ');
 for i:=1 to n do read(k[i]);
 readln;
 
 for i:=1 to n do
 for j:=1 to n-1 do if k[j]<k[j+1] then
 begin
  b:=k[j];
  k[j]:=k[j+1];
  k[j+1]:=b;
 end;
 
 for i:=1 to n do
 begin 
  writeln(k[i],' ?.?. - ',m div k[i]);
  m:=m mod k[i];
 end;
 readln;
end.
Вот собственно код. Заранее спасибо!

Вот задание если нужно.
В массиве K(n) в порядке убывания представлены достоинства денежных знаков (купюр и монет) валютной системы некоторой страны. Реализовать выдачу в этой системе заданной суммы m минимальным числом денежных знаков.
Ответ: Пусть достоинства монет: 4, 3, 1
Пробуем выдать 6
Получаем: 4, 1, 1 -- 3 монеты
А минимум на самом деле 2: 3, 3

Разве нет?
Вопрос: Реализовать выдачу заданной суммы денег

В одномерном массиве в порядке убывания представлены достоинства денежных знаков (купюр и монет) валютной системы некоторой страны. Реализовать выдачу в этой системе заданной суммы – m, минимальным числом денежных знаков.
Есть на С, помогите переводе на С++:
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
using System;
using System.Collections.Generic;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] babos = new int[] { 1000, 500, 100, 50, 20, 10, 3, 1 };// массив достоинств купюр
            int sum;// сумма от которой отталкиваемся
            while (true)
            {
                try
                {
                    sum = Convert.ToInt32(Console.ReadLine()); // вводим нужную сумму
                }
                catch
                {
                    Console.WriteLine("Вводите только цифры");
                    continue;
                }
                break;
            }
            Console.WriteLine("Были использованы следующие купюры:");
            for (int i = 0; i < babos.Length; i++)
            {
                int count = sum / babos[i];
                sum =sum % babos[i];
                Console.WriteLine("Достоинсвтом {0} \t {1} раз", babos[i], count);
            }
            Console.ReadLine();
                
        }
    }
}
Ответ:
Сообщение от eventdnb
Есть на С
У меня в С компиляторе не компилируется, это не рабочий код?
Вопрос: Подключение платёжных систем на сайт. Рекомендации новичку.

Здравствуйте!

Я - начинающий в веб-разработке. Возникла необходимость подключить платёжные системы к сайту интернет-магазина. Сайт полностью самописный, на чистом PHP+MySQL, без применения каких-либо CMS или движков. До этого с платёжными системами никогда не работал. Порекомендуйте мне пожалуйста какой-либо ресурс, где детально рассказывается, как это сделать. И такой вопрос - насколько это рискованно? Есть ли опасность по неопытности допустить такую ошибку, что либо деньги не будут доходить до продавца, либо со счёта покупателя будет списано больше, чем он должен заплатить? То есть - имеется ли для веб-программиста риск оказаться в долгу перед продавцом или покупателем, если он (программист) что-либо "накосячит" при интеграции платёжной системы на сайт?

Заранее спасибо за ответ.
Ответ:
Vasiliy_Kashkin
Порекомендуйте мне пожалуйста какой-либо ресурс, где детально рассказывается, как это сделать.
Обычно на сайте платёжной системы и сказано, как её подключать.

Vasiliy_Kashkin
Есть ли опасность по неопытности допустить такую ошибку, что либо деньги не будут доходить до продавца, либо со счёта покупателя будет списано больше, чем он должен заплатить? То есть - имеется ли для веб-программиста риск оказаться в долгу перед продавцом или покупателем, если он (программист) что-либо "накосячит" при интеграции платёжной системы на сайт?
Как Вы хотите накосячить, чтоб списывалось больше или "не доходило" - явным образом завышать сумму оплаты, вместо одного платежа проводить два, переводить деньги на левый счёт, как-то ещё? Или Вы считаете, что среди программистов, поддерживающих платёжные системы немало самоубийц? ;-) Соблюдайте рекомендации, вникайте в суть происходящих процессов, тестируйте перед сдачей в эксплуатацию и проблем не будет.
Вопрос: Стоит ли пойти работать программистом Си?

Вообщем ситуация такая, решил пойти работать на Junior C++ developer... город у меня маленький и программисты С++ не особо пользуются спросом, если и есть вакансии, то требуют опыт работы... после того как выставил резюме, сразу пришло предложение, я безумно обрадовался, нужно было сделать простое тестовое задание... задание сделал в тот же день, пригласили на собеседование, но на собеседовании когда узнали что опыта нет - сразу домой отправили (это при том, что в резюме было четко указано, что опыта работы нет)...
ну да ладно, это предыстория... что мы имеем сейчас: резюме уже 2 недели в инете, за две недели было только одно предложение (о нем написано выше)... и вот знакомый говорит мол нам на заводе нужны программисты, что-то связанное с микросхемами, мол придешь - сразу берем, без вопросов... НО они программируют на Си!!! теперь главный вопрос: стоит ли пойти туда работать (если честно не особо горю желанием, я все время изучал плюсы) или подождать еще (что тоже не есть хорошо, так как уже 2 недели прошло, а результатов мягко говоря мало), или "ваш вариант"?????
Ответ:
Сообщение от Lawliet1
уже закончил, если это был тонкий намек на то, что автор мечтатель и хочет начать работать программистом закончив курс по С++
А вот остальные 9 семестров уже конкретно учат программировать. Это и математика, по 2-3 предмета в семестр, и принципы проектирования архитектуры, и то как эту математику к компу приложить. А С++ является всего лишь инструментом такого прикладывания математики и логики. Вообще программист это в первую очередь математик и аналитик и только потом уже кодер. Кстати в результате и как кодер получается обычно на порядок выше чем просто кодер. Вообще как говорит один из одногрупников - у них там в Филадельфии считается что С++ это для настоящих мужчин. А для простеньких скромных информационных задач бизнеса есть Java и даже JavaScript. У нас кстати тоже к этому идет. Как минимум окошко с ошибкой JavaScript на банкомате уже давно никого не удивляет. И даже культовые игрушки уже на питоне мастырят.
Соответсвенно без знания серьезной математики и принципов построения реалтаймовых систем, или систем со сложными древовидными структурами с паритетными связями (типа промышленных CAD), в которых автоматические мусоросборники только мешают и слетают с катушек, и т.д. и т.п работу программистом C++ будет найти сложно.

Добавлено через 6 минут
Сообщение от Lawliet1
это ж от Borland
Ну они уже давно Emarcodero все это хозяйство продали.

Добавлено через 6 минут
Сообщение от Lawliet1
VS
Тоже с недавнего времени приходится много пользовать MSVC. До этого пользовал в основном C++ Builder. Так вот впечатление от Visual Studio такое будто вернулся в середину 90-ых. Как IDE Borland Turbo C++ 1.0 и та была гораздо умнее чем 15-я студия, единственное что подсветки синтаксиса не было, она только в 3-ей появилась. А все остальное на порядок удобнее. Я уже молчу про концепцию визуальной разработки. Самое главное что непонятно в Visual Studio - а где тут собственно говоря визуальная разработка?
Вопрос: Настраиваемые клавиши

Привет все!
Возникают проблемы при создании настраиваемой системы ввод-вывод.
У меня имеется файл Keys bind формата .txt, в котором на каждой строке указано действие кнопки и код клавиши.
Класс input обрабатывает его и создает эту кнопку, отсылая конструктору кнопки в качестве параметров код клавиши и ее действие, т.е. какой либо метод:

Код 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
class Input
{
    string[] setting_text;
    List<Key> keys;
 
    public Input()
    {
        keys = new List<key>();
        setting_text = File.ReadAllLines("Keys bind.txt");
        
        foreach (string ln in setting_text)
        {
            char[] ln_arr = ln.ToCharArray();
            int numb = 0;
            foreach (char ch in ln_arr)
            {
                numb++;
                if (ch == ':')
                {
                    string action = new string(ln_arr, 0, numb);
                    string key_name = new string(ln_arr, numb, ln_arr.Length - numb);
                    game_keys.Add(new Key(key_code, action));
                }
            }
        }
    }
}
1) Класс Key должен в присвоить этот метод и код клавиши. С кодом клавиши проблем нету, но как назначить кнопке метод, передаваемый в качестве параметра? Знаю, что через делегаты, но я не могу разобраться в них...
2) В классе input есть еще метод, обрабатывающий нажатие. Как найти в keys[] ту кнопку, которая имеет именно этот код клавиши? Пробегаться по всему списку с помощью foreach и проверять поле key_code клавиши для каждого case?
Код C#
1
2
3
4
5
6
7
8
9
switch (PressedKeyCode)
        {
            case (KeyCodeEnum.SomeKeyCode):
                   foreach (Key some_key in keys)
                   {
                         if (some_key.key_code == PressedKeyCode)
                         some_key.do_action ();
                   }
        }
Ответ: Задумка очень интересная, завтра попробую реализовать, обязательно напишу. А поделись файлом бинда если не сложно, чтобы я не выдумывал.
Вопрос: Глубина рекурсии и поведение программы

Вычисляю факториал:
Python
1
2
3
4
5
6
7
8
9
def fact(n):
     if n == 0:
          return 1
     return fact(n - 1) * n
 
import sys
sys.setrecursionlimit(2000)
 
print fact(1000)
Непонятно поведение программы при разных глубинах рекурсии. При глубине 500 в Shell ожидаемо появляется множество сообщений об ошибке:
File "C:/Python27/projects/big_factorial.py", line 4, in fact
return fact(n - 1) * n
RuntimeError: maximum recursion depth exceeded

Если же я выставляю глубину 5, не появляется вообще никаких сообщений, вывод программы тоже отсутствует. Чем объясняется такое поведение?

Python 2.7.10.
Ответ:
Сообщение от kozlik_kozlik
Такое поведение idle разве не баг?
А idle это не интерпретатор (по этому это уже не баг python в принцепи, потому что python это интрепретатор) и вообще idle это полная порнография и позор. Я этой дрянью не пользуюсь. Можешь это воспринимать как баг, но это баг idle, а не интерпретатора, по этому лично меня это ни капелюшки не трогает. Все программисты пользуются или ide (типо pycharm и т д) или продвинутыми блокнотами, типо sublime.
Вопрос: Вакансия ПРОГРАММИСТ СИ++ Лондон

Поступило несколько хороших  вакансий  на программистов СИ++  с работой в Лондоне. Очень приличная зарплата
Рассматривают из любого города и страны

Вакансий - несколько, не бойтесь конкуренции, привлекайте коллег!

См требования.


Ищем  опытного Программиста  С++, у которого есть желание жить и работать в Лондоне.
Крупная  известная  западная компания, лидер в своей отрасли, предлагает  постоянный контракт, отличный компенсационный пакет, компенсирует переезд ( кандидату и возможно супргугу-ге), расходы на рабочую визу, отличный офис в центре Лондона  программисту С++
Мы ищем :
• Опыт программирования, написания кода  с нуля на С++ обязателен  не менее трех лет         ( будет проф тестирование).  
• Желателен опыт работы на Unix и Linux платформах  ( возможно Microsoft)
• Опыт работы с распределенными  системами
• Знание Python обязательно
• Знание английского будет плюсом, но не обязательно
• Опыт работы с алгоритмами

Если Вы заинтересованы, просьба отправлять резюме ( на русском или на английском)  на  anna-recruitment@mail.ru. 
В теме письма : Программист С++ Лондон (LIK)

Ответ:
Поступило несколько хороших  вакансий  на программистов СИ++  с работой в Лондоне. Очень приличная зарплата
Рассматривают из любого города и страны

Вакансий - несколько, не бойтесь конкуренции, привлекайте коллег!

См требования.


Ищем  опытного Программиста  С++, у которого есть желание жить и работать в Лондоне.
Крупная  известная  западная компания, лидер в своей отрасли, предлагает  постоянный контракт, отличный компенсационный пакет, компенсирует переезд ( кандидату и возможно супргугу-ге), расходы на рабочую визу, отличный офис в центре Лондона  программисту С++
Мы ищем :
• Опыт программирования, написания кода  с нуля на С++ обязателен  не менее трех лет         ( будет проф тестирование).  
• Желателен опыт работы на Unix и Linux платформах  ( возможно Microsoft)
• Опыт работы с распределенными  системами
• Знание Python обязательно
• Знание английского будет плюсом, но не обязательно
• Опыт работы с алгоритмами

Если Вы заинтересованы, просьба отправлять резюме ( на русском или на английском)  на  anna-recruitment@mail.ru. 
В теме письма : Программист С++ Лондон (LIK)

Вопрос: В двоичной системе счисления не выводить незначащие нули

Здравствуйте помогите пожалуйста, сделать так в программе чтобы в двоичной системе счисления впереди нули не выводились а начинался результат с единицы (смотреть скрин)
Код ASM
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
.model small
.data
buf db 8,10 dup(0)  ;принимает строку, введенную с клавиатуры
msg1    db 13,10, 'Input decimal number: $'
msg2    db 13,10, 'BIN: $'
msg3    db 13,10, 'OCT: $'
msg4    db 13,10, 'HEX: $'
.stack 256
.code
start:
    mov ax,@data    ;Настраиваем сегментные регистры
    mov ds,ax
    mov ah,9        ;функция вывода сообщения на экран
    lea dx,msg1     ;выводимое сообщение
    int 21h         ;выводим на экран
    mov ah,0ah      ;функция ввода строки с клавиатуры
    mov dx,offset buf       ;буфер куда вводить
    int 21h         ;пользователь вводит в текстовом виде в buf значение числа
    lea si,buf[2]       ;начало введенного текста
    call str2dw     ;преобразовываем строку в значение
    mov bp,ax
    mov ah,9        ;функция вывода сообщения на экран
    lea dx,msg2     ;выводимое сообщение
    int 21h         ;выводим на экран
    mov ax,bp       ;введенное число
    call printbin16     ;вывести в двоичной системе
 
    mov ah,9        ;функция вывода сообщения на экран
    lea dx,msg3     ;выводимое сообщение
    int 21h         ;выводим на экран
    mov ax,bp       ;введенное число
    call printoct       ;вывести в восьмеричной системе
    
    mov ah,9        ;функция вывода сообщения на экран
    lea dx,msg4     ;выводимое сообщение
    int 21h         ;выводим на экран
    mov ax,bp       ;введенное число
    call printhex       ;вывести в шестнадцатеричной системе
    
    mov ah,1    ;Ожидаем нажатия любой клавиши
    int 21h
    mov ax,4c00h    ;закончить программу
    int 21h
str2dw  proc
;Преобразование строки в число
;на входе ds:si ссылается на ASCII строку, которую нужно преобразовать
;на выходе в ax - число.
    push dx     ;сохраняем регистры
    push si
    xor dx,dx   ;сумма
@lp1:   xor ax,ax
    lodsb       ;берем символ
    cmp al,13   ;если это конец строки,
    jz @ex      ;то заканчиваем
    cmp al,'9'  ;если это не цифра,
    jnbe @lp1   ;то пропускаем
    cmp al,'0'      ;если это не цифра,
    jb @lp1     ;то пропускаем
    sub ax,'0'  ;получаем цифровое значение
    shl dx,1    ;умножаем сумму на 10
    add ax, dx
    shl dx, 2
    add dx, ax  ;прибавляем текущее значение
    jmp @lp1    ;продолжаем обработку
@ex:    mov ax,dx   ;помещаем результат в ах
    pop si      ;восстанавливаем регистры
    pop dx
    ret     ;выход их подпрограммы
Ответ:
Код ASM
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
.model small
.data
buf db 8,10 dup(0)  ;принимает строку, введенную с клавиатуры
msg1    db 13,10, 'Input decimal number: $'
msg2    db 13,10, 'BIN: $'
msg3    db 13,10, 'OCT: $'
msg4    db 13,10, 'HEX: $'
.stack 256
.code
start:
    mov ax,@data    ;Настраиваем сегментные регистры
    mov ds,ax
    mov ah,9        ;функция вывода сообщения на экран
    lea dx,msg1     ;выводимое сообщение
    int 21h         ;выводим на экран
    mov ah,0ah      ;функция ввода строки с клавиатуры
    mov dx,offset buf       ;буфер куда вводить
    int 21h         ;пользователь вводит в текстовом виде в buf значение числа
    lea si,buf[2]       ;начало введенного текста
    call str2dw     ;преобразовываем строку в значение
    mov bp,ax
    mov ah,9        ;функция вывода сообщения на экран
    lea dx,msg2     ;выводимое сообщение
    int 21h         ;выводим на экран
    mov ax,bp       ;введенное число
    call printbin     ;вывести в двоичной системе
 
    mov ah,9        ;функция вывода сообщения на экран
    lea dx,msg3     ;выводимое сообщение
    int 21h         ;выводим на экран
    mov ax,bp       ;введенное число
    call printoct       ;вывести в восьмеричной системе
    
    mov ah,9        ;функция вывода сообщения на экран
    lea dx,msg4     ;выводимое сообщение
    int 21h         ;выводим на экран
    mov ax,bp       ;введенное число
    call printhex       ;вывести в шестнадцатеричной системе
    
    mov ah,1    ;Ожидаем нажатия любой клавиши
    int 21h
    mov ax,4c00h    ;закончить программу
    int 21h
str2dw  proc
;Преобразование строки в число
;на входе ds:si ссылается на ASCII строку, которую нужно преобразовать
;на выходе в ax - число.
    push dx     ;сохраняем регистры
    push si
    xor dx,dx   ;сумма
@lp1:   xor ax,ax
    lodsb       ;берем символ
    cmp al,13   ;если это конец строки,
    jz @ex      ;то заканчиваем
    cmp al,'9'  ;если это не цифра,
    jnbe @lp1   ;то пропускаем
    cmp al,'0'      ;если это не цифра,
    jb @lp1     ;то пропускаем
    sub ax,'0'  ;получаем цифровое значение
    shl dx,1    ;умножаем сумму на 10
    add ax, dx
    shl dx, 2
    add dx, ax  ;прибавляем текущее значение
    jmp @lp1    ;продолжаем обработку
@ex:    mov ax,dx   ;помещаем результат в ах
    pop si      ;восстанавливаем регистры
    pop dx
    ret     ;выход их подпрограммы
str2dw  endp
;преобразование числа из ах в восьмеричное число вывод на экран
;ax - число
printoct proc
    push cx ;сохраняем регистры
    push dx
    xor cx,cx   ;в сх будет количество цифр в десятичном числе
@@m1a:  mov dx,ax   ;скопировать остаток числа
    and dx,7    ;получить остаток от деления на 8 (три младщих бита)
    shr ax,3    ;Разделить число на 8
    push dx     ;и сохраняем остаток от деления(коэффициенты при степенях) в стек
    inc cx      ;увеличиваем количество десятичных цифр числа
    test ax,ax  ;после деления остался 0?
    jnz @@m1a   ;если нет, продолжаем
    mov ah,2        ;ф-я вывода символа
@@m2a:  pop dx      ;взять из стека цифру цисла
    add dl,'0'  ;преобразовываем цифру в ASCII символ
    int 21h     ;вывести на экран
    loop @@m2a  ;все цифры
    pop dx      ;восстанавливаем регистры
    pop cx
    ret     ;выход из подпрограммы
printoct endp
;преобразование числа из ах в 2ичное число вывод на экран
;ax - число
printbin proc
    push cx ;сохраняем регистры
    push dx
    xor cx,cx   ;в сх будет количество цифр в десятичном числе
@@m3a:  mov dx,ax   ;скопировать остаток числа
    and dx,1    ;получить остаток от деления на 2 
    shr ax,1    ;Разделить число на 2
    push dx     ;и сохраняем остаток от деления(коэффициенты при степенях) в стек
    inc cx      ;увеличиваем количество десятичных цифр числа
    test ax,ax  ;после деления остался 0?
    jnz @@m3a   ;если нет, продолжаем
    mov ah,2        ;ф-я вывода символа
@@m4a:  pop dx      ;взять из стека цифру цисла
    add dl,'0'  ;преобразовываем цифру в ASCII символ
    int 21h     ;вывести на экран
    loop @@m4a  ;все цифры
    pop dx      ;восстанавливаем регистры
    pop cx
    ret     ;выход из подпрограммы
printbin endp
;ax - число
printhex proc
    push cx ;сохраняем регистры
    push dx
    xor cx,cx   ;в сх будет количество цифр в десятичном числе
@@m5a:  mov dx,ax   ;скопировать остаток числа
    and dx,15   ;получить остаток от деления на 16
    shr ax,4    ;Разделить число на 16
    push dx     ;и сохраняем остаток от деления(коэффициенты при степенях) в стек
    inc cx      ;увеличиваем количество десятичных цифр числа
    test ax,ax  ;после деления остался 0?
    jnz @@m5a   ;если нет, продолжаем
    mov ah,2        ;ф-я вывода символа
@@m6a:  pop dx      ;взять из стека цифру цисла
    add dl,'0'  ;преобразовываем цифру в ASCII символ
    cmp dl,'9'      ;если не это буква A-F
    jbe @m1         ;то пропускаем
    add dl,7        ;а если буква,то корректируем символ
@m1:    int 21h     ;вывести на экран
    loop @@m6a  ;все цифры
    pop dx      ;восстанавливаем регистры
    pop cx
    ret     ;выход из подпрограммы
printhex endp
 
end start