|
не получается в С++ 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 и понять, какие числа получались. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |