Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
07.11.2012, 13:37     Как правильно пользоваться функцией strtok #1
Как правильно пользоваться етой ф-цией? Набросал код, надо пока разбить строку на слова(ф-ция 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;   
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
07.11.2012, 15:29     Как правильно пользоваться функцией strtok #2
http://en.cppreference.com/w/cpp/string/byte/strtok

Добавлено через 1 минуту
и даже с переводом: http://ru.cppreference.com/w/cpp/string/byte/strtok
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
08.11.2012, 18:58  [ТС]     Как правильно пользоваться функцией strtok #3
yuron_477, А как потом ети лексемы(слова к примеру) использовать в цикле например(удалить слово при таком то условии...)
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
08.11.2012, 19:01     Как правильно пользоваться функцией strtok #4
Ещё ссылочка по strtok http://www.cplusplus.com/reference/c...string/strtok/
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
08.11.2012, 19:04  [ТС]     Как правильно пользоваться функцией strtok #5
David Sylva, я плохо понимаю английский
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
08.11.2012, 19:06     Как правильно пользоваться функцией strtok #6
автоматический переводчик от гугл, тебе в помощь.
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
08.11.2012, 19:14  [ТС]     Как правильно пользоваться функцией strtok #7
David Sylva, а толку от него, там ведь только "теория", покрайней мере как толком работать с strtok я не знаю(
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
08.11.2012, 19:16     Как правильно пользоваться функцией strtok #8
Там ещё внизу хорошей пример.
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
08.11.2012, 19:21  [ТС]     Как правильно пользоваться функцией strtok #9
David Sylva, ну оно удалило знаки препинания, а как слово тогда удалить? Именно слово, сначала ведь надо поделить строку, а потом брать поочереди каждую лексему и проверять ее. Покрайней мере я думаю что в моем случаэ(удалить слова начинающиеся с гласной буквы) делать надо так. Как лексемы в цикл передать.7
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
08.11.2012, 19:25     Как правильно пользоваться функцией strtok #10
Я тебе просто показал, где подробно написано про функцию strtok. Опиши условие задачи.
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
08.11.2012, 19:32  [ТС]     Как правильно пользоваться функцией strtok #11
David Sylva, Ввести строку, удалить из нее слова которые начинаються на гласную букву. В моем коде ф-ция len делит почемуто строку по-символьно(напил кажись все верно, но не делит по словах). Остальние две ето ето другое задание.

Добавлено через 34 секунды
что делать дальше, точнее как ето делать я не знаю
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
08.11.2012, 19:43     Как правильно пользоваться функцией strtok #12
Я это сделал по другому! Здесь только фрагмент программы, но думаю вы догадаетесь что к чему, и как по своему сделать

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
#include <iostream>
#include <string.h>
#include <conio.h>
#include <stdio.h>
using namespace std;
void deletes(char [], int );
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);
  
 
 lek(x, size);
 getch();
 return 0;
}
void inp(char x[])
 {
  cout <<"Input string:";
  gets(x);
  cout << endl;
 }
 
int lek(char s[], int size) 
{
    int i;
     
    for(int i = 0; i < size; i++){
      if(s[i] == 'A'){
            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 <<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;
 
}
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
08.11.2012, 20:06  [ТС]     Как правильно пользоваться функцией strtok #13
vasiliy21, ошика, пишет что ф-ция lek должна возвращать значение. Она действительно должна возращать чтото или можна сделать ее void?
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
#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);
int lek(char[], int);
void deletes(char[], int);
int main()
{
 char x[100];
 inp(x);
 int res = 0; 
 int size = strlen(x);
 count(x, size, res);
 lek(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 str:  ";
  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<<"K-st cufr v recenny:  "<<res<<endl;
}
int lek(char s[], int size) 
{
    int i;
    for(i = 0; i < size; i++){
      if(s[i] == 'A'){
            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 <<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;
 
}
Добавлено через 10 минут
Уже сам немного разобрался, сделал воид, сечас еще условие правильное задам, чтоб канало так как надо)

Добавлено через 6 минут
блин, оно удаляет все символы после гласной буквы до конца слова((
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
#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 lek(char[], int);
void deletes(char[], int);
int main()
{
 char x[100];
 inp(x);
 int res = 0; 
 int size = strlen(x);
 //count(x, size, res);
 cout <<"String witout a-words:";
 lek(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 str:  ";
  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<<"K-st cufr v recenny:  "<<res<<endl;
}
void lek(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'){
            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 <<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;
}
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
08.11.2012, 20:10     Как правильно пользоваться функцией strtok #14
Цитата Сообщение от ozzy_b Посмотреть сообщение
блин, оно удаляет все символы после гласной буквы до конца слова((
а оно что должно удалить?
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
08.11.2012, 20:17  [ТС]     Как правильно пользоваться функцией strtok #15
надо удалить все слова что начинаються на гласную букву, вот пример как оно работает. http://cs419721.userapi.com/v4197213...sf2pmz57w4.jpg

Добавлено через 1 минуту
ето фото того как рабоет мой\твой код, оно удаляет в слове то что идет после гласной буквы(включая саму букву)
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
08.11.2012, 20:25     Как правильно пользоваться функцией strtok #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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#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 lek(char[], int);
void deletes(char[], int);
int main()
{
 char x[100];
 inp(x);
 int res = 0; 
 int size = strlen(x);
 //count(x, size, res);
 cout <<"String witout a-words:";
 lek(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 str:  ";
  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<<"K-st cufr v recenny:  "<<res<<endl;
}
void lek(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 <<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;
}
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
08.11.2012, 20:38  [ТС]     Как правильно пользоваться функцией strtok #17
vasiliy21, теперь работает, но если первое слово будет введено без пропуска, то его не удалит, но ето уже такое... спасибо большое)

Добавлено через 4 минуты
vasiliy21, и еще один вопрос, как сделать чтоб все 3 ф-ции(инвертирование строки, подсчет цифр и удаление ненужного слово) работали независимо, а то удаленная строка выводится уже инвертированой
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
#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 lek(char[], int);
void deletes(char[], int);
int main()
{
 char x[100];
 inp(x);
 int res = 0; 
 int size = strlen(x);
 invert(x, size);
 count(x, size, res);
 cout <<"String witout a-words: ";
 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);
 }
void count(char x[], int size, int res)
{
    for (int i=0; i<size; i++)
        if (x[i]>='0' && x[i]<='9')
            res++;
    cout<<"K-st cufr v recenny:  "<<res<<endl;
}
void lek(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 <<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;
}
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
08.11.2012, 21:14     Как правильно пользоваться функцией strtok #18
Опиши две отдельных строки, для инвертации и для удаления слов!

Добавлено через 7 минут
и для подсчета цифр
ozzy_b
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 169
08.11.2012, 21:27  [ТС]     Как правильно пользоваться функцией strtok #19
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
#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) 
{
    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;
}

так тоже не канает(

Добавлено через 7 минут
а так канает)
Кликните здесь для просмотра всего текста
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;
 cout<<"Invert string:  ";
 puts(X);
 invert(X, size);
 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;
    }
}
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 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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2012, 21:30     Как правильно пользоваться функцией strtok
Еще ссылки по теме:

C++ Отладчики - какая от них польза и как ими правильно пользоваться?
Как правильно работать с функцией _getch() ? C++
Как правильно пользоваться typedef для декларации типа указателя на функцию? C++

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

Или воспользуйтесь поиском по форуму:
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
08.11.2012, 21:30     Как правильно пользоваться функцией strtok #20
канает но не инвертирует строку
Yandex
Объявления
08.11.2012, 21:30     Как правильно пользоваться функцией strtok
Ответ Создать тему
Опции темы

Текущее время: 02:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru