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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Катюня
0 / 0 / 0
Регистрация: 01.05.2009
Сообщений: 22
#1

функция и строки - C++

18.05.2009, 18:27. Просмотров 1078. Ответов 11
Метки нет (Все метки)

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


Заранее спасибо, за помощь)))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rumata
4 / 4 / 0
Регистрация: 10.04.2009
Сообщений: 23
18.05.2009, 19:17     функция и строки #2
Цитата Сообщение от Катюня Посмотреть сообщение
Составить функцию, которая позволяет определить позицию первого вхождения в заданую строку любого символа с другой заданной строки. Результатом работы функции должна быть единица, если первая строка не содержит в себе ни одного символа, что принадлежить другой.


Заранее спасибо, за помощь)))
C++
1
2
3
#include <string>
str.find_first_of("elh");   //для объектов класса string, ищет любой символ из группы и возвращает позицию первого найденного
                //возвращает -1 если не найдено
Катюня
0 / 0 / 0
Регистрация: 01.05.2009
Сообщений: 22
19.05.2009, 22:02  [ТС]     функция и строки #3
спасибо)))

Добавлено через 8 часов 5 минут 30 секунд
вот мой код...но эта функцмя не работает(((((
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
int main(void) {
 int size,i,size2;
 char ryad[30], ryad2[30];
 char *Cr, *Cr2;
   printf("vvedit' ryadok - \n");
  scanf("%s",&ryad);
      size=strlen(ryad);
    for(i=0;i<size;i++){
      *(Cr+i)=ryad[i]; }
printf("vvedit' ryadok - \n");
  scanf("%s",&ryad2);
      size2=strlen(ryad2);
    for(i=0;i<size2;i++){
      *(Cr2+i)=ryad2[i];  }
str.find_first_of("elh");
return 0;
}
Добавлено через 2 минуты 32 секунды
вот мой код...но эта функция не работает....(((
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
int main(void) {
 int size,i,size2;
 char ryad[30], ryad2[30];
 char *Cr, *Cr2;
   printf("vvedit' ryadok - \n");
  scanf("%s",&ryad);
      size=strlen(ryad);
    for(i=0;i<size;i++){
      *(Cr+i)=ryad[i]; }
printf("vvedit' ryadok - \n");
  scanf("%s",&ryad2);
      size2=strlen(ryad2);
    for(i=0;i<size2;i++){
      *(Cr2+i)=ryad2[i];  }
str.find_first_of("elh");
return 0;
}
Gravity
558 / 552 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
19.05.2009, 23:09     функция и строки #4
Цитата Сообщение от Катюня Посмотреть сообщение
Составить функцию, которая позволяет определить позицию первого вхождения в заданую строку любого символа с другой заданной строки. Результатом работы функции должна быть единица, если первая строка не содержит в себе ни одного символа, что принадлежить другой.
А если первое вхождение окажется в первой позиции, тогда тоже возвращать единицу? И как ты тогда определишь когда есть вхождение, а когда нет?
Rumata
4 / 4 / 0
Регистрация: 10.04.2009
Сообщений: 23
20.05.2009, 14:39     функция и строки #5
Цитата Сообщение от Катюня Посмотреть сообщение
спасибо)))
вот мой код...но эта функцмя не работает(((((
find_first_of() - функция для объектов класса string
если тебе нужно с char, то можно так:
C++
1
2
3
4
5
6
int j=0, i=0;
for(i=0; i<strlen(str1); i++)       //строка 1
    for(j=0; j<strlen(str2); j++)   //сторока 2
        if(str1[i]==str2[j])
            return i;   //возвращаем позицию первого символа строки 1, имеющегося в строке 2
return 1;               //возвращаем 1, если не найдено (не логично, может лучше -1)
Катюня
0 / 0 / 0
Регистрация: 01.05.2009
Сообщений: 22
20.05.2009, 17:01  [ТС]     функция и строки #6
А если первое вхождение окажется в первой позиции, тогда тоже возвращать единицу? И как ты тогда определишь когда есть вхождение, а когда нет?



думаю, что не надо возвращать...
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
21.05.2009, 03:34     функция и строки #7
вот вообще
C
1
2
3
4
5
6
7
8
9
#include <string.h>
 
/* CheckCharsLine:  проверяет, есть ли в l символы из chs */
int CheckCharsLine(const char *l, const char *chs)
{
    if (strpbrk(l, chs) == NULL)
        return 0;
    return 1;
}
а тут переделано под условие
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <string.h>
 
/* CheckCharsLine:  проверяет, есть ли в l символы из chs
                    и, если есть, возвращает индекс, начиная с 1 */
int CheckCharsLine(const char *l, const char *chs)
{
    char *p;
 
    if ((p = strpbrk(l, chs)) == NULL)
        return 0;
    return p-l+1;
}
условие неправильно составлено, или неправильно транспортировано сюда, потому что тогда, в случае нахождения, позиция должна отсчитываться со второго символа
Катюня
0 / 0 / 0
Регистрация: 01.05.2009
Сообщений: 22
24.05.2009, 21:01  [ТС]     функция и строки #8
что-то не работает код....помогите пожалуйста((((((((

Добавлено через 1 час 32 минуты 30 секунд
Цитата Сообщение от accept Посмотреть сообщение
вот вообще
C
1
2
3
4
5
6
7
8
9
#include <string.h>
 
/* CheckCharsLine:  проверяет, есть ли в l символы из chs */
int CheckCharsLine(const char *l, const char *chs)
{
    if (strpbrk(l, chs) == NULL)
        return 0;
    return 1;
}
а тут переделано под условие
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <string.h>
 
/* CheckCharsLine:  проверяет, есть ли в l символы из chs
                    и, если есть, возвращает индекс, начиная с 1 */
int CheckCharsLine(const char *l, const char *chs)
{
    char *p;
 
    if ((p = strpbrk(l, chs)) == NULL)
        return 0;
    return p-l+1;
}
условие неправильно составлено, или неправильно транспортировано сюда, потому что тогда, в случае нахождения, позиция должна отсчитываться со второго символа
код не работает...не могу разобраться..(((
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 481
25.05.2009, 01:06     функция и строки #9
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
char st1[80],st2[80],simvol[80];
int len,i,t=1;
printf ("Введите первую строку: ");
gets(st1);
printf ("Введите вторую строку: ");
gets(st2);
printf ("Введите символ из 2 строки: ");
gets (simvol);
len=strlen(st1);
for (i=0;i!=len;i++)
{
if (st1[i]==simvol[0])
{
t=i;
}
}
 
printf ("Ответ:%d",t);
}
так вроде проще только функцию сам сделай тогда, и конкретно не понял условие зачем вводить вторую строку? Если мы так и так берём любой символ?
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.05.2009, 06:11     функция и строки #10
Цитата Сообщение от Катюня
код не работает...не могу разобраться..(((
возьми вторую функцию
C
1
2
    if (!CheckCharsLine(line1, "abcd"))
        printf("line hasn't characters\n");
она возвращает ноль, если ничего не нашла, и индекс найденного, если нашла

Составить функцию, которая позволяет определить позицию первого вхождения
и которая возвращает один, если там нет символов
если она найдёт символ и он будет первый, что она тогда вернёт ?
Катюня
0 / 0 / 0
Регистрация: 01.05.2009
Сообщений: 22
25.05.2009, 17:04  [ТС]     функция и строки #11
Цитата Сообщение от accept Посмотреть сообщение
возьми вторую функцию
C
1
2
    if (!CheckCharsLine(line1, "abcd"))
        printf("line hasn't characters\n");
она возвращает ноль, если ничего не нашла, и индекс найденного, если нашла


и которая возвращает один, если там нет символов
если она найдёт символ и он будет первый, что она тогда вернёт ?
я думаю, что ничего она не вернет ....ты не мог бы помочь написать полный код с этой функцией, пожалуйста...

Добавлено через 7 часов 36 минут 16 секунд
думаю ничего не выводить...ребята помогите написать код, чтоб он заработал)))спасибо))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2009, 06:00     функция и строки
Еще ссылки по теме:

Функция подсчета максимума строки C++
Строки(функция поиска подстроки) C++
C++ Функция, возвращающая слово из строки
Функция по разбитию строки на слова C++
C++ Функция копирования строки

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

Или воспользуйтесь поиском по форуму:
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
26.05.2009, 06:00     функция и строки #12
Цитата Сообщение от Катюня
я думаю, что ничего она не вернет
задание неправильно составлено или записано сюда, потому что противоречивое, так как функция не может ничего не вернуть, потому что уже сказано, что она что-то возвращает
Yandex
Объявления
26.05.2009, 06:00     функция и строки
Ответ Создать тему
Опции темы

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