Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
2 / 2 / 1
Регистрация: 02.10.2012
Сообщений: 169

Как правильно пользоваться функцией strtok

07.11.2012, 13:37. Показов 3079. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как правильно пользоваться етой ф-цией? Набросал код, надо пока разбить строку на слова(ф-ция int lek).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
#include <string.h>
#include <conio.h>
#include <stdio.h>
using namespace std;
void inp(char[]);
void invert(char[], int);
int count(char[], int, int);
int lek(char[], int);
void out(char[], int);
int main()
{
 char x[100];
 inp(x);
 int res = 0; 
 int size = strlen(x);
 invert(x, size);
 lek(x, size);
 count(x, size, res);
 out(x, count(x, size, res));
 return 0;
}
void inp(char x[])
 {
  cout <<"Input string:";
  gets(x);
  cout << endl;
 }
void invert(char x[], int size)
 {
  for(int i=0;i<size/2;i++)
   {
    char  a;    
    a=x[i];
    x[i]=x[size-1-i];
    x[size-1-i]=a;
   }
 }
int count(char x[], int size, int res)
{
    for (int i=0; i<size; i++)
        if (x[i]>='0' && x[i]<='9')
            res++;
    return res;
}
int lek(char x[], int size) 
{
    char* p;
    p=strtok(x, " ");
    for(int i = 0; i<size; i++)
    {
        cout<<"Slovo "<<i+1<<":"<<p[i]<<endl;
    }
    return 0;   
}
void out(char x[], int res)
 {
  cout<<"K-st cufr v recenny:  "<<res<<endl;
  cout<<"Invert str:  ";
  puts(x);
  getch();
}
Добавлено через 50 секунд
И как потом использовать ети "слова" в других ф-ция или циклах(например удалить слова которые начинаються с гласной буквы)?

Добавлено через 53 секунды
P.S. Пока оно выводит просто каждую букву, а не слово.

Добавлено через 16 минут
чуть переработал код(вывод сделал каждой ф-ции)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <string.h>
#include <conio.h>
#include <stdio.h>
using namespace std;
void inp(char[]);
void invert(char[], int);
int count(char[], int, int);
int lek(char[], int);
int main()
{
 char x[100];
 inp(x);
 int res = 0; 
 int size = strlen(x);
  invert(x, size);
 count(x, size, res);
 lek(x, size);
 getch();
 return 0;
}
void inp(char x[])
 {
  cout <<"Input string:";
  gets(x);
  cout << endl;
 }
void invert(char x[], int size)
 {
  for(int i=0;i<size/2;i++)
   {
    char  a;    
    a=x[i];
    x[i]=x[size-1-i];
    x[size-1-i]=a;
   }
  cout<<"Invert str:  ";
  puts(x);
 }
int count(char x[], int size, int res)
{
    for (int i=0; i<size; i++)
        if (x[i]>='0' && x[i]<='9')
            res++;
    return res;
    cout<<"K-st cufr v recenny:  "<<res<<endl;
}
int lek(char x[], int size) 
{
    char* p;
    p=strtok(x, " ");
    for(int i = 0; i<size; i++)
    {
        cout<<"Slovo "<<i+1<<":"<<p[i]<<endl;
    }
    return 0;   
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.11.2012, 13:37
Ответы с готовыми решениями:

Как пользоваться функцией gettime()
Добрый вечер! Кто бы мог подробно объяснить как работает функция gettime(), откуда взять конечное и начальное время, как определить...

Как пользоваться функцией rand()?
Все привет. Пытаюсь пользоваться функцией rand(), а получаю сообщение Это разве идентификатор? #include...

Как пользоваться функцией GetFileSize() ?
Привет. В builder'e выполняю следующий код: char str = ''; unsigned long FileSize = 0; GetFileSize('C:\file.exe',...

24
2 / 2 / 1
Регистрация: 02.10.2012
Сообщений: 169
08.11.2012, 21:33  [ТС]
Студворк — интернет-сервис помощи студентам
токо опять проблема, если первое слово - гласное, оно не удалиться, разве поставить перед ним пробел. может можно както так сделать чтоб пробел перед вводом автоматически поставить?

Добавлено через 1 минуту
vasiliy21, блин, чет я ступил и не заметил((
0
27 / 27 / 9
Регистрация: 24.10.2012
Сообщений: 135
08.11.2012, 21:35
Я вот так сделал:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <iostream>
#include <string.h>
#include <conio.h>
#include <stdio.h>
using namespace std;
void inp(char[]);
void invert(char[], int);
void count(char[], int);
void del(char[], int);
void deletes(char[], int);
int main()
{
 char x[100];
 inp(x);
 int size = strlen(x);
 invert(x, size);
 char y[100];
  cout<<"Enter string z figures: ";
 gets(y);
 int size1=strlen(y);
 count(y, size1);
 char z[100];
 cout<<"Enter string z golosnumu bukvamu: ";
 gets(z);
 int size2=strlen(z);
 del(z, size2);
 getch();
 return 0;
}
void inp(char x[])
{
    cout <<"Input string: ";
    gets(x);
    cout << endl;
}
void invert(char X[], int size)
{
    for(int i=0;i<size/2;i++)
    {
        char  a;    
        a=X[i];
        X[i]=X[size-1-i];
        X[size-1-i]=a;
    }
    cout<<"Invert string:  ";
    puts(X);
}
void count(char y[], int size)
{
    
     int res=0;
    for (int i=0; i<size; i++)
        if (y[i]>='0' && y[i]<='9')
            res++;
    cout<<"Digits in string:  "<<res<<endl;
}
void del(char s[], int size) 
{
     
    int i;
    for(i = 0; i < size; i++)
    {
      if((s[i] == 'A' || s[i] == 'E' || s[i] == 'Y' || s[i] == 'U' || s[i] == 'I' || s[i] == 'O' || 
           s[i] == 'a' || s[i] == 'e' || s[i] == 'y' || s[i] == 'u' || s[i] == 'i' || s[i] == 'o') &&s[i-1]==' '&&s[i+1]!=' ')
      {
        for(int j = i; j < size; j++)
        {
            if(s[j] == ' '){
                break;
                  }
            s[j] = ' ';
        }
      }       
    }
    for (i = 0; i < size; i++)
    {
        if ((s[i]==' ') && (s[i+1]==' '))
            deletes(s,i+1);
    }
         cout <<"String witout a-words: "<<s;
}
void deletes(char s[], int pos)
{ 
    int i;
    if ((s[pos]== ' ') && (s[pos+1]== ' '))
        deletes(s,pos+1);
    for (i = pos; i < strlen(s); i++)
    {
        s[i]=s[i+1];
    }
    s[i]=0;
}
1
2 / 2 / 1
Регистрация: 02.10.2012
Сообщений: 169
08.11.2012, 21:43  [ТС]
vasiliy21, а я попробовал в ф-ции удаления вызвать ещераз инвертирование, чтоб строка стала токой как была, но чтото не очень получилось у меня.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <iostream>
#include <string.h>
#include <conio.h>
#include <stdio.h>
using namespace std;
void inp(char[]);
void invert(char[], int);
void count(char[], int, int);
void del(char[], int, int);
void deletes(char[], int);
int main()
{
 char x[100];
 inp(x);
 int res = 0; 
 int size = strlen(x);
 char* X=x;
 invert(X, size);
 count(x, size, res);
 del(x, size, invert(X, size));
 getch();
 return 0;
}
void inp(char x[])
{
    cout <<"Input string: ";
    gets(x);
    cout << endl;
}
void invert(char X[], int size)
{
    for(int i=0;i<size/2;i++)
    {
        char  a;    
        a=X[i];
        X[i]=X[size-1-i];
        X[size-1-i]=a;
    }
    cout<<"Invert string:  ";
    puts(X);
}
void count(char x[], int size, int res)
{
    for (int i=0; i<size; i++)
        if (x[i]>='0' && x[i]<='9')
            res++;
    cout<<"Digits in string:  "<<res<<endl;
}
void del(char s[], int size, int invert(X, size)) 
{
    invert(X, size);
    int i;
    for(i = 0; i < size; i++)
    {
      if((s[i] == 'A' || s[i] == 'E' || s[i] == 'Y' || s[i] == 'U' || s[i] == 'I' || s[i] == 'O' || 
           s[i] == 'a' || s[i] == 'e' || s[i] == 'y' || s[i] == 'u' || s[i] == 'i' || s[i] == 'o') &&s[i-1]==' '&&s[i+1]!=' ')
      {
        for(int j=i;j<size;j++)
        {
            if(s[j]==' '){
                break;
                  }
            s[j]=' ';
        }
      }       
    }
    for (i=0;i<size;i++)
    {
        if ((s[i]==' ')&&(s[i+1]==' '))
            deletes(s,i+1);
    }
         cout <<"String witout a-words: "<<s;
}
void deletes(char s[], int pos)
{ 
    int i;
    if ((s[pos]==' ') && (s[pos+1]==' '))
        deletes(s,pos+1);
    for (i = pos; i < strlen(s); i++)
    {
        s[i]=s[i+1];
    }
    s[i]=0;
}
0
27 / 27 / 9
Регистрация: 24.10.2012
Сообщений: 135
08.11.2012, 21:56
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <iostream>
#include <string.h>
#include <conio.h>
#include <stdio.h>
using namespace std;
void inp(char[]);
void invert(char[], int);
void count(char[], int, int);
void del(char[], int);
void deletes(char[], int);
int main()
{
 char x[100];
 inp(x);
 int res = 0; 
 int size = strlen(x);
 char* X=x;
 invert(X, size);
 count(x, size, res);
 del(x, size);
 getch();
 return 0;
}
void inp(char x[])
{
    cout <<"Input string: ";
    gets(x);
    cout << endl;
}
void invert(char X[], int size)
{
    for(int i=0;i<size/2;i++)
    {
        char  a;    
        a=X[i];
        X[i]=X[size-1-i];
        X[size-1-i]=a;
    }
    cout<<"Invert string:  ";
  puts(X);
}
void count(char x[], int size, int res)
{
    for (int i=0; i<size; i++)
        if (x[i]>='0' && x[i]<='9')
            res++;
    cout<<"Digits in string:  "<<res<<endl;
}
void del(char s[], int size) 
{
    invert(s, size);
    int i;
    for(i = 0; i < size; i++)
    {
      if((s[i] == 'A' || s[i] == 'E' || s[i] == 'Y' || s[i] == 'U' || s[i] == 'I' || s[i] == 'O' || 
           s[i] == 'a' || s[i] == 'e' || s[i] == 'y' || s[i] == 'u' || s[i] == 'i' || s[i] == 'o') &&s[i-1]==' '&&s[i+1]!=' ')
      {
        for(int j=i;j<size;j++)
        {
            if(s[j]==' '){
                break;
                  }
            s[j]=' ';
        }
      }       
    }
    for (i=0;i<size;i++)
    {
        if ((s[i]==' ')&&(s[i+1]==' '))
            deletes(s,i+1);
    }
         cout <<"String witout a-words: "<<s;
}
void deletes(char s[], int pos)
{ 
    int i;
    if ((s[pos]==' ') && (s[pos+1]==' '))
        deletes(s,pos+1);
    for (i = pos; i < strlen(s); i++)
    {
        s[i]=s[i+1];
    }
    s[i]=0;
}
2
2 / 2 / 1
Регистрация: 02.10.2012
Сообщений: 169
08.11.2012, 22:12  [ТС]
vasiliy21, спасибо, теперь понял как фцию в фции вызвать)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.11.2012, 22:12

Как пользоваться функцией reverse?
Всем привет подскажите пожалуста как пользоваться функцией reverse и приведите примеры

Как пользоваться функцией fgetpos, fsetpos?
Не могу понять по какому принципу они работают. Открывал файл на чтение. В файле уже были несколько строчек. Хотел считать их в чаровскую...

Что то не то с функцией strtok!!!
Вот есть код: #include&lt;string.h&gt; #include&lt;iostream.h&gt; int main() { char *string1 = &quot;sdfsdf sdfs gjhg 1 h5jj&quot;; char *string2...

как правильно пользоваться
Здравствуйте, нашел интересный код для интересной задачи (Удалить комментарии из файла), но как сделать так,чтобы программа брала input.txt...

Как в C++ правильно пользоваться полиморфизмом?
Объясните пожалуйста как правильно пользоваться полиморфизмом в плюсах. Задача такая - есть некий абстрактный класс с виртуальными...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru