Обсуждение Программирование на C/C++

Эта тема предназначена для обсуждения и решение любых проблем, связанных с программированием на языке C/C++, обмена секретами, опытом и помощи в программирование другим пользователям.

Также рекомендуется ознакомиться со справочной литературой:
Страуструп Б. - Язык программирования С++. Special Edition.djvu 10.02 Мб
Шилдт Г. - Самоучитель С++.pdf 2.48 Мб
[C] Архангельский - программирование в C builder 6.djvu 17.30 Мб

Ссылки на компиляторы:
JIёxa написал(а):
Вот вам сборки от Microsoft Visual Studio: Скачать
Это для тех у кого нет этого замечательного компилятора под C++.
Бретон написал(а):
<<MadNesS>> написал(а):

И не забывайте оформлять свой код тегом
Код:
[/B][/COLOR]
 

    Монгольфьер

    очки: 5
    Нет комментариев

    Ragon

    очки: 11
    Нет комментариев

    AZAMAT

    очки: 8
    Нет комментариев

MaR*DeR

Ословед
Re: Программирование на C/C++
Вот есчо у меня один глупый вопрос возник, как можно десятичные числа переконвертировать?
Допустим дано число с разделителем в виде запятой, а надо в виде точки или наоборот
 
Re: Программирование на C/C++
MaR*DeR написал(а):
Вот есчо у меня один глупый вопрос возник, как можно десятичные числа переконвертировать?
Допустим дано число с разделителем в виде запятой, а надо в виде точки или наоборот
число в стринг переведи и мучай.
 
Re: Программирование на C/C++
MaR*DeR написал(а):
Так не прокатит, надо проводить вычисления.
как это не прокатит 0_o там 2 слева знак меняешь который не влияет на все остальное. какие еще вычисления ?
 

MaR*DeR

Ословед
Re: Программирование на C/C++
Ты имеешь в виду переводить в стринг потом искать знак, удалять , вставлять новый и потом опять в число ? Как-то криво тогда будет, да и кода наверное много.
Вообщем у меня значения хранятся в базе данных, нужно их загрузить произвести расчёты и записать опять же в базу. Но косяк в том, что в базе они храняться с запятой, а не точкой.:huh:
 

Dr_B

Ословед
Re: Программирование на C/C++
ansis написал(а):
Эта тема предназначена для обсуждения и решение любых проблем, связанных с программированием на языке C/C++, обмена секретами, опытом и помощи в программирование другим пользователям.
По этому вопросу обращайтесь к "гуру" С++ ув. тов. Borschtsch'у. :) . Весь ослик построен на Visual C++ (а он еще и потруднее будет, чем простой С или С++).
 

Shell

Ословед
Re: Программирование на C/C++
MaR*DeR написал(а):
Ты имеешь в виду переводить в стринг потом искать знак, удалять , вставлять новый и потом опять в число ?
Они как хранятся? Обычно в БД есть всякие методы для извлечения и записи полей в виде вещественных чисел, в C++ Builder называется AsFloat
 
Re: Программирование на C/C++
MaR*DeR написал(а):
Ты имеешь в виду переводить в стринг потом искать знак, удалять , вставлять новый и потом опять в число ? Как-то криво тогда будет, да и кода наверное много.
Вообщем у меня значения хранятся в базе данных, нужно их загрузить произвести расчёты и записать опять же в базу. Но косяк в том, что в базе они храняться с запятой, а не точкой.:huh:
да, именно )Если не устраивает думаю лучше погуглить , больше вариантов я не знаю)
 

MaR*DeR

Ословед
Re: Программирование на C/C++
Shell написал(а):
Они как хранятся? Обычно в БД есть всякие методы для извлечения и записи полей в виде вещественных чисел, в C++ Builder называется AsFloat
Хранятся в базе SQL Server'a, соединяю через ADO, объясни про методы.
Переменные в Си (в которые копируются значения и с которыми производятся расчёты) у меня типа float и в БД поля тоже float разница тока в разделителях.
 

Shell

