Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: blaro
Дата сообщения: 09.09.2014 22:20
Grikontarkingov

Цитата:
Вопрос у меня такой, в строчке где "if (b%a!=0) printf("no solution\n");" я категорически не понимаю что значит процент перед "а"...помогите плиз))

Это деление по модулю. Если Б разделить на А и остаток не будет равен нулю то напечатает no solution.
Например: 6/2=3 остаток в этом случае равен нулю. А если 7/2=3 остаток=1.
Автор: akaGM
Дата сообщения: 09.09.2014 22:20

Цитата:
я категорически не понимаю

учебники/справочники отменили?
Автор: Grikontarkingov
Дата сообщения: 09.09.2014 22:24
Есть предположение, что это условие типа b делить на a, что в итоге не должно быть равно нулю. Но при этом оно не будет иметь решения( судя по решению). Получается x может быть только нулем? Странная задачка...не въезжаю я в нее пока...
Автор: blaro
Дата сообщения: 09.09.2014 22:26
akaGM

Цитата:
учебники/справочники отменили?

Не скажите. Не всегда из учебнико/справочников можно что-то понять. Для этого есть форумы.
Автор: Grikontarkingov
Дата сообщения: 09.09.2014 22:27
Ого, деление по модулю)) Сцука, в учебнике не написали про это))) Поэтому и спросил)) Но тогда вопрос, почему в этом случае не будет решений...можт кто понимает?

Добавлено:
Все, я понял)) Спасибо)) нужно грубо говоря чтобы не было остатка.
Автор: akaGM
Дата сообщения: 09.09.2014 22:34

Цитата:
Сцука, в учебнике не написали про это)))

ну пожалуйста, хоть три очка! я же учил...
Автор: blaro
Дата сообщения: 09.09.2014 22:38
Grikontarkingov

Цитата:
в учебнике не написали про это

Выброси это учебник.
Автор: maxz
Дата сообщения: 15.09.2014 13:38
господа сишники, что вот это значит ?
/* Bit definitions and macros for MCF_GPIO_PTCPAR */
#define MCF_GPIO_PTCPAR_PTCPAR0(x) (((x)&0x3)<<0)
#define MCF_GPIO_PTCPAR_DTIN0_GPIO (0)
#define MCF_GPIO_PTCPAR_DTIN0_DTIN0 (0x1)
#define MCF_GPIO_PTCPAR_DTIN0_DTOUT0 (0x2)
#define MCF_GPIO_PTCPAR_DTIN0_PWM0 (0x3)
#define MCF_GPIO_PTCPAR_PTCPAR1(x) (((x)&0x3)<<0x2)
#define MCF_GPIO_PTCPAR_DTIN1_GPIO (0)
#define MCF_GPIO_PTCPAR_DTIN1_DTIN1 (0x4)
#define MCF_GPIO_PTCPAR_DTIN1_DTOUT1 (0x8)
#define MCF_GPIO_PTCPAR_DTIN1_PWM2 (0xC)
#define MCF_GPIO_PTCPAR_PTCPAR2(x) (((x)&0x3)<<0x4)
#define MCF_GPIO_PTCPAR_DTIN2_GPIO (0)
#define MCF_GPIO_PTCPAR_DTIN2_DTIN2 (0x10)
#define MCF_GPIO_PTCPAR_DTIN2_DTOUT2 (0x20)
#define MCF_GPIO_PTCPAR_DTIN2_PWM4 (0x30)
#define MCF_GPIO_PTCPAR_PTCPAR3(x) (((x)&0x3)<<0x6)
#define MCF_GPIO_PTCPAR_DTIN3_GPIO (0)
#define MCF_GPIO_PTCPAR_DTIN3_DTIN3 (0x40)
#define MCF_GPIO_PTCPAR_DTIN3_DTOUT3 (0x80)
#define MCF_GPIO_PTCPAR_DTIN3_PWM6 (0xC0)
интуитивно понятно, что должно значить, но такая вот #define MCF_GPIO_PTCPAR_PTCPAR3(x) (((x)&0x3)<<0x6) нотация не понятна.
Автор: akaGM
Дата сообщения: 15.09.2014 14:04
maxz

Цитата:
#define MCF_GPIO_PTCPAR_DTIN2_GPIO (0)
#define MCF_GPIO_PTCPAR_DTIN2_DTIN2 (0x10)
#define MCF_GPIO_PTCPAR_DTIN2_DTOUT2 (0x20)

это просто определение именованных констант

а это:
Цитата:
#define MCF_GPIO_PTCPAR_PTCPAR3(x) (((x)&0x3)<<0x6)

определяется макрос с именем MCF_GPIO_PTCPAR_PTCPAR3 и формальным аргументом х
дальше по коду можно писать псевдо-вызов этого макроса, например:

i = MCF_GPIO_PTCPAR_PTCPAR3(10);

а компилятор подставит вычисленное значение i = (((10)&0x3)<<0x6) =
=
((10 and 3) сдвиг_результата_влево_на_6_бит)

