Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Strtok - написать 
V
    Опции темы
Domen
  Дата 22.11.2009, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 1.10.2007

Репутация: нет
Всего: нет



Доброго времени суток!
Программа ищет симметричные слова. Не могу написать Strtok.
Нужна помощь! smile 
Код

#include <stdio.h>

int SimSlovo( char *Slovo);//prototip
int strlen(char *s);
char *strtk(char *s,char *fed);

int strlen(char *s)
{
 int n=0;
 while (s[n])
 n++;
 return n;
}

char *strtk(char *s)
{    

  while(*s)
    {
       if(*s!=' ')
       {
       return ; 
       }
    }
}


int SimSlovo( char* Slovo)//function
{
 int i=0,j=0;
 j=strlen(Slovo)-1; //prisvoenie indeksa poslednei bukvi
 for (i=0;i<=j;i++,j--) //chitaem slovo s dvuh storon 
  {                    //do vstrechi 
   if (Slovo[i]!=Slovo[j]) return 1; //ne ravno znachit 0
  }
 return 0;//ravno 1
}

int main()
{
 char *input;//stroka sodergachaia simvoli
 char *deltel=" ,"; //simvol ogranichiteli
 char strok[1000];
 char edel;
 int  len;
 int  pos;
 input=strok;
 gets(strok);
 len=strlen(input); //opredeliaem dlinu stroki (eto budet konec stroki)
 pos=0; //nachalo stroki

 while(len>pos)
 {
  input = strtk(input);//nahodim simvol ' ,' v input
  pos=pos+strlen(input)+1;      //i berem ukazatel na sleduiuschii simvol
   //pozicia zaverscheniia
   printf(input);
  if(*input ) //esli v stroke schtoto esti
   {
    if ( SimSlovo(input)==1) //poluchaem resultat function
     {
      printf(" ");
      printf(input); //vivodim naidenii
     }
    input+=strlen(input)+1;
    /*perehodim k sleduiuchemu slovu i zaverschaem
    proverku prediduchego */
   }
 }
 return 0;
}

PM MAIL   Вверх
586
Дата 22.11.2009, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 8
Всего: 146



Цитата(Domen @  22.11.2009,  20:14 Найти цитируемый пост)
Не могу написать Strtok.

Это задание такое? Есть же уже готовый strtok.
PM   Вверх
mes
Дата 22.11.2009, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



вроде так : (исправлено)
Код

bool strhas (const char * str, char c)
{
    for (;*str; ++str)
        if (*str == c) return true;
    return false;
}
char *strtok (char * str, const char * tokens)
{
    static char * ptr = NULL;

    if (str) ptr = str;

    if (!ptr) return NULL;

    for (*ptr; ++ptr)
       if (!strhas (tokens, *ptr)) break;

    for (char *p = ptr; *ptr; ++ptr)
        for (const char *tk = tokens; *tk; ++tk)
        if (*ptr == *tk)
        {
            *ptr++ = 0;
            return p;
        }
    return NULL;
}

тестируйте..  smile 



Это сообщение отредактировал(а) mes - 23.11.2009, 10:43


--------------------
PM MAIL WWW   Вверх
Domen
Дата 22.11.2009, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 1.10.2007

Репутация: нет
Всего: нет



Цитата

Это задание такое? Есть же уже готовый strtok. 

Готовой нельзя пользоваться.Нужно написать самому.
PM MAIL   Вверх
mes
Дата 22.11.2009, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



ориентировался на это описание http://www.opengroup.org/onlinepubs/007908...xsh/strtok.html


--------------------
PM MAIL WWW   Вверх
Domen
Дата 22.11.2009, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 1.10.2007

Репутация: нет
Всего: нет



Нет.Не ориентировался. Логически вышло при тестировании.
PM MAIL   Вверх
mes
Дата 22.11.2009, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Domen @  22.11.2009,  21:16 Найти цитируемый пост)
Нет.Не ориентировался. Логически вышло при тестировании. 

 smile Проверил - действительно выдает разный со стандартной функцией результат.
После исправления вроде стало давать аналогичный.
Отредактировал код в предыдущем посту.

Это сообщение отредактировал(а) mes - 22.11.2009, 22:46


--------------------
PM MAIL WWW   Вверх
Domen
Дата 22.11.2009, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 1.10.2007

Репутация: нет
Всего: нет



Замечательно! smile Огромное спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.2523 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.