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

Тип char.Signed/unsigned.Отличие типов данных. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Контейнеры в Windows http://www.cyberforum.ru/cpp-beginners/thread48852.html
Привет.На лето в институте задавали как практику написать приложение с 2мя контейнерами.Мне попалось со списками.Так вот , условиям выбра во 2ой контейнер данных из 1го является - четность.А я убей не помню, как четные числа выводить...((Помогите плиз)
C++ Ошибка времени выполнения Я пишу проэкт в Visual Studia 2008 на C++. У меня есть несколько проблем. Во-первых, когда я собираю финальную версию (release) и запускаю не выполнение, то появляется ошибка: Unhandled exception at 0x00402330 in chtml.exe: 0xC0000005: Access violation reading location 0x00000000. вот в этом месте int main( int argv, char *argc ) { #if ! LINUX setlocale( LC_ALL, ".1251" ); #endif... http://www.cyberforum.ru/cpp-beginners/thread48827.html
C++ Массивы (С++)
Здраствуйте помогите решить задачку на С++, задача простая а обращаюсь к вам потомучто совсем не знаком с этим языком сформировать массив С из нечетных и массив К - из четных чисел последовательности N(m)={10, 8, 4, 3, 6, 15, 2}, m=7. заранее очень благодарен
подскажите мне соответствующую книгу C++
френды,вот в чем загвоздка я не люблю читать литературу с компа,например в форматах pdf или ещё хуже DJVU у меня просто не приспособлены для этого мозги...я люблю читать реальные книги на бумаге...это уже научно доказано,что такая литература лучше усваивается,нежели литература с компа я прочитал в бумажном варианте книгу Стивена Холзнера Самоучитель Visual c++.Учебный курс книга...
C++ Что означают параметры %d, %s, %f и т.д.? http://www.cyberforum.ru/cpp-beginners/thread48806.html
Появилась проблема с выводом переменных в MessageBox. В MSDN нарыл это: #include <stdio.h> int main( void ) { char buffer, s = "computer", c = 'l'; int i = 35, j; float fp = 1.7320534f;
C++ Задача "Кузнечик" Помогите решить в С++ задачу про цифрового кузнечика: имеется линейный массив из 20 чисел 1,2,3,4...20. По нём может прыгать кузнечик скачками по 2 и по 3 клетки. Нужно создать программку, которая считает сколько есть вариантов у кузнечика попасть из клетки 0 на клетку 20. Использовать цикл "for"... подробнее

Показать сообщение отдельно
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
09.11.2010, 10:51     Тип char.Signed/unsigned.Отличие типов данных.
Цитата Сообщение от norge_goth Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
if (word_1 < 0) доп.код(word_1); // если перед числом есть минус берем доп.код
if (word_2 < 0) доп.код(word_2); // если перед числом есть минус берем доп.код
ch = word_1 + word_2;
if (Type(ch) == signed) {
      if (SF == 1) {
             printf("-");
             printf(toDec(доп.код(ch)));
      }
      else printf(toDec(ch));
}
else printf(toDec(ch));
Нет, не так. Доп.код про который я писал нужен лишь для вывода числа на экран (ну или куда там). Соответственно в этих строках он не нужен:
C
1
2
if (word_1 < 0) доп.код(word_1); // если перед числом есть минус берем доп.код
if (word_2 < 0) доп.код(word_2); // если перед числом есть минус берем доп.код
два байта и так правильно суммируются, не зависимо от знака (точнее они вообще знака не имеют, об этом писалось выше)
C
1
2
3
4
5
if (Type(ch) == signed) {
      if (SF == 1) {
             printf("-");
             printf(toDec(ch));//почему у вас тут было написано доп.код??
      }
может вы не совсем поняли что есть доп.код?
вот как это выгдядет на ассемблере (создатели компиляторов закладывают подобный код для вывода чисел, ну может более проффесионально написан, хотя этот тоже не плох)
Assembler
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
OutInt proc
        
;; Проверяем число на знак.
       test    ax, ax
       jns     oi1 ; если флаг SF равен 0, то прыг на метку oi1
 
;; Если оно отрицательное, выведем минус и оставим его модуль.
       mov  cx, ax
       mov     ah, 02h
       mov     dl, '-'  ; Вот о чем я говорил, символ '-' печатается отдельно 
                        ;и не имеет отношения  к самому числу
       int     21h
       mov  ax, cx
       neg     ax
;; Количество цифр будем держать в CX.
oi1:  
        xor     cx, cx
        mov     bx, 10 ; основание сс. 10 для десятеричной и т.п.
oi2:
        xor             dx,dx
        div     bx
; Делим число на основание сс. В остатке получается последняя цифра.
; Сразу выводить её нельзя, поэтому сохраним её в стэке.
        push    dx
        inc     cx
; А с частным повторяем то же самое, отделяя от него очередную
; цифру справа, пока не останется ноль, что значит, что дальше
; слева только нули.
        test    ax, ax
        jnz     oi2
; Теперь приступим к выводу.
        mov     ah, 02h
oi3:
        pop     dx
; Извлекаем очередную цифру, переводим её в символ и выводим.
 
        add     dl, '0'
        int     21h
; Повторим ровно столько раз, сколько цифр насчитали.
        loop    oi3
        
        ret
 
OutInt endp 
 
;код взят здесь : [url]http://www.cyberforum.ru/assembler/thread54461.html[/url]
Автор кода (Goodwin98) по-моему достаточно прокоментировал его, даже не зная АСМа можно понять логику его работы, я там только пару своих коментариев добавил. (строка 5,10)
Если еще остались вопросы - спрашивайте, отвечу (если смогу)))
 
Текущее время: 00:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru