Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Я начинающий, подскажите как...(Все вопросы начинающих - постить только здесь!!!)

1
24 ноября 2007 года
kot_
7.3K / / 20.01.2000
Эта тема предназначена для вопросов начинающих в программировании. Если вы только начинаете программировать и столкнулись с тем, что ваш HelloWord (как вариант - новая суперОС) - не компилируется по непонятной причине, хотя код вы один в один взяли из книжки (интернета, придумали сами), то скорей всего ваш вопрос НУЖНО размещать только в этой теме. Перед тем как его создать - обязательно воспользоваться поиском. Только в этой теме вы не рискуете нарваться на - RTFM, иди в ЧАВО, иди в гугль и в конце концов просто иди на ... - при условии конечно что в данной теме вопрос не задавался. Или если вы не задаете вопрос типа "расскажите мне подробно что такое шаблоны в С++" - т.е. вопрос, в ответ на который проще послать в вышеуказанное. Если же вы решили что, ваш вопрос настолько нов и свеж что никто до этого не спрашивал на форуме "как мне прочесть файл с использованием потока" и создали отдельную тему - не обессудьте - в лучшем случае тема будет закрыта, в худшем удалена - и вы получите нарушение.
Страницы:
19K
22 марта 2008 года
Mhael
54 / / 20.03.2008
Имеется устройство с флэш-памятью на несколько мегабайт. Нужно написать файловую систему, дабы хранить на нем файло, писать и читать с него. Устройство под управлением микроконтроллера, так что команд совсем немного: чтение по 64 байта за фрейм и запись по 32 байта за фрейм. Вот сижу придумываю, но затык на фрагментации Порылся в нэте — что-то ничего толкового не увидел. Поможите люди добрые, какими идеями или ссылками.
38K
25 марта 2008 года
rav21
2 / / 25.03.2008
А как вернуть символьное значение из DLL? Нужно сделать подсчет CRC32 на c++(codeblock+mingw). Вызываться это будет из Visual Foxpro. :)
заготовка процедурки:
Код:
void DLL_EXPORT GetCRC32(LPCSTR filepath)
{
    char *sum;
    HANDLE hfile = CreateFile(filepath, GENERIC_READ, FILE_SHARE_READ,
        NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
    if (hfile == INVALID_HANDLE_VALUE){
        MessageBox(0, "Файл не найден!", "Рассчет CRC32", MB_OK | MB_ICONINFORMATION);
    }
    crc32 crc;
    char data[512];
    DWORD len;
    while(ReadFile(hfile, data, 512, &len, NULL) && len)
        crc.ProcessCRC(data, len);
    CloseHandle(hfile);
    _ultoa(crc.m_crc32, sum, 16);
    MessageBoxA(0, sum, "Расчет CRC32", MB_OK | MB_ICONINFORMATION);
   
    return;
}


Подскажите, очень прошу, как правильно сделать передачу строки?
11
25 марта 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: rav21
А как вернуть символьное значение из DLL? Нужно сделать подсчет CRC32 на c++(codeblock+mingw). Вызываться это будет из Visual Foxpro. :)
заготовка процедурки:
Код:
void DLL_EXPORT GetCRC32(LPCSTR filepath)
{
    char *sum;
    HANDLE hfile = CreateFile(filepath, GENERIC_READ, FILE_SHARE_READ,
        NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
    if (hfile == INVALID_HANDLE_VALUE){
        MessageBox(0, "Файл не найден!", "Рассчет CRC32", MB_OK | MB_ICONINFORMATION);
    }
    crc32 crc;
    char data[512];
    DWORD len;
    while(ReadFile(hfile, data, 512, &len, NULL) && len)
        crc.ProcessCRC(data, len);
    CloseHandle(hfile);
    _ultoa(crc.m_crc32, sum, 16);
    MessageBoxA(0, sum, "Расчет CRC32", MB_OK | MB_ICONINFORMATION);
   
    return;
}


Подскажите, очень прошу, как правильно сделать передачу строки?



 
Код:
char* DLL_EXPORT GetCRC32(LPCSTR filepath)
{
...
char *stroka = new char[MAX_LEN];
...
...
return stroka;
}

ЗЫ: если я правильно суть дела понял
38K
25 марта 2008 года
rav21
2 / / 25.03.2008
Цитата: oxotnik333

ЗЫ: если я правильно суть дела понял



Правильно понял :) бальшое спасибо.

