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

Как найти позицию вхождения строки? - C++

Восстановить пароль Регистрация
 
Alex163
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 52
11.03.2013, 18:02     Как найти позицию вхождения строки? #1
Помогите, пожалуйста, с задачей: Нужно ввести с клавиатуры строку длиной не более 200 символов, ещё одну не более 10 символов и номер позиции, начиная с которой ищет первую позицию вхождения второй строки в первую и выводит эту позицию результат пользователю.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.03.2013, 19:31     Как найти позицию вхождения строки? #2
Класс string допускается?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11827 / 6806 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
11.03.2013, 20:16     Как найти позицию вхождения строки? #3
Как вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cstring>
 
int main(){
    char str[201];
    char findstr[11];
    std::cout<<"Enter first string ->";
    std::cin.getline(str,200);
    std::cout<<"Enter second string ->";
    std::cin.getline(findstr,10);
    char *p=strstr(str,findstr);
    if(p)
        std::cout<<(p-str+1)<<std::endl;
    else
        std::cout<<"String not found"<<std::endl;
}
Alex163
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 52
11.03.2013, 20:52  [ТС]     Как найти позицию вхождения строки? #4
Да, класс string допускается... А нельзя ли это решить с помощью циклов, а не с помощью функции strstr?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.03.2013, 22:30     Как найти позицию вхождения строки? #5
Цитата Сообщение от Alex163 Посмотреть сообщение
А нельзя ли это решить с помощью циклов, а не с помощью функции strstr?
Можно, а зачем?
Alex163
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 52
11.03.2013, 23:12  [ТС]     Как найти позицию вхождения строки? #6
Дядька препод говорит, что так проще и делайте лучше так.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.03.2013, 00:24     Как найти позицию вхождения строки? #7
Цитата Сообщение от Alex163 Посмотреть сообщение
Дядька препод говорит, что так проще и делайте лучше так.
А вы дядьке скажите, что одна из идей С++ - это максимально облегчить повторное использование кода, чтобы не тратить время на написание того, что давно уже написано и отлажено проффесиональными программистами. Для этого и предназначены стандартные функции, STL и пр.
Alex163
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 52
12.03.2013, 18:42  [ТС]     Как найти позицию вхождения строки? #8
Проблемка всё таки выходит...Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
char str[201];
    char findstr[11];
    std::cout<<"Enter first string ->";
    std::cin.getline(str,200);
    std::cin.ignore();
    std::cout<<"Enter second string ->";
    std::cin.getline(findstr,10);
    std::cin.ignore();
    char *p=strstr(str,findstr);
    if(p)
        std::cout<<(p-str+1)<<std::endl;
    else
        std::cout<<"String not found"<<std::endl;

Но всё время выдает String not found
Почему?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11827 / 6806 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
12.03.2013, 18:47     Как найти позицию вхождения строки? #9
Цитата Сообщение от Alex163 Посмотреть сообщение
Но всё время выдает String not found
Название: Безымянный.png
Просмотров: 55

Размер: 2.6 Кб
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11827 / 6806 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
12.03.2013, 18:53     Как найти позицию вхождения строки? #10
Цитата Сообщение от Alex163 Посмотреть сообщение
C++
1
2
3
4
5
    std::cin.getline(str,200);
    std::cin.ignore();
    std::cout<<"Enter second string ->";
    std::cin.getline(findstr,10);
    std::cin.ignore();
И зачем тут ignore нужен?
Alex163
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 52
12.03.2013, 20:37  [ТС]     Как найти позицию вхождения строки? #11
Обалдеть...Я в работаю в dev C++ и у меня постоянно выдает not found, а без игнора у меня поочередно выдает
Enter first string ->Enter second string ->String not found
вот така хрень

Добавлено через 17 минут
Блин...тут вот в чём проблема...По отдельности все нормально работает, а если совмещаю две программы, то вторая часть перестает работать:
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
#include "stdafx.h"
#include "iostream"
#include "cstdlib"
#include "cstring"
#include "windows.h"
 
using namespace System;
 
int main()
{
    int N,n,k_Min=0,k_Max=0;
double A[10],max,min;
scanf("%d",&N);
printf("Vvedite elementy massiva \n");
for (int i=0; i<N; i++){
printf("A[%d]= ",i);
scanf("%lf", &A[i]);
} 
max=A[0];min=A[0];
for (int i = 0; i < N; i++)
{if (A[i] > max)
max = A[i];
if (A[i] < min)
min = A[i]; }
for (int i = 0; i < N; i++)
 
if (A[i]==max)k_Max++;
else 
if (A[i]==min)k_Min++;
 
 
std::cout << "min=: " << min << " vstrechaetsia " <<k_Min << " raz"<<std::endl ; 
std::cout << "max=: " << max<< " vstrechaetsia " <<k_Max << " raz"<<std::endl ; 
    
char str[201];
    char findstr[11];
    std::cout<<"Enter first string ->";
    std::cin.getline(str,200);
    std::cout<<"Enter second string ->";
    std::cin.getline(findstr,10);
    char *p=strstr(str,findstr);
    if(p)
        std::cout<<(p-str+1)<<std::endl;
    else
        std::cout<<"String not found"<<std::endl;
        system("PAUSE >> null"); 
return 0; 
}
 Комментарий модератора 
Не забывайте выделять код тегами подсветки!


Добавлено через 1 час 22 минуты
Блин, почему вместе эти две программы не работают?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2013, 21:28     Как найти позицию вхождения строки?
Еще ссылки по теме:

C++ Найти все вхождения строки P в текст T, используя наивный алгоритм поиска
Процедура, позволяющая определить позицию первого вхождения в заданную строку какого-либо символа из второй C++
C++ Строки: найти порядковые номера первого и последнего вхождения символа x

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.03.2013, 21:28     Как найти позицию вхождения строки? #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
#include "stdafx.h"
#include "iostream"
#include "cstdlib"
#include "cstring"
#include "windows.h"
 
using namespace System;
 
int main()
{
    int N,n,k_Min=0,k_Max=0;
double A[10],max,min;
scanf("%d",&N);
printf("Vvedite elementy massiva \n");
for (int i=0; i<N; i++){
printf("A[%d]= ",i);
scanf("%lf", &A[i]);
} 
max=A[0];min=A[0];
for (int i = 0; i < N; i++)
{if (A[i] > max)
max = A[i];
if (A[i] < min)
min = A[i]; }
for (int i = 0; i < N; i++)
 
if (A[i]==max)k_Max++;
else 
if (A[i]==min)k_Min++;
 
 
std::cout << "min=: " << min << " vstrechaetsia " <<k_Min << " raz"<<std::endl ; 
std::cout << "max=: " << max<< " vstrechaetsia " <<k_Max << " raz"<<std::endl ; 
    
char str[201];
    char findstr[11];
    std::cout<<"Enter first string ->";
getchar();
    std::cin.getline(str,200);
    std::cout<<"Enter second string ->";
    std::cin.getline(findstr,10);
    char *p=strstr(str,findstr);
    if(p)
        std::cout<<(p-str+1)<<std::endl;
    else
        std::cout<<"String not found"<<std::endl;
        system("PAUSE >> null"); 
return 0; 
}
Yandex
Объявления
12.03.2013, 21:28     Как найти позицию вхождения строки?
Ответ Создать тему
Опции темы

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