Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Минус творит что-то непонятное 
:(
    Опции темы
Athlete
Дата 8.3.2006, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 23.2.2006

Репутация: нет
Всего: нет



У меня вводится число k, при нажатии какого-либо знака (кнопки) происходит выполнение действия с числом q. За действие отвечает znak. Как только вводишь q отрицательным, то k становится равным -q. Ничего не пойму. Ему должно же быть всеравно. smile

Код

q=atof(&(Edit1->Text[1]));
switch (znak)
{
case 1:Edit1->Text=k+q;break; // сложение
case 2:Edit1->Text=k-q;break; // вычитание
case 3:Edit1->Text=k/q;break;  // деление
case 4:Edit1->Text=q*k;break;   // умножение
case 5:Edit1->Text=pow(k,q);break;  // возведение в степень
}

PM MAIL   Вверх
sergejzr
Дата 8.3.2006, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



А k то, чему равно?


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Athlete
Дата 9.3.2006, 02:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 23.2.2006

Репутация: нет
Всего: нет



k - положительное, разве это имеет значение?
Добавлено @ 02:28
k - положительное, разве это имеет значение?
PM MAIL   Вверх
sergejzr
Дата 9.3.2006, 02:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



мало кода привёл всмысле. Ошибка в другом месте.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Athlete
Дата 9.3.2006, 06:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 23.2.2006

Репутация: нет
Всего: нет



Ну это главная часть.Расскажу по действиям:
1. В k вбивается первое число (глобальная переменная)
2. При нажатии кнопки действия, обнуляется Edit1.
3. Ввожу q (второе число).
4. Нажимаю знак равно (где расположен switch). Он, вбивает второе число (тоже с edit1) в q, распознает знак, выполняет действие
PM MAIL   Вверх
Lotrex
Дата 9.3.2006, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 9.2.2006
Где: Казань

Репутация: 2
Всего: 3



Вот это:
Код

q=atof(&(Edit1->Text[1]));

не совсем правильно (или совсем не правильно smile ).
Вот так лучше будет:
Код

q=atof(Edit1->Text[1]->c_str());

P.S.Athlete, судя по тому, что Вы говорите, у Вас где-то в другом месте программы все-таки есть глюк какой-то... Возможно, выход за границы динамического массива. А проблемы с atof и Edit лишь следствие. Вы выкладывайте сюда код своего калькулятора, не стесняйтесь! smile

Это сообщение отредактировал(а) Lotrex - 9.3.2006, 08:41
PM MAIL ICQ   Вверх
Athlete
Дата 9.3.2006, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 23.2.2006

Репутация: нет
Всего: нет



У калькулятора 4 вкладки, поэтому все выкладывать не вижу смысла. Может быть лучше тогда по мылу кинуть проект? проще будет.
PM MAIL   Вверх
Romikgy
Дата 9.3.2006, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Имхо лучше юзать StrToInt & StrToFloat


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Adil'
Дата 9.3.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 26.8.2004
Где: Питер

Репутация: 6
Всего: 15



q=atof(&(Edit1->Text[1]));
совсем неправильно, впрочем, как и
q=atof(Edit1->Text[1]->c_str()); - это даже не скомпилится
Если уж хочется atof импользовать, то
q=atof(Edit1->Text.c_str());


--------------------
Удачи
PM MAIL WWW   Вверх
Lotrex
Дата 9.3.2006, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 9.2.2006
Где: Казань

Репутация: 2
Всего: 3



Цитата

q=atof(&(Edit1->Text[1]));
совсем неправильно, впрочем, как и
q=atof(Edit1->Text[1]->c_str()); - это даже не скомпилится
Если уж хочется atof импользовать, то
q=atof(Edit1->Text.c_str());


Да, верно, тут я поторопился и лажанулся.. smile

Цитата

Имхо лучше юзать StrToInt & StrToFloat


А чем лучше? Тем что исключения выбрасывают? Я их поэтому и не использую smile

Цитата

У калькулятора 4 вкладки, поэтому все выкладывать не вижу смысла. Может быть лучше тогда по мылу кинуть проект? проще будет.

А сколько места проект занимает?
Можно только *.cpp файлы послать. (Да их и тут можно выложить, я думаю.)

Это сообщение отредактировал(а) Lotrex - 9.3.2006, 15:03
PM MAIL ICQ   Вверх
sergejzr
Дата 9.3.2006, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Досьтаточно будет кода всей функции в которой эти 9 строк находятся. что ты в первом ссобщении привёл.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Romikgy
Дата 9.3.2006, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Цитата(Lotrex @ 9.3.2006, 14:02 Найти цитируемый пост)
А чем лучше? Тем что исключения выбрасывают? Я их поэтому и не использую

Тем что эта фича именно борланда, а исключения и обработать можно , ведь не просто так их придумали smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Lotrex
Дата 10.3.2006, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 9.2.2006
Где: Казань

Репутация: 2
Всего: 3



Цитата(sergej.z @ 9.3.2006, 15:04 Найти цитируемый пост)
Досьтаточно будет кода всей функции в которой эти 9 строк находятся. что ты в первом ссобщении привёл.


Я думаю, что нет, потому что ежели разрушена куча, то последствия этого могут вылезти совсем не там, где произошло это разрушение. В сях на деле не работает принцип "разделяй и властвуй" smile ИМХО, там на деле работает принцип "разделяй, тестируй, отлаживай, а потом властвуй" smile
PM MAIL ICQ   Вверх
Lotrex
Дата 10.3.2006, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 9.2.2006
Где: Казань

Репутация: 2
Всего: 3



Athlete, вот тут у Вас в том коде, что Вы прислали:
Код

double coss,k,q,M;
int znak,d,e,p;

Эти переменные объявлены глобальными.

Имхо, глобальные они тут нафиг не нужны. Я бы объявил вот так:
Код

static double coss,k,q,M;
static int znak,d,e,p;

Тогда область видимости этих переменных будет - файл, в котором они объявлены, а не вся программа. На худой конец, их в приватную часть объявления класса можно засунуть.
И потом, таким переменным надо бы имена давать более заметные - хотя бы подлиннее и с "верблюжими горбами" : ТакИхБудетЛучшеВидно smile

К примеру, k переименовать в FirstValue, а q переименовать в SecondValue.
Но это так, на будущее совет. И ставьте отступы, а то Ваш код читать - можно сломать и мозги и глаза. smile
PM MAIL ICQ   Вверх
Lotrex
Дата 13.3.2006, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 9.2.2006
Где: Казань

Репутация: 2
Всего: 3



К сожалению, не смог откомпилить Ваш проект - у меня C++ Builder 5.0 стоит, 6-ым пока не пользуюсь smile .
Единственное, что могу присоветовать - поставьте во все обработчики событий бряки. Возможно, что при нажатии кнопки-арифм. действия (+, -, *, /) или кнопки-равенства, или при вводе числа помимо нужных обработчиков этих событий вызываются еще какие-то "левые", или нужные обработчики вызываются не один раз.

Это сообщение отредактировал(а) Lotrex - 13.3.2006, 10:05
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1101 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.