Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
qweds
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 21
#1

Найти ошибки! Если не сложно подскажите) - C++

20.03.2013, 23:56. Просмотров 509. Ответов 4
Метки нет (Все метки)

в этой программке упаковки кода есть ошибка, какая не пойму
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
#include <stdio.h>
int main(void){
 char с; /* код стану */
 char f; /* ознака помилки */
 char b; /* ознака зайнятості */
 unsigned char n; /* кількість байт */
 unsigned int UnitStateWord; /* слово стану */
  /* введення складових частин */
  printf("Введіть код стану (0 - 31) >");
  scanf("%d",&c);
  printf("Введіть ознаку помилки (0 / 1) >");
  scanf("%d",&f);
  printf("Введіть ознаку зайнятості (0 / 1) >");
  scanf("%d",&b);
  printf("Введіть кількість переданих байт (0 - 255) >");
  scanf("%d",&n);
  /* формування упакованого коду */
  UnitStateWord=((unsigned int)c&0x1F)<<11;
  UnitStateWord|=((unsigned int)f&1)<<9;
  UnitStateWord|=((unsigned int)b&1)<<8;
  UnitStateWord|=n&0xFF;
  /* виведення результату */
  printf("\nСлово стану пристрою = %04x\n"
     UnitStateWord);
  return 0;
}
оно не правильно складывает! Помогите плиз!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2013, 23:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти ошибки! Если не сложно подскажите) (C++):

Зделайте на С++ пж если не сложно - C++
Даний одномірний масив А, що складається з N елементів. Перенести в початок масиву всі парні елементи, а в кінець масиву - усі непарні.

Посмотрите если не сложно - C++
Уважаемые форумчане.Уже пол дня сижу, и не имею малейшего предпочтения как ее решить..... Если можно, то помогите хотя бы как то. :wall: ...

Работа с текстом. Объясните алгоритм если не сложно.. - C++
1. Дан текстовый файл, фразы в котором отделены друг от друга точками, а слова – пробелами и знаками препинания. Удалить из этого файла...

Вывод дописать, если не сложно) Задание:Построить квадратную матрицу порядка 2n! - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;cstdio&gt; using namespace std; int element(int x,int y, int rang, int *point)...

Сложно найти ошибку отладчиком - C++
Здравствуйте, столкнулся с такой проблемой, в курсовой вылетает иногда ошибка list iterator not dereferencable Понятно, что это...

Найти ошибки в коде и исправить эти ошибки (Наследование) - C++
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков: list.h (inline) #pragma once class list...

