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

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

Автор: c0d3r
Дата сообщения: 23.03.2008 20:04
blaro


Цитата:
И ещё, я пишу на Си а не на СИ++


Если бы вы знали Си, то не задавали бы такие элементарные вопросы про указатели, потому что работа с указателями в Си и в С++ не отличается.
Автор: blaro
Дата сообщения: 23.03.2008 21:26
c0d3r
Да ладно?! Ну вы блин, даете! Кажется я ещё написал, что учусь. А учу я как раз Си, и пишу на Си. Поэтому, если бы я знал Си, то не спрашивал бы "таких элементарных вопросов". Вы что, читать не умеете?
Автор: AKRAS
Дата сообщения: 23.03.2008 23:13
поскажите я уже незна что делать как заставить Microsoft Visual C++ 6.0 понимать русский язык программирою пишу русский выходят карлюки помогите моет что то скачать надо чкажите где скачать моно бесплатно
Автор: TeXpert
Дата сообщения: 23.03.2008 23:30
AKRAS
Ты сам посмотри на то что ты написал! Тебе надо сюда: http://forum.ru-board.com/topic.cgi?forum=2&bm=1&topic=2359&start=740#lt
Автор: distance
Дата сообщения: 24.03.2008 13:23
akaGM
я обычно рекомендую то, что сам читал.
а эта книга обьективно хороша.
Автор: akaGM
Дата сообщения: 24.03.2008 14:22
distance
ну не всё мною читаное годно для рекомендации...

вот у меня вопрос имеется (ещё до всякого чтения)
на паскале я делаю так:

Код: function myProc(i: integer): integer;
function myProc(r1, r2: double; var r3: double): integer; overload;
Автор: Bender_R
Дата сообщения: 24.03.2008 15:00
AKRAS

посмотрите в сторону
OemToChar, CharToOem,
CharToOemBuff, OemToCharBuff
Автор: distance
Дата сообщения: 24.03.2008 15:06
akaGM
это называется "перегрузка функций". в C++ такое возможно, в обычном Си - нет.
с шаблонами перегрузка не связана 9если только косвенно, в том смысле что перегрузить можно и шаблонную функцию в том числе)

// обычный вариант
template <typename T> T min(const T& l, const T& r) { return l < r ? l : r; }

// для простых типов параметры не обязательно передавать по сылке
int min(int l, int r) { return l < r ? l : r; }

соостветственно, в программе для типа int будет вызываться не шаблонная функция, а перегруженная.
Автор: akaGM
Дата сообщения: 24.03.2008 16:15
distance

Цитата:
это называется "перегрузка функций"

во-во, именно так это и называется...

т.е. при
template <typename T> T min(const T& l, const T& r) { return l < r ? l : r; }

вызовы
rmin = min(r1, r2);
imin = min(i1, i2);
будут корректны?

где эта зелёная фигня (относительно реализаций) должна располагаться?


Цитата:
для простых типов параметры не обязательно передавать по сылке

а мне нада!
тогда как-то вот так?
template <typename T> T min(T& l, const T& r) { return l < r ? l : r; }
int min(int *l, int r) { *l < r ? *l : r; return *l; }

или как?


Цитата:
с шаблонами перегрузка не связана...

да? тогда шаблоны немножко подождут...

-----
э-э-э, обожди, ты меня совсем загипнотизировал...

int myProc(int i);
int myProc(double r1, r2, *r3);

вот это как перегрузить?
Автор: distance
Дата сообщения: 24.03.2008 17:47
akaGM

Цитата:
где эта зелёная фигня (относительно реализаций) должна располагаться?

зелёная фигня должна быть в заголовочном файле


Цитата:
а мне нада!

если надо по ссылке, то в исходной шаблонной функции так и происходит


Цитата:
да? тогда шаблоны немножко подождут...

изучить из всё же полезно, потому как ту функцию min можно специализировать типом int, и тогда получится другая реализация
template<int> int min(int i, int r) { return l < r ? l : r; }


Цитата:
э-э-э, обожди, ты меня совсем загипнотизировал...

{:€


Цитата:

int myProc(int i);
int myProc(double r1, r2, *r3);


эта функция уже перегруженна, надо только типы аргументов правильно указать
int myProc(double r1, doubler2, double*r3);
Автор: akaGM
Дата сообщения: 24.03.2008 18:46
distance

Цитата:
изучить из всё же полезно

это да... но ты же не уходишь пока с РуБорда?
изучим...

а разве
template <typename T> T
не более обще, чем
template<int> int
т.е. первая конструкция разве не включает в себя и вторую тоже?


Цитата:
эта функция уже перегруженна

а, ну да, на плюсах...
Автор: Qraizer
Дата сообщения: 24.03.2008 19:15

Цитата:
а разве
template <typename T> T
не более обще, чем
template<int> int
т.е. первая конструкция разве не включает в себя и вторую тоже?
Ага. Но вторая более специализирована, поэтому компилятор будет выбивать её, если она подходит. Но при выводе аргументов шаблонов преобразования типов не рассматриваются и не выполняются. Поэтому, несмотря на то, что short кастуется к int, а для int есть специализация, если вызовешь с short, то будет вызван первичный шаблон, где в T будет подставлен short. Этим специализация шаблона отличается от перегрузки, при которой пути преобразований типов рассматриваются.
Автор: akaGM
Дата сообщения: 25.03.2008 15:25
distance
Qraizer


ага, хорошо...
а вот теперь ответьте мне пожалуйста на самый сложный вопрос о шаблонах:

в каком случае/случаях без них [шаблонов] я вынужден буду всю свою оставшуюся жизнь стоять на ушах, чтобы разрешить эту/эти проблему/ы?

я серьёзно...
Автор: distance
Дата сообщения: 25.03.2008 17:55
akaGM
ну, например, если ты активно юзаешь Boost.MPL, или являешься её разработчиком
Автор: Qraizer
Дата сообщения: 25.03.2008 23:23
В случае, если в ситуациях, где шаблоны смогут сэкономить тебе кучу усилий, а ты будешь использовать вместо них их альтернативы. К примеру: шаблоны могут использоваться вместо условной компиляции; шаблоны могут использоваться для исполнения константных алгоритмов во время компиляции, например, решить за программиста, что выгоднее - передача по значению или константной ссылке; шаблоны могут использоваться для реализации статического полиморфизма; шаблоны могут использоваться для сборки цельного класса из отдельных кирпичиков, параметризующих и реализующих его стратегии поведения. Я вижу им множество применений. Если ты не будешь их видеть, то и на ушах стоять тебе будет незачем.
Автор: akaGM
Дата сообщения: 26.03.2008 07:40
Qraizer
ага...
а это ты перечислил возможности применения стандарта или какую-то конкретную спецификацию?
т.е. вопрос звучит так: есть ли какая-то стандартная штука типа "стандарт шаблонов X.Y /ISO-тра-ля-ля/" и в конкретной реализации языка поддержка этого будет оговорена?
и вообще, это применимо только для С++ или же нет? т.к. вот в дельфях грозят чем-то подобным...
Автор: Serhio3D
Дата сообщения: 27.03.2008 08:04
Всем здравствуйте .




Добавлено:
Всем здравствуйте.

Я недавно начал, скажите пожалуйста
Пишу на Microsoft Visual Studio 2008.
Скажите где он ищет test.cpp ?
И как указать фаил если он к примеру на с:\folder\test333.txt ?

--------------------------------------
#include "stdafx.h"
#include "string"
#include "fstream"


using namespace std;

int main()

{
ifstream in( "test.cpp" );
    ofstream out( "test.cpp" );
string s;
    while (getline(in.s))
        out << s << "\n";
}

--------------------------------------
------ Build started: Project: test, Configuration: Debug Win32 ------
Compiling...
test.cpp
c:\documents and settings\admin\мои документы\visual studio 2008\projects\test\test\test.cpp(14) : error C2039: 's' : is not a member of 'std::basic_ifstream<_Elem,_Traits>'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
c:\documents and settings\admin\мои документы\visual studio 2008\projects\test\test\test.cpp(14) : error C2780: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)' : expects 2 arguments - 1 provided
e:\program files\microsoft visual studio 9.0\vc\include\string(527) : see declaration of 'std::getline'
c:\documents and settings\admin\мои документы\visual studio 2008\projects\test\test\test.cpp(14) : error C2780: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem)' : expects 3 arguments - 1 provided
e:\program files\microsoft visual studio 9.0\vc\include\string(475) : see declaration of 'std::getline'
c:\documents and settings\admin\мои документы\visual studio 2008\projects\test\test\test.cpp(14) : fatal error C1903: unable to recover from previous error(s); stopping compilation
Build log was saved at "file://c:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\test\test\Debug\BuildLog.htm"
test - 4 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Автор: akaGM
Дата сообщения: 27.03.2008 13:29
Serhio3D
попробуй строку
while (getline(in.s))

заменить на
while (getline(in, s))


Цитата:
И как указать фаил если он к примеру на с:\folder\test333.txt ?

ifstream in( "с:\\folder\\test333.txt" );
Автор: akaGM
Дата сообщения: 27.03.2008 15:31
не могу скомпилировать VC7.1 один файл...
ошибка:

error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)

долгое чтение msdn по поводу 'error C2679' привело лишь к долгому матерному монологу...
т.к. я ни хрена в этом не понимаю, то прошу помочь...

для тех кто в силах это победить привожу код (14.5 кб):
http://slil.ru/25625068

заранее спасибо

-----
кстати, не очень свежий гнусь сожрал это на ура...
Автор: Qraizer
Дата сообщения: 27.03.2008 18:14

Цитата:
кстати, не очень свежий гнусь сожрал это на ура...
Похоже, MS тут косячит. Интел компилер тоже скушал на ура. Откастуй тут *this к istream&, поможет.
Цитата:
а это ты перечислил возможности применения стандарта или какую-то конкретную спецификацию?
т.е. вопрос звучит так: есть ли какая-то стандартная штука типа "стандарт шаблонов X.Y /ISO-тра-ля-ля/" и в конкретной реализации языка поддержка этого будет оговорена?
и вообще, это применимо только для С++ или же нет? т.к. вот в дельфях грозят чем-то подобным...
Нет никаких стандартов на шаблоны, окромя их описания в рамках стандарта C++. Шаблоны в С++ - это просто часть языка, а не реализация некоего ISO/IEC. С++ не единственный, кто поддерживает generic programming, в ADAе тоже genericи есть, и в .NETе, говорят... Но плюсовым они не ровня - ADA, если не ошибаюсь, их хэндлит в run-time со всеми вытекающими на предмет производительности. .NET тоже их держит только на уровне "всего лишь" параметризации типов. Плюсовые же шаблоны обладают свойством функциональной полноты по Тьюрингу, а это уже качественно другой уровень, чем просто параметризация типов.
Всё перечисленное (и другое, не перечисленное) - это уже использование свойств шаблонов, заложенных в них стандартом, и далеко не все из них стандартом предусматривались изначально. Свойство функциональной полноты, например, не планировалось и оказалось неожиданностью для самого комитета. Мне кажется, никто в мире не обладает полным представлением о потенциале этого языка. Вообще, С++ - единственный известный мне язык, который в научных кругах соответствующей направленности изучается, публикуются статьи, читаются доклады, посвящённые исследованиям его возможностей. Не удивлюсь, если и диссертации защищаются.
Автор: akaGM
Дата сообщения: 27.03.2008 18:36
Qraizer
(istream&)(*this) ?
помогло... спасибо...
под рукой нет версий старше 7.1, не знаешь, в них то же?
+
что присоветуешь, варнинги подавить или всё-таки кастовать?
'= < >' : signed/unsigned mismatch


Цитата:
в рамках стандарта C++. Шаблоны в С++...

ок, понятно...


Цитата:
Вообще, С++ - единственный известный мне язык, который в научных кругах соответствующей направленности изучается...

довольно забавно, как-будто это вещь в себе, внешняя данность, а не продукт...
Автор: Qraizer
Дата сообщения: 27.03.2008 18:55
Лучше разобраться, откуда эти варнинги, и по возможности пофиксить. Например тип begin сменить на unsigned. Если это особенность дизайна, как например, intовость параметров для charных функций, то кастовать. Забивать варнинги никогда не следует, рискуешь пропустить действительно важное. А так ты в нужных местах говоришь компилятору, что ты его варнинг увидел и учёл.
Автор: marrow1
Дата сообщения: 27.03.2008 19:13
всем привет. Visual Studio 2005 C++

на диалоговом окне у меня есть по несколько контролов radio, check, edit.
Сделать нужно так, что когда выбираю RADIO1 то нужно чтобы у CHECK1 параметр Disabled установился в значение False , так как я его по умолчанию задал true, так как нужно его сначала отключить. Также сделать потм проверку, что если CHECK1 отмечен на окне, то аналогично предыдущему включить EDIT1. И последнее, сделать условие типа if (выбран RADIO1), то выполнить подсчет. Помогите, пожалуйста, а то я в 2005 студии не работал практически, да и в самом Visual C++ чуть работал, давно.
Автор: akaGM
Дата сообщения: 27.03.2008 19:44
Qraizer

Цитата:
Лучше разобраться, откуда эти варнинги, и по возможности пофиксить.

в своих вещах я даже declared, but never used вычищаю...

Цитата:
рискуешь пропустить действительно важное.

я бы не спрашивал, если б был автором этой библиотеки...
а так, вроде отлаженный серьёзный продукт, и мне с моим кривым напильником туда лезть...
ладно, вот посмотрим на реальных задачах что получится...
Автор: Qraizer
Дата сообщения: 28.03.2008 19:27

Цитата:
я бы не спрашивал, если б был автором этой библиотеки...
а так, вроде отлаженный серьёзный продукт, и мне с моим кривым напильником туда лезть...
ладно, вот посмотрим на реальных задачах что получится...
Это вот сие ты назвал серьёзным продуктом ?? Он даже не слинкуется, т.к. конструкторов не хватает. Что уж тут говорить о варнингах, на которые авторы просто положили. У кого какой напильник - у меня даже сомнений не возникает. Не скромничай без причины, увидел багу - правь и шли авторам.
Автор: marrow1
Дата сообщения: 29.03.2008 00:39
Visual Studio 2005 C++ какой функцией можно проверить состояние контрола Check1, типа отмечен он или нет (Checked, Unchecked), чтобы я мог написать типа:

if (IDC_CHECK1.isChecked=true)

{
действие
}

и аналогично сделать проверку состояния для контрола Radio1.

а то в MSDN туго и не нашел.
Автор: marrow1
Дата сообщения: 30.03.2008 16:30
помогите пожалуйста.
С предыдущими вопросами разобрался. Сейчас же проблема у меня реально посложнее и нужен соыет того кто знает.
К примеру вот есть у меня вот такой подсчет(реально их несколько, но я тут я взял для примера один только):

if (k1<257&k1>0) {p=a1; r=b1; s=c1; t=d1;
                u=a1; v=b1; w=c1;
                e1=255; f1=255; g1=255;
                if (k1<8&k1>3){h1=252; l2=30; m=2; t=t&h1; z=t+3;}
                if (k<16&k1>7){h1=248; l2=29; m=6; t=t&h1; z=t+7;}
                if (k1<32&k1>15){h1=240; l2=28; m=14; t=t&h1; z=t+15;}
                if (k1<64&k1>31){h1=224; l2=27; m=30; t=t&h1; z=t+31;}
                if (k1<128&k1>63){h1=192; l2=26; m=62; t=t&h1; z=t+63;}
                if (k1<256&k1>127){h1=128; l2=25; m=126; t=t&h1; z=t+127;}
                if (k1<257&k1>255){h1=0; l2=24; m=254; t=t&h1; z=t+255;}
                
        }

есть еще переменная k отдельно от k1. Данный фрагмент кода, что я привел считатет новые значения p,r,s,t,u,v,w,z . И этих меременных будет не по 1, а столько сколько нам будет задано значение k, т.е. нужно сделать цикл, чтобы программа считала значения p1,r1,s1,t1,u1,v1,w1,z1, потом считала p2,r2,s2,t2,u2,v2,w2,z2 и т.д., столько раз сколько у нас будет равно k. И чтобы потом можно было эти же данные вывести. Т.е. мы наперед не можем знать сколько у нас будет разных значений переменных p,r,s,t,u,v,w,z, и они все нам нужны. Как это можно реализовать? Помогите пожалуйста.
Автор: Labutin
Дата сообщения: 30.03.2008 17:08
marrow1
Пусть p,r,s,t,u,v,w,z будут массивами.
Автор: scai
Дата сообщения: 31.03.2008 11:17
Подскажите плиз новичку как вставить на диологовое окно таблицу из ексель файла используя МФС или ВинАпи (или хотябы где об этом прочитать в МСДН)
Автор: akaGM
Дата сообщения: 31.03.2008 15:52
Qraizer

Цитата:
Он даже не слинкуется, т.к. конструкторов не хватает

гы...
ты будешь смеяться и [м.б.] не поверишь, но я сначала это всё хозяйство поEXEкутал, и только вот что увидел твоё письмо...
странно, и gcc и vc [ещё раз спасибо за то что помог] исправно всё собрали, и я пощупал на реальных задачах... честно-честно, перебил/исправил все .mak'и -- они там тоже на удивление кривые...
но мне эта библиотека не подошла уже совсем не по "С++" парараметрам (там люди не учитывают анизотропию, если уж совсем для протокола)

хотя, если есть что сказать, то скажи пожалуйста...
вот полная библиотека
и все демонстрашки из неё я успешно запустил...

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

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


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