Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: KChernov
Дата сообщения: 20.03.2009 23:47
Skyer1

Цитата:
Т.е при возведении числа в квадрат нужно проверять полиндром он или нет

Перевести в строку и сравнивать посимвольно сначала первый с последним, потом второй с предпоследним и тд.
Автор: Abs62
Дата сообщения: 21.03.2009 00:02
Basur

Цитата:
Почему не работает gets/fgets после scanf?

Работает. Честно считывает '\n', оставшийся в буфере после scanf.
Автор: Basur
Дата сообщения: 21.03.2009 11:36
Abs62
Как мне тогда взять строку с пробелами?
Автор: Abs62
Дата сообщения: 21.03.2009 13:04
Basur

Код: scanf(" %[^\n]",title);
Автор: acronis2000
Дата сообщения: 22.03.2009 15:28
Уважаемые специалисты - подскажите где в программе 1с 8.1 конфигурация УПП
выставить разрядность коэффициента пересчета единиц измерения.
Сейчас есть 3 знака после запятой - нужно сделать 4 знака.

мне нужно чтобы правильно переводились штуки пиломатериала в кубические метры.

пример - доска обрезная 0,025*0,125*4 = 0,0125 м3 мне так и надо для перевода ,
а сейчас при 3 знаках он пишет 0,013 чты вызывает значительные расхождения !!!


Как мне быть с решением данного вопроса ?
Автор: akaGM
Дата сообщения: 22.03.2009 16:49
acronis2000

Цитата:
Как мне быть с решением данного вопроса ?

задать его вот здесь
вроде и не новичок...
Автор: veronica b
Дата сообщения: 22.03.2009 22:32

Цитата:
Уважаемые специалисты - подскажите где в программе 1с 8.1 конфигурация УПП
выставить разрядность коэффициента пересчета единиц измерения.
Сейчас есть 3 знака после запятой - нужно сделать 4 знака.

мне нужно чтобы правильно переводились штуки пиломатериала в кубические метры.

пример - доска обрезная 0,025*0,125*4 = 0,0125 м3 мне так и надо для перевода ,
а сейчас при 3 знаках он пишет 0,013 чты вызывает значительные расхождения !!!


Как мне быть с решением данного вопроса ?


Если в входных данных есть только три значащих цифры, то и на выходе будет только три. Если надо четвертая, то можешь приписать любую из десяти, на точность результата это никак не скажется. Это математика и к прграммированию никакого отношения не имеет!
Автор: eLLoco
Дата сообщения: 24.03.2009 08:14
veronica b

Цитата:
Если в входных данных есть только три значащих цифры, то и на выходе будет только три.

Да ладно, тут же умножение все-таки. Я подозреваю, что в любом нормальном языке (C, Java, Python) результат и будет с четырьмя знаками. А в 1С возможно есть какие-то правила округления для единиц и т.п.

В любом случае тему нужно выносить в топик об 1С.
Автор: veronica b
Дата сообщения: 24.03.2009 22:44

Цитата:
Да ладно, тут же умножение все-таки. Я подозреваю, что в любом нормальном языке (C, Java, Python) результат и будет с четырьмя знаками. А в 1С возможно есть какие-то правила округления для единиц и т.п.

Это не программирование, это математика. Посмотрите Выгодского,его справочник по элементарной математике. 4-й знак не откуда не появится, для этого оба сомножителя должны иметь 4-е или больше значащих цифр!
Автор: Abs62
Дата сообщения: 24.03.2009 23:02
veronica b
0.5*0.5=?
Автор: vjunk
Дата сообщения: 24.03.2009 23:11
veronica b
Может не будем, для начала, путать количество знаков после запятой и количество значащих цифр?
В числе 0,0125 3 (три) значащих цифры, как и в числе 0,125.
Автор: eLLoco
Дата сообщения: 25.03.2009 07:14
veronica b

Цитата:
Это не программирование, это математика. Посмотрите Выгодского,его справочник по элементарной математике. 4-й знак не откуда не появится, для этого оба сомножителя должны иметь 4-е или больше значащих цифр!

Вот все таки проверил я в Python:

Код:
>>> 0.025*0.125*4
0.012500000000000001
Автор: AnGo
Дата сообщения: 26.03.2009 08:32
eLLoco

Цитата:

Вот все таки проверил я в Python:

Код:

>>> 0.025*0.125*4
0.012500000000000001

Добро пожаловать в реальный мир, сынок! (с)перто

Вот и видим отличия "человеческой" математики, от машинной.
Курить и медитировать на тему об особенностях машинного представлении чисел.
Автор: KChernov
Дата сообщения: 26.03.2009 09:11
Пакеты численной математика с таким обычно справляются.
Ещё в Коболе (вроде бы его наследник сейчас живёт в SAP) с этим проблем не должно быть.
Автор: ChiPnGo
Дата сообщения: 29.03.2009 19:51
NotifySig.h:

