Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / определение пустых числовых переменных / 21 сообщений из 21, страница 1 из 1
01.03.2013, 19:27
    #38171469
Qlewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
не думал, что возникнут с этим проблемы. как проверить, пустая числовая переменная или нет?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
#include <conio.h>
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#pragma argsused
int main(int argc, char* argv[])
{float count=0;
float a,x;
do
{cout <<"Vvedite 4islo: ";
cin>> x;
//if (strlen(a)==0) a=x;
if (a==NULL) a=x;// непонятная фигня
if (x<a) a=x;
count++;
}
while(count<10);
cout <<a;
getch();
        return 0;
}

ввожу числа от 1 до 10. должно выводить наименьшее, т.е. 1, а выводит первоначальное значение переменной a, заданное системой
...
Рейтинг: 0 / 0
01.03.2013, 19:28
    #38171470
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
что такое пустая числовая переменная ? Чем она от непустой отличается?
...
Рейтинг: 0 / 0
01.03.2013, 19:35
    #38171479
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
Qlewer эта проверка компилируется но работает неправильно.
NULL имеет тип указателя и сравнивать его с float - некорректно.

Вообще С++ не поддерживает понятие NULL-овых атомарных типов.
Если ты объявил переменную то в ней всегда есть какое-то значение.
Оно может быть wild (дикое!), но оно есть.
...
Рейтинг: 0 / 0
01.03.2013, 19:45
    #38171492
Qlewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
Паганельчто такое пустая числовая переменная ? Чем она от непустой отличается? "пустая" - переменная, которой я не успел присвоить какое-либо значение maytonЕсли ты объявил переменную то в ней всегда есть какое-то значение.да, очевидное решение: сначала присвоить переменной первое значение, а потом в цикле прогнать значения со 2 по 10. но вдруг заинтересовало. я знаю, как проверить пустую строку, объекты, а вот числа - хз
...
Рейтинг: 0 / 0
01.03.2013, 19:46
    #38171495
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
Qlewer"пустая" - переменная, которой я не успел присвоить какое-либо значениеПаганельЧем она от непустой отличается?
...
Рейтинг: 0 / 0
01.03.2013, 19:49
    #38171498
Qlewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
Паганель,

Qlewer"пустая" - переменная, которой я НЕ успел присвоить какое-либо значениесоответственно, "непустая" - переменная, которой я присвоил какое-то значение. к чему эти вопросы?
...
Рейтинг: 0 / 0
01.03.2013, 19:53
    #38171504
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
QlewerПаганель,

Qlewer"пустая" - переменная, которой я НЕ успел присвоить какое-либо значениесоответственно, "непустая" - переменная, которой я присвоил какое-то значение. к чему эти вопросы?к тому, что число 1, которое Вы присвоили, ничем не хуже числа 223322, которое там случайно могло оказаться как мусор
...
Рейтинг: 0 / 0
01.03.2013, 20:00
    #38171510
Qlewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
Паганель,

число 223322 туда как-то должно было попасть. соответственно, я его вводил. а значит, переменная уже "непустая"("недикая"). вообще, всё это офтоп
...
Рейтинг: 0 / 0
01.03.2013, 20:03
    #38171514
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
Qlewerчисло 223322 туда как-то должно было попастьну как
память выделена, но не проинициализирована
значит мусор
...
Рейтинг: 0 / 0
01.03.2013, 20:08
    #38171520
Qlewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
Паганельпамять выделена, но не проинициализирована я думал, память выделяется "пустой", "чистой", и есть стандартный способ "проверить на пустоту" переменную. хм. так что нужно делать?
...
Рейтинг: 0 / 0
01.03.2013, 20:11
    #38171523
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
QlewerПаганельпамять выделена, но не проинициализирована я думал, память выделяется "пустой", "чистой"нет
выделено допустим 4 байта
чего там в тех байтах - хз
какие-то случайные нолики и единички
пока не проинициализируете

