Программрование для чайников.

Автор Catcatcat, 27-07-2011, 11:02:52

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

Jeka

Дуже потрібна допомога з сі шарпу. на формі є компонент Chart, що послуговується для відображення графіків. я хочу додати точку (у двовимірному просторові) на цей графік. для цього послуговується метод chart1.Series[0].Points.AddXY(double,double); також на формі є компонент dataGridView для выдображення даних у формі таблиці. мені необхідно побудувати графік на основі даних з таблиці. отже я намагаюсь це зробити за допомогою такого рядку програмного коду:
chart1.Series[0].Points.AddXY((double)(dataGridView1[0,i].Value),(double)(dataGridView1[1,i].Value)); де i - поточний нумер рядка таблиці.
На етапі виконання генерується виняток "Заданное приведение является недопустимым." прошу допомоги

Catcatcat

Вопрос знатокам C++

Имеются переменные
unsigned chat a;
unsigned Int b;

мне необходимо байт данных переменной, а вставить во второй байт переменной b
например,
                      b = 00000000 00000001;
                      a = 00010100;

в результате должно получиться b= 00010100 00000001;

Как это можно сделать в C++, можно ли использовать malloc и как?

Jeka

Цитата: Catcatcat от 05-09-2011, 12:58:58
Вопрос знатокам C++

Имеются переменные
unsigned chat a;
unsigned Int b;

мне необходимо байт данных переменной, а вставить во второй байт переменной b
например,
                      b = 00000000 00000001;
                      a = 00010100;

в результате должно получиться b= 00010100 00000001;

Как это можно сделать в C++, можно ли использовать malloc и как?

пользуемся шеснацатиричными константами вида 0X или 0x
Мое видение (наверно есть и проще варианты).
для начала превратим в 1цы старший байт слова b. для этого сделаем операцию b|0xF.
теперь имеется b=11111111 0000001
теперь делаем дизъюнкцию b и A (где а становится старшим байтом слова A, а младшая часть - нули). то бишь b|A.
Младшая  часть b при этом не меняется , а старшая часть превращается в a.

Jeka

Цитата: Jeka от 03-09-2011, 11:12:26
Дуже потрібна допомога з сі шарпу. на формі є компонент Chart, що послуговується для відображення графіків. я хочу додати точку (у двовимірному просторові) на цей графік. для цього послуговується метод chart1.Series[0].Points.AddXY(double,double); також на формі є компонент dataGridView для выдображення даних у формі таблиці. мені необхідно побудувати графік на основі даних з таблиці. отже я намагаюсь це зробити за допомогою такого рядку програмного коду:
chart1.Series[0].Points.AddXY((double)(dataGridView1[0,i].Value),(double)(dataGridView1[1,i].Value)); де i - поточний нумер рядка таблиці.
На етапі виконання генерується виняток "Заданное приведение является недопустимым." прошу допомоги

))) сам додумался. оказывается по умолчанию при конвертации в формат double числовой разделитель для нашего региона это запятая, и пришлось указывать CultureInfo "en-USA" или чтото в этом роде

Catcatcat

Цитироватьтеперь делаем дизъюнкцию b и A (где а становится старшим байтом слова A, а младшая часть - нули). то бишь b|A.
Младшая  часть b при этом не меняется , а старшая часть превращается в a.


вот это я чето не понял, ты там еще руганулся как то... ;D

Я для себя так думаю, что то такое надо сделать

b=а<<8 | b;

сейчас посмотрю, будет работать или нет

Jeka

05-09-2011, 16:14:08 #50 Последнее редактирование: 05-09-2011, 16:17:13 от Jeka
Цитата: Catcatcat от 05-09-2011, 16:09:40
Цитироватьтеперь делаем дизъюнкцию b и A (где а становится старшим байтом слова A, а младшая часть - нули). то бишь b|A.
Младшая  часть b при этом не меняется , а старшая часть превращается в a.