4
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
21.03.2013, 00:01 #2
ну может проблема в таком коде:
C++
1
2
3
4
5
6
scanf("%d", &c);
//c - имеет тип char, а %d означает, что будет считываться int.
//раз уж у вас везде в конечном счете используется unsigned int, то и переменные все такими же сделайте.
//и для считывания unsigned int нужно использовать %u
unsigned int ui;
scanf("%u", &ui);
вот еще загляните в табличку, там всякие другие флажки помимо %d и %u описаны.
http://www.cplusplus.com/reference/cstdio/scanf/
1
qweds
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 21
21.03.2013, 00:29  [ТС] #3
Спасибо за эту подсказку, но это не помогло(((
это программка распаковки кода
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
#include <stdio.h>
int main(void){
 char с; /* код стану */
 char f; /* ознака помилки */
 char b; /* ознака зайнятості */
 unsigned char n; /* кількість байт */
 unsigned int UnitStateWord; /* слово стану */
  /* введення слова стану пристрою */
  printf("Введіть слово стану пристрою \n");
  printf("(16-ричне число від 0 до 0xFFFF) >");
  scanf("%x",&UnitStateWord);
  /* Виділення складових частин */
  c=(UnitStateWord>>11)&0x1F;
  f=(UnitStateWord>>9)&1;
  b=(UnitStateWord>>8)&1;
  n=UnitStateWord&0xFF;
  /* Виведення результатів */
  putchar('\n');
  printf("Код стану                  = %d\n",c);
  printf("Ознака помилки             = %d\n",f);
  printf("Ознака зайнятості          = %d\n",b);
  printf("Кількість переданих байт = %d\n",n);
  return 0;
}

Так вот попробуйте ввести например cb42
у вас выйдут числа 25,1,1,66
А если ввести эти числа в первую программку то не получится код cb42((((
Подскажите кто знает
0
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
21.03.2013, 00:36 #4
вы хоть что-нибудь сделали из сказанного то?
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
#include <stdio.h>
int main(void)
{
    unsigned c; /* код стану */
    unsigned f; /* ознака помилки */
    unsigned b; /* ознака зайнятості */
    unsigned n; /* кількість байт */
    unsigned UnitStateWord; /* слово стану */
    /* введення складових частин */
    printf("Введіть код стану (0 - 31) >");
    scanf("%u",&c);
    printf("Введіть ознаку помилки (0 / 1) >");
    scanf("%u",&f);
    printf("Введіть ознаку зайнятості (0 / 1) >");
    scanf("%u",&b);
    printf("Введіть кількість переданих байт (0 - 255) >");
    scanf("%u",&n);
    /* формування упакованого коду */
    UnitStateWord=((unsigned int)c&0x1F)<<11;
    UnitStateWord|=((unsigned int)f&1)<<9;
    UnitStateWord|=((unsigned int)b&1)<<8;
    UnitStateWord|=n&0xFF;
    /* виведення результату */
    printf("\nСлово стану пристрою = %04x\n", UnitStateWord);
    return 0;
}
1
qweds
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 21
21.03.2013, 01:24  [ТС] #5
Да спс это работает))
А вот тут мож глянуть
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <conio.h>
 
int main(void)
{
clrscr();
unsigned int  s, m, h;
unsigned int UnitStateWord;
 
printf ("vvedit`(1-31)> ");
scanf ("%u", &s);
printf ("vvedit` (1-12)> ");
scanf ("%u", &m) ;
printf ("vvedit` (1980-2013)> ");
scanf ("%u", &h);
UnitStateWord=((unsigned int)s&0x1f)<<11;
UnitStateWord|=((unsigned int)m&0xc)<<6;
UnitStateWord|=h&0x7dd;
 
printf ("\n format =%04x\n")<<UnitStateWord;
getche ();
return 0;
}
Добавлено через 1 минуту
распаковка:

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
#include <stdio.h>
#include <conio.h>
 
int main(void)
{
unsigned  s, m, h;
unsigned  UnitStateWord;
clrscr();
printf("format komandy dodavannya v systemi obchyslennya\n > ");
scanf("%x",&UnitStateWord);
 
s=(UnitStateWord>>11)&0x1F;
 
m=(UnitStateWord>>6)&0xC;
 
h=UnitStateWord&0x7DD;
putchar('\n');
printf("dodavanya baytov> %d\n",s);
printf("\nregisr 1 operanda> %d\n",m);
printf("\nregistr 2 operanda> %d\n",h);
 
getche();
return 0;
}
Добавлено через 5 минут
d заменил на u

Добавлено через 14 минут
Плиз гляньте кто-то!!!

Добавлено через 4 минуты
Второе число не получается!!! Выбивает все время 12!!! Помогите!!!
0
21.03.2013, 01:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2013, 01:24
Привет! Вот еще темы с ответами:

Найти ошибки в коде и исправить эти ошибки - C++ - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не получается отловить откуда. A.h #pragma once ...

Найти ошибки в коде и исправить эти ошибки - C++
Есть у меня вот такой код: #include &lt;iostream&gt; using namespace std; class A{ private: int* a; size_t size_; ...

Подскажите ошибки в коде - C++
Здравствуйте!Решил задачу из книги Стивена Прата, программа работает,но хотелось бы узнать можно ли ее реализовать по другому и насколько...

Подскажите где ошибки.. - C++
Здраствуйте ув. знатоки! есть у меня вот код программы: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.