Имя: Пароль:
IT
 
не получается в С++ builder, помогите
, ,
0 men47
 
18.11.12
17:38
народ помогите, пожалуйста, не получается использовать mod в С+

вот код

#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <windows.h>
int main()
{ SetConsoleOutputCP(1251);
SetConsoleCP(1251);
{
int N;
printf("N=");
scanf("\n %f",&N);
if ((N % 2)==0)
printf("\nTrue\n");
else
printf("\nFalse");
getch();
return 0;
}
    }

если оставить так как есть, то он при любом значении напишет Тру,

а если поставить if ((N % 2)==1), то он все время пишет фолс

что у меня не правильно, помогите
1 Steel_Wheel
 
18.11.12
17:41
глянь в отладчике, что ты считал scanf-ом в N
2 Asmody
 
18.11.12
17:41
а если просто if (N % 2)
3 Steel_Wheel
 
18.11.12
17:43
(2) тогда всегда будет "тру", т.к. "фалс" -- это только 0
4 men47
 
18.11.12
17:50
хммм я походу что-то не так делаю... но я вписываю число 1 в отладчике а берется значение N=1065353216, мне кажется, что это из-за int, что тогда лучше взять за место int

p.s. float не подходит
5 mehfk
 
18.11.12
17:53
scanf("\n %u",&N);
6 Sakura
 
18.11.12
17:54
(4) попробуй N присвоить начальное значение 0
7 men47
 
18.11.12
17:55
если  присвоить 0, то и берется 0=))
8 Steel_Wheel
 
18.11.12
17:55
(6) точно. Очень дохрена ошибок из-за мусора в памяти
9 Asmody
 
18.11.12
17:55
а почему в scanf %f?
10 Steel_Wheel
 
18.11.12
17:56
(7) Ты написал алгоритм с ошибкой, значит.
Твое 1065353216 -- это просто мусор из памяти
А после сканфа значение должно было поменяться. Если не поменялось, то ты что-то со сканфом перемудрил
11 mehfk
 
18.11.12
17:57
Ответ в (5)
12 men47
 
18.11.12
17:57
(9) ну, я пытаюсь понять С++, я умею работать в delpi и 1С, а в С вот учусь, как я понял так и записал=), помогите, как правильно тогда будет=)
13 bolder
 
18.11.12
17:57
Нужно scanf("\n %d") для целого )).
14 mehfk
 
18.11.12
17:58
(12) Ответ в (5)
15 men47
 
18.11.12
17:58
(11) сейчас попробую=)
16 mehfk
 
18.11.12
17:59
в гугль "Format Specifiers" или в яндекс
17 men47
 
18.11.12
18:00
mehfk, да, спасибо, помогло=)) а чем отличается %f от %u
18 men47
 
18.11.12
18:00
(16) хорошо почитаю сейчас
19 Sakura
 
18.11.12
18:03
а что, scanf еще живо?
я сколько с С работала, весь ввод-вывод делала через cin/cout, что в билдере, что в визуал студии, что в других средах...
20 Steel_Wheel
 
18.11.12
18:07
(19) син -- это не очень форматированный ввод. А сканфом ты моешь сразу все сразу принять
21 Sakura
 
18.11.12
18:10
(20) вообще, когда в билдере работала, то в основном с GUI сразу, там по-всякому можно было выводить :) да и например отдельный тип данных под строку - это гут, удобнее, чем вручную массив делать.
cin'ом, насколько помню, тоже можно все сразу принять, если вводимые данные одного типа
22 Steel_Wheel
 
18.11.12
18:13
(21) гуи и консоль -- разные вещи. В гуи у тебя сразу данные в переменные вбиты

насчет последнего утверждения -- не помню. Давно не сишник уже
23 Sakura
 
18.11.12
18:14
(22) ну в общем-то да, и с гуи работать в разы удобнее, чем с консолью)
24 mehfk
 
18.11.12
18:56
cin и cout это не c, это с++. Код в (0) это "pure c" + WinAPI
25 Steel_Wheel
 
18.11.12
21:19
(23) *paranoic mode on
GUI еше предварительно написать надо
*paranoic mode off
26 Sakura
 
18.11.12
21:21
(25) Borland C++  Builder предоставляет чуть более чем дофига возможностей для создания пользовательского интерфейса приложения. Формы, поля ввода, кнопки, модальные окна - пользуйся не хочу, как говорится.
27 Steel_Wheel
 
18.11.12
21:30
(26)Я уж было про студию подумал ))
28 Sakura
 
18.11.12
21:37
(27) в институте пару раз садилась за студию - ну ее) я к борланду привыкла) сейчас осваиваю Qt в связке с Codeblocks :)
29 tararam
 
18.11.12
21:53
(28) Одобрямс. C::B рулит. Тем более, 12-й релиз на подходе... Но для Qt больше сам QtCreator подходит. Если разрабатывать gui, то рекомендую посмотреть в сторону wxWidgets.
30 Torquader
 
18.11.12
22:49
У билдера многопоточность страдает - по крайней мере, всё, что было написано в нескольких потоках для билдера падало с непонятными ошибками памяти.
Поэтому, приходится писать на обычном Си.
А в (0) просто выделили память под int, потом ввели туда float (слава богу в 32-битах размер одинаковый), а потом продолжили работать, как с int.
Ничего удивительного, что не взлетело - можно посмотреть формат float и понять, какие числа получались.