Код:
#define SIG_NAME SigWidget
#include "NotifySigImplement.h"
SigWidget d;
Автор: xdude
Дата сообщения: 01.04.2009 17:47
Здравствуйте, товарищи. Есть такая проблемка, точнее, вопрос: можно ли средствами fstream (или может какого-то заменителя) работать с большими файлами (>2GB) на 32-битной системе? И чтобы это было впридачу кросс-платформенно (хотя бы в пределах unix/posix)? В частности, не работает ifstream::tellg для файла размером ~5GB, всегда возвращает -1.
На всякий случай: пишу под MacOS X 10.5.6 Leopard (x32), но работать также должно на FreeBSD 6.*/7.* x32 и Linux x32.
boost::filesystem::ifstream, насколько я знаю, это просто наследник от std::ifstream, который в конструкторе вместо char* принимает boost::filesystem::path, то есть, проблему с размерами он не решает.
Стоит ли копать в сторону STLport, или там будет всё то же самое, что и в STL?
Автор: DmitryKz
Дата сообщения: 02.04.2009 00:22
Ребята, подскажите, где найти код на С/С++, релизующий выравнивание текста по ширине при выводе на какой-либо canvas. Может, есть библиотека, посвященная подобным и другим текстовым на вывод операциям? Работаю больше на Дельфи, в соотв. теме уже подсказали несколько тем, где посмотреть, но не охота портировать с Дельфи на Си, если уже есть готовые реализации. Да и на Дельфях свою задачу реализовывать не хочется.
Не очень представляю, есть ли соотв. винапишные функции, слышал, что вроде как именно выравнивание по ширине там не реализовано. Может, в GDI и GDI+ есть подходящие функции? В-общем, если хотя бы направите, в каком направлении копать, буду весьма признателен.
Автор: Qraizer
Дата сообщения: 04.04.2009 19:13
xdude, простейшая
Код: #include <iostream>

int main()
{
std::cout << sizeof(std::streamsize) << '\t' << sizeof(std::streampos) << std::endl;
}
Автор: rostan2004
Дата сообщения: 23.04.2009 17:22
DmitryKz
Выравнивания по ширине в GDI (да-да, графика и канвас именно здесь) как в таковом, нет. Потому что можно выровнять через букву, а можно и через слово, можно пробелами, а можно пикселами. Считать позиции символов придется самому (если библиотеку не найдете) через APIшные GetTextExtentPoint32, GetCharABCWidths, выводить с массивом позиций через ExtTextOut.
Автор: Soontir
Дата сообщения: 25.04.2009 19:31
Ребят, очень нужна ваша помощь. Необходимо на Си (не С++) сделать следующее:
Есть указатель на указатель типа char:

Код: char **s;
Автор: ia72
Дата сообщения: 25.04.2009 21:59
Что бы по быстрому то можно использовать strtok из string.h.
Тогда и о "мусоре" можно не беспокоится.
Автор: Soontir
Дата сообщения: 26.04.2009 02:45
ia72
А как делит этот strtok?
И как быть с памятью?
Автор: ia72
Дата сообщения: 26.04.2009 07:41
Пример внизу, правда если у тебя есть указатель типа
char ** s , то в нём уже всё и так должно быть разбито на слова, иначе
не совсем понятно почему это должен быть двухмерный массив.
Если же это char * s то тогда смотри пример.
А с памятью всё зависит от s.

Код:

Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main ()
{
char s[] ="ls -l -h";
char * pch;

printf ("Splitting string \"%s\" into tokens:\n",s);
pch = strtok (s," ");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ");
}

return 0;
}
Автор: Soontir
Дата сообщения: 26.04.2009 13:50
ia72
Тут всё немножко по-другому. Вообще мне надо написать аналог интерпретатора под линукс, надо использовать команду execv(). Структура у нее такова:

Код: execv(const char *path, char *const argv[]);
Автор: Abs62
Дата сообщения: 26.04.2009 14:54
Soontir
Да это-то не проблемка.

Код: char str[] ="ls -l -h";
char **s,*pch;
int i;
const int MAX_WORDS=100;

s=(char**)malloc(MAX_WORDS*sizeof(char*));
for(i=0;i<MAX_WORDS;i++) {
pch= i==0 ? strtok (str," \t\n") : strtok (NULL," \t\n");
if(pch==NULL) {
s[i]=pch; break;
} else {
s[i]=strdup(pch);
}
}
if(i<MAX_WORDS-1) s=(char**)realloc(s,(i+1)*sizeof(char*));

//
//...
//

for(i=0;i<MAX_WORDS;i++) {
if(s[i]!=NULL) free(s[i]);
else break;
}
free(s);
Автор: Soontir
Дата сообщения: 26.04.2009 15:33
ia72
Abs62
Спасибо, буду пробовать!
Автор: xdude
Дата сообщения: 26.04.2009 19:27
Нет необходимости делать strdup для выделения памяти, если исходная строка будет передаваться "как есть", т.е., без изменений. Можно просто все пробельные символы в исходной строке заменить на '\0', и сформировать массив указателей типа char* (т.е. char ** ptr_arr), а эти указатели будут просто ссылаться на начала слов в строке. Есть функция strsep, которая удачно это делает (хотя, вроде бы она принадлежит к стандарту BSD). А вот пример прямо из man-странички к этой функции, как раз в тему, но с фиксированным количеством аргументов:

Код:
char **ap, *argv[10], *inputstring;

for (ap = argv; (*ap = strsep(&inputstring, " \t")) != NULL;)
if (**ap != '\0')
if (++ap >= &argv[10])
break;
Автор: ensiferum007
Дата сообщения: 27.04.2009 17:02
Подскажите пожайлуста!!!
Возможно ли скомпилить в Visual Studio 7-9 приложение не требуещее поддержки .net framework?
Если да то расскажите как, а лучше выложите проект настроеный уже.
Заранее большое спасибо за помощь.
Автор: KChernov
Дата сообщения: 28.04.2009 21:14
ensiferum007
А в чём собственно проблема?
Создаёте НЕ.net-овский проект и компилите.
Например Win32 или консольный проект - полазьте в списке доступных проектов.
Правда не исключаю, что есть версии студии, где нет других проектов, но как-то в такое не верю (но если так - то никак и не получится).
Автор: Xakep007
Дата сообщения: 28.05.2009 14:58
А вопросы по QT тут же рассматриваются, или есть другая тема?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.