Ословед
Re: Программирование на C/C++
MaR*DeR написал(а):
Хранятся в базе SQL Server'a, соединяю через ADO, объясни про методы.
Переменные в Си (в которые копируются значения и с которыми производятся расчёты) у меня типа float и в БД поля тоже float разница тока в разделителях.
Builder или Visual?
В Builder
Код:
Table1->FindField("Price")->AsFloat=Table1->FindField("Price")->AsFloat*1.5;

Запятые только на экране, в БД они храанятся в вещественном виде. Если хочешь, чтобы на экране были точки
Пуск - Панель управления - язык и региональные стандарты - настройка - меняешь разделитель целой дробной части
перезапускаешь программу и на экране точки
 

MaR*DeR

Ословед
Re: Программирование на C/C++
Shell написал(а):
Builder или Visual?
В Builder
Код:
Table1->FindField("Price")->AsFloat=Table1->FindField("Price")->AsFloat*1.5;
В Билдере.
Сейчас попеределывал немного, но всё равно не робит,
пишу AsFloat всё нормально переделывается в "." , провожу расчёты получаю значение(опять же с точкой),
но потом мне надо записать результат в базу и вот тут трабл идёт (в БД нужна запятая видимо). Ошибка идёт на sql запросе (Insert ...) :
Insert Error: Column name or number of supplied values does not mach table definition
 

Shell

Ословед
Re: Программирование на C/C++
А при извлечении с помощью AsFloat дробная часть правильна?

Попробуй изменить региональные настройки и перезапустить SQL Server. Что-нибудь изменилось?
 

    MaR*DeR

    очки: 3
    За содействие)

MaR*DeR

Ословед
Re: Программирование на C/C++
Shell написал(а):
А при извлечении с помощью AsFloat дробная часть правильна?
Попробуй изменить региональные настройки и перезапустить SQL Server. Что-нибудь изменилось?
Ыть...Заработало :D . Псиба, но вот как сделать, чтобы например эти настройки программно менялись, иначе ведь это надо на каждой машине изменять :blink:
И ещё возникла одна проблема, не работает округление RoundTo, тоесть если указываешь положительный параметр то все работает при отрицательнои ничего не происходит : TovarSum =RoundTo(TovarSum,-2);
Сдаётся мне что это опять из-за долбанного разделителя, найти наверное не может...
 

Shell

Ословед
Re: Программирование на C/C++
MaR*DeR написал(а):
Ыть...Заработало :D . Псиба, но вот как сделать, чтобы например эти настройки программно менялись, иначе ведь это надо на каждой машине изменять :blink:

Попробуй изменить в программе переменную
Код:
DecimalSeparator='.';

Если не поможет, то используй тяжелую артиллерию
Код:
char saveLocale[10];
//в начале программы
GetLocaleInfo(LOCALE_USER_DEFAULT,
LOCALE_SDECIMAL,saveLocale,10);
SetLocaleInfo(LOCALE_USER_DEFAULT,
LOCALE_SDECIMAL,".");
...
//в конце программы
SetLocaleInfo(LOCALE_USER_DEFAULT,
LOCALE_SDECIMAL,saveLocale);

Ко всем большая просьба, если вы размещаете код программы, то помещайте его в теги:[noparse]
Код:
значение
[/noparse] / ansis
 

Shell

Ословед
Re: Программирование на C/C++
MaR*DeR написал(а):
при отрицательнои ничего не происходит : TovarSum =RoundTo(TovarSum,-2);
Сдаётся мне что это опять из-за долбанного разделителя, найти наверное не может...
Разделитель тут точно не при чём
А TovarSum какого типа?
Лучше юзать double
 

MaR*DeR

Ословед
Re: Программирование на C/C++

Shell

Ословед
Re: Программирование на C/C++
MaR*DeR написал(а):
C double заработало, а почему с float не работает (мне так для общего развития =) ?)
Во float всего 6-7 цифр точных, округлять нечего. Если сумма больше миллиона, то в копейках фигня.
В double точность в два раза больше
 

Drakkar

Ословед
Re: Программирование на C/C++
Проблемка с графиком DBChart... строится график Bar зависимости количества продаж товаров от времени. Все столбцы разного цвета. Как в легенде к графику указать какой цвет к какому товару принадлежит?
 

MaR*DeR

Ословед
Re: Программирование на C/C++
Plz напомните как с вектором работать, тему где спрашивал потёрли :(
 
Сверху