а много скобок, чтобы нигде не нарушался порядок действий, как бы ты "не звал" этот макрос...
Автор: maxz
Дата сообщения: 15.09.2014 14:33
ok, thanks
Автор: sairus45
Дата сообщения: 18.09.2014 10:53
Все ответы на эти вопросы вы можете найти на этом ресурсе- http://www.***.ru/catalog
Автор: wsadneg
Дата сообщения: 20.09.2014 23:48
Вопрос новичка. Я пишу программу на Си в среде LabWindows/CVI. Суть вот в чём: программа представляет из себя кучу обработчиков от контролов. Происходит событие, запускается обработчик. Пока обработчик должен выполнить одно действие, всё просто. Но вот допустим мне надо выполнить несколько действий, но не подряд, а после каждого действия надо ждать ответ. Например я посылаю команду в компорт, жду ответ, потом посылаю следующую, снова жду и так далее. Вопрос в том, что делать пока не пришёл ответ, ведь ответ приходит с задержкой и в другой обработчик? В принципе я нашёл некоторые способы, например поставить цикл while(! answer){}; но мне кажется это будет неправильно, возможно приведёт к сильной загрузке процессора впустую. Как правильно послать сигнал из одного обработчика в другой? Примерно ткните в нужном направлении, буду разбираться, а то даже не знаю что гуглить.
Автор: ne_viens
Дата сообщения: 21.09.2014 09:54
while(!answer) {CrackPasswords();} или просто Sleep(1);



Автор: maxz
Дата сообщения: 24.09.2014 11:10
вот встретил конструкцию :
MCF_GPIO_PORTTC &= ~Mask;
что оно делает ?
спасибо.
Автор: ne_viens
Дата сообщения: 24.09.2014 11:28
Логический AND переменной MCF_GPIO_PORTTC с инвертированными битами переменной или константы Mask.
Автор: maxz
Дата сообщения: 24.09.2014 11:56
и в чём смысл такой конструкции ?
в контексте
void boardLedDisplay(int Lednumber, int Value)
{
uint8 Mask;
if(Lednumber>3)
    return;
Mask = Value<<Lednumber;
/* Set output values */
MCF_GPIO_PORTTC &= ~Mask;
MCF_GPIO_PORTTC |= Mask;
}
в последней строке устанавливается бит, а вот что в предпоследней ?
Автор: slay93
Дата сообщения: 24.09.2014 12:16

Цитата:
что в предпоследней ?

в предпоследней биты Mask сбрасываются в 0 в MCF_GPIO_PORTTC

напр. если Mask = 000010,
то ~Mask = 111101
и MCF_GPIO_PORTTC в предпоследней строчке получит 0 в бите, соответствующем "1" в Mask,
остальные биты MCF_GPIO_PORTTC останутся без изменения.
Автор: Grikontarkingov
Дата сообщения: 28.09.2014 17:08
Здравствуйте. Пытаюсь освоить возведение в степень, но почему то всегда функция выводит 0.
Подскажите плиз...
#include <stdio.h>
#include <math.h>
int main (void)
{
    double a,b,c;
    printf("Vvedite a b\n");
    scanf(" %f %f",&a,&b);
    c=pow(a,b)+4;
    printf("c=%f",c);
    return(0);
}
Есть плюс без ручного ввода все норм, с ручным вводом, всегда pow выдает значение 0. То есть получается 4. Сумма работает. Без суммы c=pow(a,b), все значения выводит в 0((((
З.Ы. Пишу на С.
Автор: ne_viens
Дата сообщения: 28.09.2014 17:19
scanf(" %lf %lf", &a, &b);
Автор: Grikontarkingov
Дата сообщения: 28.09.2014 17:31
%lf - это что за зверь такой? и почему так надо? не путаете с С++, я на Си.
Автор: akaGM
Дата сообщения: 28.09.2014 17:35
Grikontarkingov

scanf("%lf %lf",&a,&b);
Автор: ne_viens
Дата сообщения: 28.09.2014 17:36
>Grikontarkingov
Double.
printf'u пофиг, но scanf более придирчивый.
Автор: akaGM
Дата сообщения: 28.09.2014 17:37

упс, опередили...

%f -- обычное 4-х байтовое число, а double = 8 байт, поэтому и "l" -- long
Автор: Grikontarkingov
Дата сообщения: 28.09.2014 17:38
Я так понял, это актуально когда много букаф после запятой, а если я возвожу 3 в степень 2 например, то длинный то и не нужен, достаточно про сто %f...или я не прав?
Автор: ne_viens
Дата сообщения: 28.09.2014 17:40
Тогда float a,b,c; пиши.
Автор: Grikontarkingov
Дата сообщения: 28.09.2014 17:42
То есь, если пишу float, то нужно %f. А если double, то нужно %lf. Я все правильно понял?
З.Ы. еще есть вопрос по корням

Добавлено:
Если писать с float изначально, все работает. Если писать с double изначально, ни %f, ни %lf не помогает.
Автор: akaGM
Дата сообщения: 28.09.2014 18:02
Grikontarkingov

Цитата:
Если писать с double изначально, ни %f, ни %lf не помогает
в чём не помогает?
Автор: Grikontarkingov
Дата сообщения: 28.09.2014 18:04
Ну выше написана суть проблемы.
Автор: akaGM
Дата сообщения: 28.09.2014 18:06

Цитата:
То есь, если пишу float, то нужно %f. А если double, то нужно %lf. Я все правильно понял?
З.Ы. еще есть вопрос по корням
трудно проверить?


Код: float f;
double d;
scanf("%f", &f);
scanf("%lf", &d);
printf("%g\n", f);
printf("%g\n", d);
Автор: Grikontarkingov
Дата сообщения: 28.09.2014 18:32
Через double %lf не сработало. Только через float получилось. Какую функцию в себе несёт %g?

Добавлено:
Только ли он их объединяет, или ещё какие то функции в себе несёт?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.