где-то читал, что под дебагом там будет ноль, но я на это никогда не надеюсь
...
Рейтинг: 0 / 0
01.03.2013, 20:14
    #38171529
Qlewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
Паганель,

это равносильно тому, что присвоить 0 этой переменной. тогда при вводе отрицательных чисел в задаче в первом сообщении она будет решаться неверно
...
Рейтинг: 0 / 0
01.03.2013, 20:15
    #38171534
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
Qlewerэто равносильно тому, что присвоить 0 этой переменной. тогда при вводе отрицательных чисел в задаче в первом сообщении она будет решаться неверночто такое NULL ?
...
Рейтинг: 0 / 0
01.03.2013, 20:23
    #38171545
Qlewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
Паганель,

вообще не в курсе. вбил в гугл "C++ проверить что х не пустое", нашёл какой-то код, вставил в прогу
...
Рейтинг: 0 / 0
01.03.2013, 20:25
    #38171548
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
Qlewerвообще не в курсену у Вас же среда разработки в руках
жмакните правой педалью на слове NULL и выберите Go To Definition
...
Рейтинг: 0 / 0
01.03.2013, 20:58
    #38171590
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
Будь прокляты ноутбучные клавиатуры!
Qlewer"непустая" - переменная, которой я присвоил какое-то значение.

Вот тебе и ответ: присвоил ты переменной значение - она непустая. Не присвоил - пустая. Ты
же, когда программу пишешь, представляешь себе в каком порядке она будет исполняться. А
значит знаешь и когда переменная получит значение.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
01.03.2013, 21:03
    #38171593
Qlewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
Dimitry Sibiryakov,

Qlewerда, очевидное решение: сначала присвоить переменной первое значение, а потом в цикле прогнать значения со 2 по 10. но вдруг заинтересовало. я знаю, как проверить пустую строку, объекты, а вот числа - хз я раньше так и делал
...
Рейтинг: 0 / 0
01.03.2013, 21:09
    #38171600
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
Qlewerя раньше так и делал
И это - единственно возможный путь. Так уж работают современные компьютеры, видишь ли...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
01.03.2013, 21:33
    #38171624
Qlewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
Dimitry Sibiryakov,

понятно. всем большое спасибо ;)
...
Рейтинг: 0 / 0
01.03.2013, 21:45
    #38171632
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
Dimitry SibiryakovQlewerя раньше так и делал
И это - единственно возможный путь. Так уж работают современные компьютеры, видишь ли...
Ну почему же? Это не только не единственный, но и неправильный путь. Если проверять на "сохранилось ли в переменной начальное значение", то ты не сможешь отличить "да, сохранилось" от "нет, ползователь ввел новое значение совпадающее с начальным".

Правильный путь это проверять результат операции "присвоения". У первом топике Qlewer использует cin>> для ввода числа, отсюда и пляшем: открываем документацию на cin, узнаем что cin это потомок istream, октрываем оператор >> и читаем что он возвращает:
http://www.cplusplus.com/reference/istream/istream/operator%3E%3E/ Return Value
The object itself (*this).
When a value is being "extracted" it is not returned, but directly stored in the variable used as parameter.

Errors are signaled by modifying the internal state flags:

flag erroreofbit The end of the source of characters is reached during its operations.failbit The input obtained could not be interpreted as an element of the appropriate type. Notice that some eofbit cases will also set failbit.badbit An error other than the above happened.(see ios_base::iostate for more info on these)

Additionally, in any of these cases, if the appropriate flag has been set with member function ios::exceptions, an exception of type ios_base::failure is thrown.

И тогда ты будешь точно знать ввел пользователь фигню или что-то полезное в ответ на "Vvedite 4islo: ".
...
Рейтинг: 0 / 0
01.03.2013, 22:31
    #38171662
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение пустых числовых переменных
Qlewerя думал, память выделяется "пустой", "чистой", и есть стандартный способ "проверить на пустоту"
в x86 архитектуре такого нет, бывает только в архитектурах с тэгированой памятью (Эльбрус классический, например)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / определение пустых числовых переменных / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]