Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Передача строк в качестве параметра


Автор: relevant 25.5.2008, 17:22
Люди хелп, в понедельник лабу здавать нужно (( кто знает как?

ПЕРЕДАЧА СТРОК В КАЧЕСТВЕ ПАРАМЕТРОВ
программа переводит  первое целое число первого предложения из двоичной системы счисления в шестнадцатеричную.

Автор: anatox91 25.5.2008, 17:43
Код

void someFunc(const char *str);

 smile 

Автор: relevant 25.5.2008, 18:35
) не все так просто, нужно передать так, чтобы можно было сделать примерно это:

Код

char* someFunc(const char *str);{
  char* temp;
  ...
  temp[i] = str[i];
  ...
}

Автор: bronislav 25.5.2008, 18:37
В строке числов двоичной форме, а тебе надо перевести его в шестнадцатеричную?

Автор: relevant 25.5.2008, 18:44
Цитата(bronislav @ 25.5.2008,  18:37)
В строке числов двоичной форме, а тебе надо перевести его в шестнадцатеричную?

да

Автор: bronislav 25.5.2008, 19:01
Ну так что тут не понятного?

Ты не знаешь как перевести из вдоичной в шестнадцатеричную или у тебя не получается что-то другое?

Автор: relevant 25.5.2008, 19:08
именно другое, я не могу выцепить первое вхождение двоичного числа в строке

Автор: bronislav 25.5.2008, 19:12
в строке могут быть числа, на тебе надо найти только числа в двоичной системе счисления?

ищи все числа, а потом проверяй в двоично он или нет (только из нулей и единиц).


Автор: relevant 25.5.2008, 21:33
не получается ВЫДЕЛИТЬ слово с числами, я и прошу эту функцию

Автор: anatox91 25.5.2008, 21:43
ты хоть приведи пример предложения

Автор: relevant 26.5.2008, 07:53
gsdfgdf 0110110 sdfsdf 0110 sdfsdf sdfdfg

функция должна вернуть "0110110"

Автор: Rififi 26.5.2008, 10:46
Код
char* get_number(const char* s)
{
    const size_t source_len = strlen(s);
    char* cp = new char[source_len+1];    
    char* number_str = NULL;

    do
    {
        // сделаем копию исходной строки
        strcpy(cp, s);
        
        // ищем токены...
        const char sep[] = " ";
        char* tok = strtok(cp, sep);

        // ... пока не найдём двоичное число
        while(tok && !strspn(tok, "01"))
            tok = strtok(NULL, sep);

        // если двоичных чисел нет, то дальше делать нечего
        if (tok == NULL)
            break;

        // выделяем память и копируем найденное число в буфер
        ptrdiff_t shift = tok - cp;
        const size_t tok_len = strlen(tok);        
        number_str = new char[tok_len+1];
        strncpy(number_str, s + shift, tok_len);
        number_str[tok_len] = '\0';
    } while(false);
    
    delete [] cp;
    return (number_str);
}

char* p = get_number("gsdfgdf 0110110 sdfsdf 0110 sdfsdf sdfdfg");
delete [] p;

Автор: mes 26.5.2008, 10:51
Цитата(relevant @  25.5.2008,  21:33 Найти цитируемый пост)
не получается ВЫДЕЛИТЬ слово с числами, я и прошу эту функцию 

Код



enum char_type  {eSeparator,eValue, eWord };
char_type GetCharType(char c)
{
// задать условия какие нужны
    if (c>='0' && c<='9') return eValue;
    if (c>='a' && c<='z') return eWord;
    if (c>='A' && c<='Z') return eWord;
    return eSeparator;
}

void OnFindValue (const char* begin, const char *end) //  указатели на начало и конец числа
{

};
void OnFindWord (const char* begin, const char *end) //  указатели на начало и конец слова
{
};

void ParseString(const char* str)
{
    char_type state=eSeparator; //текушее состояние
    const char*  p =str; // указатель на текуший элемент
    const char*  p1=str; // указатель на начало слова/числа элемент

    while (*p++)
    {
       switch (GetCharType(*p))
       {
         case eSeparator : if (state==eValue) OnFindValue (p1,p);
                           if (state==eWord)  OnFindWord  (p1,p);
                           state=eSeparator;
                           break;
         case eValue :     if (state==eSeparator) { p1 =p; state=eValue; }
                           break;

         case eWord :      if (state==eSeparator)  p1 =p;
                           state = eWord; 
                           break;
      }
   };
};

Автор: relevant 26.5.2008, 19:05
2Rififi && 2mes спасибо ребят огромное, то что нужно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)