вот это я чето не понял, ты там еще руганулся как то... ;D

Я для себя так думаю, что то такое надо сделать

b=а<<8 | b;


сейчас посмотрю, будет работать или нет

я не ругнулся))) | - эт я дизъюнкцией назвал) ты может имел в виду
b=b<<8|a ???

если даже так то не получится)) сдвиг b на 8 бит влево приведет к тому что та часть, кторая должна заменится на а, у тебя по сути заменяется старшим байтом b, а младший становится нулями. затем в результате a|b у тебя поулчется черти что

Catcatcat

работает.

я имел в виду, сдвинуть а на 8 бит в лево, чтобы данные перешли во второй байт и сложить с b. получилось, только а надо в int преобразовать, чтобы двигать было куда. Хотя для С++ это необязательно если b  int все выражение будет вычисляться в "размерах" b

Jeka

Цитата: Catcatcat от 05-09-2011, 16:39:40
работает.

я имел в виду, сдвинуть а на 8 бит в лево, чтобы данные перешли во второй байт и сложить с b. получилось, только а надо в int преобразовать, чтобы двигать было куда. Хотя для С++ это необязательно если b  int все выражение будет вычисляться в "размерах" b

ну конечно это проще чем мое решение, но твое решение работает только когда старшая часть слова b состоит исключительно из нулей, а в условии ты об этом не сказал, и мое решение работает для любой старшей части b

Sasha

$a = 1.1 - 1;
$b = 0.1;
if ($a == $b)
{
  print "$a равно $b";
}
else
{
  print "$a не равно $b";
}

Рузультат
0.1 не равно 0.1
Вот так вот)
skype: ab.sasha

Proydoha

Цитата: Sasha от 16-10-2011, 12:29:29
0.1 не равно 0.1
Вот так вот)


В чём подвох? : )

Я, если б такое увидел, сразу панически округлил бы оба числа до первого знака после запятой и посмотрел на результат.

Sasha

Цитата: Proydoha от 16-10-2011, 13:52:01
Цитата: Sasha от 16-10-2011, 12:29:29
0.1 не равно 0.1
Вот так вот)


В чём подвох? : )

Я, если б такое увидел, сразу панически округлил бы оба числа до первого знака после запятой и посмотрел на результат.

И думаю это бы помогло) У меня не стоит ни аппач не IIS да и с PHP у меня не очень, так что если хочешь проверь что к чему)
skype: ab.sasha

Jeka

Цитата: Proydoha от 16-10-2011, 13:52:01
Цитата: Sasha от 16-10-2011, 12:29:29
0.1 не равно 0.1
Вот так вот)


В чём подвох? : )

Я, если б такое увидел, сразу панически округлил бы оба числа до первого знака после запятой и посмотрел на результат.

приколы округления))) я такой фокус видел... там типа когда пишешь 0.1 то на самом деле это какой то 0.10000000..01

Sasha

Цитата: Jeka от 20-10-2011, 19:35:05
Цитата: Proydoha от 16-10-2011, 13:52:01
Цитата: Sasha от 16-10-2011, 12:29:29
0.1 не равно 0.1
Вот так вот)


В чём подвох? : )

Я, если б такое увидел, сразу панически округлил бы оба числа до первого знака после запятой и посмотрел на результат.

приколы округления))) я такой фокус видел... там типа когда пишешь 0.1 то на самом деле это какой то 0.10000000..01

Саме так
skype: ab.sasha

Catcatcat

встретилось такое выражение


crc  = (unsigned char)(crc >> 8 ) | (crc << 8 );

где, unsigned int  crc;

что делает (crc >> 8 ) | (crc << 8 ); это понятно,

а для чего перед этим влепили (unsigned char), что это означает?

я пробывал и без ЭТОГО работает одинаково. !?

Sasha

явное приведение результата к типу unsigned char
Смысла особого наверно в данном случае в этом нет.
skype: ab.sasha