35K
26 марта 2008 года
Fes_Gorodok
3 / / 13.02.2008
Здраствуйте. Если кто нить еще помнит такие компоненты как ServerSocket и ClientSocket то подскажите пожалуйста.
Написано: на форме кнопки Создать сервер, и присоединиться, ну и создается чат. Такая статья гуляет по нету. Так вот там отсутствует блокировка подключений после первого подключения, т е к серверу подключился клиент, но мне нужно после этого заблокировать сервер, чтобы к нему больше никто не мог подсоединиться.
if (Count==false) {
ChatMemo->Lines->Add("["+TimeToStr(Now())+"]Клиент присоединился");
Count=true;
}
else {
ChatMemo->Lines->Add("["+TimeToStr(Now())+"]Попытка присоединения");
ServerSocket1->Socket->Connections[1]->Close();
}
вот как это я делаю, где Count true если уже присоединен клиент.
Так вот дело в том, что теперь даже если один и тот клиент отключиться, а потом обратно подключиться возникает ошибка List index out of bounds(1). Подскажите ка кисправить или как игнорировать все подключения кроме первого. Заранее спасибо.
38K
27 марта 2008 года
tibibo
2 / / 26.03.2008
Заранее извиняюсь,если баян,но поиск по сабжу вывалил какие-то ГОСТы и сомнительной актуальности тексты. А мне хотелось бы все же увидеть кусок кода...
Задача собственно у меня следующая: есть некий текст (файл, или поток), где каждый считанный символ нужно преобразовать в другой символ согласно какому-то алгоритму типа x(n+1)=f(x) (по-моему это называется наложением гаммы) и вывалить в файл или в stdout. И вот я пишу:
 
Код:
while ((c = getchar()) != EOF) {
              с = myfunc(c);
              putchar(c);
}

Но в результате получается что-то не то: добавляются каки-то левые эскейп-последовательности,или наоборот обрезаются (точно не знаю, т.к. сужу только по поведению stdin). Мне кажется,что будет правильно получить сначала внутреннее представление символа, и с ним уже выполнять какие-то преобразования. А в myfunc() выполнить обратное преобразование и вернуть его значение. Но я не знаю,как мне из символа получить его ASCII код а потом обратно (или может быть какой-нить другой вид удобный для преобразований). Подскажите плиз какие сужествуют для этого механизмы. И как вобще было бы правильно решать такую задачу?
Заранее спасибо.
92
27 марта 2008 года
Тень Пса
2.2K / / 19.10.2006
 
Код:
char ch = '\n';
int i = ch; // i == 13


и

 
Код:
int i=13;
char ch = i; // ch == '\n'
38K
27 марта 2008 года
tibibo
2 / / 26.03.2008
Спасибо! А есть ли какой-то более... что-ли "правильный" метод для решения подобной задачи? Хотя бы где можно почитать и что б с примерами?
38K
27 марта 2008 года
5wQrdf156
1 / / 27.03.2008
Доброго времени суток! Излагаю суть проблемы: Нужно посимвольно считать строку из файла, удалив пробелы между словами и занести символы в массив. Вообщем ниже кусок кода и результат:

----------------------------------------
in.open("input.txt");
int ooo=0;
while(in)
{
char temp=in.get();
if(temp=='\b'||temp=='\n'||temp=='\r'||temp=='\0'||temp=='\t'||temp=='\v'||temp=='\f'||temp==' ')
continue;
cout<<temp;
ooo++;
}
cout<<ooo<<endl;
in.close();
----------------------------------------
Допустим содержимое файла input.txt "THIS IS MESSAGE", в таком случае на экран выводится "THISISMESSAGEЪ14" , т.е. THISISMESSAGE выводится корректно, 14 - кол-во итераций цикла, (хотя должно быть 13, исходя из кол-ва символов в сообщении, а вот символ "Ъ" не понятен, вроде бы как все пробельные символы режутся ифом, кто знает, подскажите как быть (:"

Компилятор: gcc version 3.4.4 [FreeBSD] 20050518
ОС: FreeBSD 6.1-RELEASE
3
27 марта 2008 года
Green
4.8K / / 20.01.2000
Цитата: oxotnik333
 
Код:
char* DLL_EXPORT GetCRC32(LPCSTR filepath)
{
...
char *stroka = new char[MAX_LEN];
...
...
return stroka;
}

ЗЫ: если я правильно суть дела понял


Так делать нельзя!
Иначе придется ещё написать функцию

 
Код:
void DestroyCRC32(char* stroka)
{
    delete[] stroka;
}

Правильнее передавать буфер для заполнения:
 
Код:
void DLL_EXPORT GetCRC32(LPCSTR filepath, LPSTR buff, DWORD buffSize);
11
28 марта 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Green
Так делать нельзя!
Иначе придется ещё написать функцию
 
Код:
void DestroyCRC32(char* stroka)
{
    delete[] stroka;
}

Правильнее передавать буфер для заполнения:
 
Код:
void DLL_EXPORT GetCRC32(LPCSTR filepath, LPSTR buff, DWORD buffSize);



да, стормозил...
можно наверно просто в теле вывывающей ф-ции delete[] stroka; прописать после использования этой строки... хотя это тоже через ж...

3
28 марта 2008 года
Green
4.8K / / 20.01.2000
Цитата: oxotnik333
да, стормозил...
можно наверно просто в теле вывывающей ф-ции delete[] stroka; прописать после использования этой строки... хотя это тоже через ж...


Не... нельзя. М.б. проблема с разными хипами.

38K
29 марта 2008 года
klaq
1 / / 29.03.2008
Подскажите глупому и зеленому:
необходимо создать UDP соединение, клиент посылает набор слов, сервер находит и возвращает одинаковые слова.
С UDP разобрался, сервер все получает, а вот с обработкой проблема.
Попытался решить вот так (шапку опускаю, входящая строка b):
 
Код:
i=n=w=0;
    z=b;
    while((sscanf(z+=n," %s%n",y, &n))>0) i++;
    for (m=0;m<i;m++)
        for (p=1;p<i;p++)
            if ((y==y[m])&&(p!=m))

Почему здесь не работает савнение y

==y[m]?
Может чего родного по поиску слов в строке есть?

38K
29 марта 2008 года
Lafa
3 / / 29.03.2008
Решил поразбираться с организацией классов и структур на C++ и не понимаю.
Код:
namespace Ex
{
    public struct Que
    {
    public:
        int x;
    };

    public struct Fun : public Que
    {
    public:
        int x_F;
        MW this_MW;
    };

    public struct MW
    {
    public:
        int y;    
    };
}


Visual C++ ругается и говорит:

MW this_MW; error C2146: syntax error : missing ';' before identifier 'this_MW'

может я чего-то недопонимаю? Мне надо создать объект типа MW в этой структуре, как это сделать?
87
29 марта 2008 года
Kogrom
2.7K / / 02.02.2008
Надо сделать неполное объявление структуры MW до структуры Fun.

А зачем вы пишете слово public перед struct? Чего вы хотите этим достичь?
38K
29 марта 2008 года
KakTyC911
2 / / 29.03.2008
Здравствуйте. Вот столкнулся с такой проблемой. Нужно выделить разряд из числа. Тоесть если есть число 1968 то когда при передачи в функцию значения 0 она возвращала число 8, 1 - 6, 2-9 . Причем возвращаемые значения должны быть типа инт. Парюсь над этим второй день. Подскажите пожалуйста. Заранее благодарен.
87
29 марта 2008 года
Kogrom
2.7K / / 02.02.2008
KakTyC911, в этом случае удобно использовать команды div (даст результат деления и остаток) и pow (для возведения делителя в нужную степень).
38K
29 марта 2008 года
KakTyC911
2 / / 29.03.2008
Kogrom, пробовал. Это удобно только для двухзначных чисел. Пробовал еще делать из числа строку и обращаться к елемнтам масива(строки). Выводит то что надо, но они чаровского типа, а мне нужен инт. Если бы ты по своему методу набросал кусочек кода был бы благодарен.
38K
29 марта 2008 года
Lafa
3 / / 29.03.2008
KOGROM

Спасибо, помогло.. А насчёт public - а разве не надо? Я хочу показать, что этии структуры доступны отовсюду. Я просто с C# перехожу, разбираюсь по пути...
87
29 марта 2008 года
Kogrom
2.7K / / 02.02.2008
Lafa, я тут не особо силен, но насколько помню, область видимости определяется по другому.

KakTyC911, вначале подели на 10 в степени на 1 больше, чем указанна в функции, затем остаток на 10 в указанной степени. Может не лучший алгоритм, но работать должен.

Ну, можно конечно и char-ы в int перевести. Например, если кодировка ANSI, то i = (int)(ch - 48). Хотя тут надо подумать - это я на ходу придумал... Лучше наверно воспользоваться функцией atoi
38K
30 марта 2008 года
Lafa
3 / / 29.03.2008
Понятно, спасибо.
353
31 марта 2008 года
Nixus
840 / / 04.01.2007
Цитата: KakTyC911
Здравствуйте. Вот столкнулся с такой проблемой. Нужно выделить разряд из числа. Тоесть если есть число 1968 то когда при передачи в функцию значения 0 она возвращала число 8, 1 - 6, 2-9 . Причем возвращаемые значения должны быть типа инт. Парюсь над этим второй день. Подскажите пожалуйста. Заранее благодарен.



 
Код:
int getDigit(int iVal, int iPos)
{
     while(iPos-- > 0)
          iVal /= 10;

     return iVal % 10;
}
37K
31 марта 2008 года
mmc
3 / / 31.03.2008
Хай всем....поможет мне кто-нить решить такую задачку....
как найти сумму элементов, расположенных в закрашенной части матрицы на рисунке. там рисунок >> квадрат, закрашено все кроме треугольника (от концов до центра)..получатся такой 5-угольник
_______
| ___ / |
| __ / |
| ___ \ |
| ____ \|
---------
15K
01 апреля 2008 года
kant
64 / / 02.06.2007
Всем доброго времени суток.

Я пишу маленький TCP чат, есть главный сервер к нему подключаються с помошью клиентской программы, каждый раз когда клиент подключаеться создаеться для него новый потом (thread) с функции CreatThread().Вот а сейчас вопрос, когда один клиент пришлеть сообщение нужна ее переслать к всем подключенным клиентам, как этого достичь ??
Заранее спасибо.
11
01 апреля 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: kant
Всем доброго времени суток.

Я пишу маленький TCP чат, есть главный сервер к нему подключаються с помошью клиентской программы, каждый раз когда клиент подключаеться создаеться для него новый потом (thread) с функции CreatThread().Вот а сейчас вопрос, когда один клиент пришлеть сообщение нужна ее переслать к всем подключенным клиентам, как этого достичь ??
Заранее спасибо.


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

15K
01 апреля 2008 года
kant
64 / / 02.06.2007
Цитата: oxotnik333
циклом пробежаться по всем HANDLE созданных процессов и разослать




Пробежаться HANDLE или ThreadID ??

11
01 апреля 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: kant
Пробежаться HANDLE или ThreadID ??



CreateThread(...) возвращает HANDLE, по ним и бегать (предварительно можно в массив их запихать)

ЗЫ: хотя наверно можно по ThreadID (я не знаю как у Вас организовано)

15K
01 апреля 2008 года
kant
64 / / 02.06.2007
Цитата: oxotnik333
CreateThread(...) возвращает HANDLE, по ним и бегать (предварительно можно в массив их запихать)

ЗЫ: хотя наверно можно по ThreadID (я не знаю как у Вас организовано)




У меня код выглядит примерно так:

 
Код:
HANDLE h;
DWORD ThreadID;
   
    if((h = CreateThread(NULL,0,threadFunc,(LPVOID)socket,0,&ThreadID)) != NULL){
printf("ok\n");
}
11
01 апреля 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: kant
У меня код выглядит примерно так:

 
Код:
HANDLE h;
DWORD ThreadID;
   
    if((h = CreateThread(NULL,0,threadFunc,(LPVOID)socket,0,&ThreadID)) != NULL){
printf("ok\n");
}



самое простое, это завести некий флаг в потоке основного приложения типа LPSTR, корорый в threadFunc проверять на NULL и если он оттличен от NULL то каждый поток рассылает его по своим сокетам, типа того:

 
Код:
DWORD WINAPI threadFunc (LPVOID socket)
{
  while (user == active)
         {
            //обработка сообщений ит юзера
            if (NewUserFlag) SendMessage(NewUserFlag, m_pSocket);
         }
}
15K
01 апреля 2008 года
kant
64 / / 02.06.2007
Цитата: oxotnik333
самое простое, это завести некий флаг в потоке основного приложения типа LPSTR, корорый в threadFunc проверять на NULL и если он оттличен от NULL то каждый поток рассылает его по своим сокетам




Хорошая идея,спасибо.

37K
02 апреля 2008 года
mmc
3 / / 31.03.2008
ну а мне поможет кто-нить??
87
02 апреля 2008 года
Kogrom
2.7K / / 02.02.2008
mmc, у вас условие задачи не четко сформулированно.

Если понимать так, что у части элементов двумерного массива значение первого типа, а у другой части - второго типа, и надо найти число элементов со значенями первого типа, то следует пройтись по массиву и и наращивать значение счетчика, если значение элемента первого типа.

Мда... вероятно, не очень ясный ответ, но какой вопрос, такой и ответ :)
1
02 апреля 2008 года
kot_
7.3K / / 20.01.2000
Цитата: mmc
ну а мне поможет кто-нить??


Я сейчас помогу. :mad:
Выдам нарушение за игнорирование правил форума.
Если что не понятно - читаем мою подпись.

38K
05 апреля 2008 года
Deman_cold
1 / / 05.04.2008
Добрый день! у меня такой вопрос, как что бы программа с сервера случайным образом загружала картинку?
38K
06 апреля 2008 года
Hunto
1 / / 06.04.2008
Здравствуйте. Подскажите, пожалуйста: дана строка слов, нужно чтобы программа вывела на экран те слова, в которых гласные (a, e, i, o, u) чередуются с согласными.

Сообствено немогу придумать как релизовать проверку на чередование . На ум приходит только полностью прописывать алфавит :

If (s==(’a’)|| (’e’)|| (’i’)|| (’o’)|| (’u’) && s[i+1]== (’b’)|| (’c’)|| (’d’) ну и так далее…

Может ктото знает вариант попроще?

p.s. язык обычный С
34K
06 апреля 2008 года
KillMen
3 / / 28.11.2007
Здрасте. Я тут пытаюсь скомпелировать простейший файл
 
Код:
#include <gmp.h>
int main()
{
    mpz_t i;
    mpz_init (i);
    return 0;
}

 
Код:
$ g++ -llibgmp 1.cpp
C:/WINDOWS/TEMP/ccUPbaaa.o:1.cpp:(.text+0x31): undefined reference to `__gmpz_init'
collect2: ld returned 1 exit status

В чем проблема?
14K
07 апреля 2008 года
stimpi
100 / / 04.09.2007
2Hunto

ничего в головку не приходит, кроме как завести 2 массива в 1вом будут гласные, во 2ром - согласные, и проверять каждый раз на вхождения в эти массивы,для массивов можно написать простую обертку.
10K
08 апреля 2008 года
Archy_74
51 / / 13.12.2006
Помогите с вызовом функции, плз :)
Есть функция f(char cValue)
при этом '0'<=cValue<='7'. т.е. от 0 до 7 и никаких других значений.
В программке формируется переменная int Value. как ее передать функции? У мну получается вызывать только как f('0'); и т.д. а вот подставить значение не знаю как. не switch-ем же перебирать :(
37K
08 апреля 2008 года
}{akep
2 / / 04.04.2008
у меня ксть код:
#include <stdlib.h>
#include <stdio.h>
/* Определение структурного типа "Звено списка":*/
struct cell {
char sign [10];
int weight;
struct cell * pc;
};
void main()
{
/* Указатель для перебора звеньев списка: */
struct cell * rex;
struct cell * beg=NULL; /* Начало списка */
struct cell * end=NULL; /* Конец списка */
printf ("\nВведите значения структур:\n");
/* Цикл ввода и формирования списка */
do
{ /* Выделить память для очередного звена списка: */
rex=(struct cell *)malloc(sizeof(struct cell));
/* Ввести значения элементов звена: */
printf("sign=") ;
scanf("%s",& rex->sign) ;
printf("weight=") ;
scanf("%d",& rex->weight);
if (rex->weight == 0)
{
free(rex) ;
break; /* Выход из цикла ввода списка */
}
/* Включить звено в список: */
if (beg==NULL && end==NULL)
/* Список пуст – включить введенный элемент в список первым*/
beg=rex;
else /* Включить звено в уже существующий список */
end->pc=rex;
end=rex ;
end->pc=NULL ;
}
while(1) ; /* Конец ввода списка */
/* Напечатать список */
printf Rus("\nСодержимое списка:") ;
rex=beg;
while (rex!=NULL)
{
printf("\nsign=%s\tweight=%d",rex->sign,rex->weight) ;
rex=rex->pc;
}
}

Здесь выводится односвязный список...
в данном примере по вводу 0 в поле weight происходит выход из цикла...

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

помогите объявит ***
12K
08 апреля 2008 года
Sholah_Weras
99 / / 04.12.2007
Доброй ночи.
Имею такую монструозную штуку:

Код:
struct Properties
    {
        int lections,
            seminars,
            kurs,
            kolvo_sub_gr;

        String  group;
    };

    typedef map<String, Properties> Info;    //<Имя преподвателя><Св-ва>
    typedef map<String, Info>       Predmet; //<Название предмета><Имя преподвателя>

    Predmet pred;


Зная ключ контейнера pred, мне нужно проверить свойство Properties::group на предмет совпадения с некой переменной.
Пишу:

 
Код:
Predmet::const_iterator p = NULL;

    for (p = pred.begin(); p != pred.end(); ++p)
    {
        if ( p->first == predmet )
        {
            // и все, дальше тупик.
        }
    }


Как обратиться у этим элементам внутри контейнера?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог