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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 56, средняя оценка - 4.84
newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
#1

Проверка наличия символов в строке - C++

10.09.2011, 19:06. Просмотров 8609. Ответов 8
Метки нет (Все метки)

Задача состоит в том чтобы проверить встречаются ли нужные нам символы в строке, я попробовал сделать ф-цию поиска и четыре раза прогнать через нее строку. Но в результате мне говорят, что все символы встречаются и индексы у всех 0.
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
#include <iostream>;
using namespace std;
 
char Find(char s[], char n[]);
 
void main() 
{
    int i=0;
    int x,y,z,a;
    char s[]="ajajshgdkjgfjag";
    char n[]="s"; char n1[]="t"; char n2[]="e"; char n3[]="p";
        
    x=Find(s,n);
    y=Find(s,n1);
    z=Find(s,n2);
    a=Find(s,n3);
    cout<<x<<y<<z<<a<<"\n";
 
    getchar();getchar;
    }
 
char Find(char s[], char n[])
{
    int i=0;
    while (s[i]!='\0')
    {
        if (s[i]==n[0]) i++;
            cout<<"There is:"<<n<<i<<"\t";
        break;
    }
    return i;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
4511 / 2853 / 227
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
10.09.2011, 19:15     Проверка наличия символов в строке #2
Немного не правильно организована логика внутри ф-ции Find().
Вот:
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
#include <iostream>
using namespace std;
 
int Find(char s[], char n[]);
 
void main() 
{
        int i=0;
        int x,y,z,a;
        char s[]="ajajshgdkjgfjag";
        char n[]="s"; char n1[]="t"; char n2[]="e"; char n3[]="p";
                
        x=Find(s,n);
        y=Find(s,n1);
        z=Find(s,n2);
        a=Find(s,n3);
        cout<<x<<" "<<y<<" "<<z<<" "<<a<<"\n";
 
        getchar();
}
 
int Find(char s[], char n[])
{
        int i=0;
        while (s[i]!='\0')
        {
                if (s[i]==n[0]){
                    cout<<"There is:"<<n<<" "<<i<<"\t";
                break;
                }
            i++;
        }
        return i;
}
newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
10.09.2011, 19:24  [ТС]     Проверка наличия символов в строке #3
хехе, спасибо!)
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
10.09.2011, 19:34     Проверка наличия символов в строке #4
Какой смысл делать n строкой, когда там всего один символ используется? Символ и передавайте.
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
10.09.2011, 19:38     Проверка наличия символов в строке #5
Цитата Сообщение от Deviaphan Посмотреть сообщение
Какой смысл делать n строкой, когда там всего один символ используется? Символ и передавайте.
И правда. Тогда уж все проверяемые символы в одну строку запихнуть.
xAtom
914 / 739 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
10.09.2011, 19:39     Проверка наличия символов в строке #6
Цитата Сообщение от Deviaphan Посмотреть сообщение
Какой смысл делать n строкой, когда там всего один символ используется? Символ и передавайте.
А вот чтобы несколько символов вместе искать можно было бы.
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
#include <iostream>
using namespace std;
int indexOf(const char* str, const char* chs);
 
int  main(void) {
 
   char str[] = "ajajshgdkjgfjag";
   int x,y,z,a;
 
   x = indexOf(str, "s");
   y = indexOf(str, "t");
   z = indexOf(str, "e");
   a = indexOf(str, "p");
 
   cout<<x<<'\n' << y<<'\n' << z<<'\n' << a<<"\n";
    
   cin.get();
   return 0;
}
 
int indexOf(const char* str, const char* chs) {
    size_t i = strcspn(str, chs);
    if(i != strlen(str))
         return i;
    return -1;
}
newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
10.09.2011, 20:02  [ТС]     Проверка наличия символов в строке #7
Цитата Сообщение от Deviaphan Посмотреть сообщение
Какой смысл делать n строкой, когда там всего один символ используется? Символ и передавайте.
ну сначала так оно и задумывалось, но компилятор ругатся начал на несоответствие типов, пытался исправить, но заблудился и сделал проще для себя)
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
10.09.2011, 20:29     Проверка наличия символов в строке #8
newb_programmer, а почему вы не хотите strchr() использовать для поиска?

Например:
C++
1
2
3
4
5
6
7
8
9
10
11
#include<string.h>
#include<iostream>
 
int main()
{
   char s[] = "abcd123";
   char *t;
   if (t = strchr(s, '1'))
      std::cout << t - s;
   return 0;
}
Или найти все вхождения символа в строку:

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include<string.h>
#include<iostream>
 
int main()
{
   char s[] = "abcd1231", *ps;
   ps = s;
   while (ps = strchr(ps, '1'))
      std::cout << ps++ - s << "\n";
   getchar();
   return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2011, 08:06     Проверка наличия символов в строке
Еще ссылки по теме:
Функция проверки наличия повторяющихся символов C++
Проверка наличия двух пар среди выданных игроку карт C++
C++ В строке символов найти максимальную подпоследовательность символов, являющуюся палиндромом
В строке символов установить пробелы вместо символов,номера позиций которых при делении на 6 дают в остатке 3 C++
C++ Дана строка символов, пользователь вводит комбинацию символов проверить сколько раз встечается эта комбинация в строке.

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

Или воспользуйтесь поиском по форуму:
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
11.09.2011, 08:06     Проверка наличия символов в строке #9
Цитата Сообщение от newb_programmer
Задача состоит в том чтобы проверить встречаются ли нужные нам символы в строке
если просто проверить, используй strpbrk()
Yandex
Объявления
11.09.2011, 08:06     Проверка наличия символов в строке
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru