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

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

Войти
Регистрация
Восстановить пароль
 
Alex163
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 52
#1

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

11.03.2013, 18:02. Просмотров 905. Ответов 11
Метки нет (Все метки)

Помогите, пожалуйста, с задачей: Нужно ввести с клавиатуры строку длиной не более 200 символов, ещё одну не более 10 символов и номер позиции, начиная с которой ищет первую позицию вхождения второй строки в первую и выводит эту позицию результат пользователю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2013, 18:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как найти позицию вхождения строки? (C++):

В конец каждой строки дописать позицию первого вхождения символа - C++
как правильно сделать что бы я мог вводить любое количество строк ,а не как у меня только на 4 строки и чтобы с этими строками работала...

Найти позицию самого правого вхождения - C++
в чем ошибка? #include <iostream> #include <math.h> #include <cstdio> using namespace std; int main() { ...

Определить позицию первого вхождения в заданную строку какого-либо символа из второй заданной строки - C++
б) Даны две строки произвольного текста. Составить процедуру, позволяющую определить позицию первого вхождения в заданную строку...

Как найти первое вхождение строки и вернуть всю строку(в которой искали) до конца с места вхождения? - C++
Учу С++ по книге Страуструпа, есть такое задание в конце главы : "Напишите функцию char* findx(const char* s, const char* х) , нахо* ...

Найти все вхождения строки s в t - C++
Требуется написать программу, которая выводить на экран идексы всех вхождений строки s в строку t: abababababa aba 0 2 4 6 8 ...

Функция возвращающая позицию первого вхождения числа в массив - C++
Задача: Написать функцию, которая получает в качестве параметров адрес числового массива данных, его размер и число. Функция...

11
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.03.2013, 19:31 #2
Класс string допускается?
0
Croessmah
Эксперт CЭксперт С++
13424 / 7578 / 856
Регистрация: 27.09.2012
Сообщений: 18,668
Записей в блоге: 3
Завершенные тесты: 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;
}
1
Alex163
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 52
11.03.2013, 20:52  [ТС] #4
Да, класс string допускается... А нельзя ли это решить с помощью циклов, а не с помощью функции strstr?
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.03.2013, 22:30 #5
Цитата Сообщение от Alex163 Посмотреть сообщение
А нельзя ли это решить с помощью циклов, а не с помощью функции strstr?
Можно, а зачем?
0
Alex163
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 52
11.03.2013, 23:12  [ТС] #6
Дядька препод говорит, что так проще и делайте лучше так.
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.03.2013, 00:24 #7
Цитата Сообщение от Alex163 Посмотреть сообщение
Дядька препод говорит, что так проще и делайте лучше так.
А вы дядьке скажите, что одна из идей С++ - это максимально облегчить повторное использование кода, чтобы не тратить время на написание того, что давно уже написано и отлажено проффесиональными программистами. Для этого и предназначены стандартные функции, STL и пр.
0
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
Почему?
0
Croessmah
Эксперт CЭксперт С++
13424 / 7578 / 856
Регистрация: 27.09.2012
Сообщений: 18,668
Записей в блоге: 3
Завершенные тесты: 1
12.03.2013, 18:47 #9
Цитата Сообщение от Alex163 Посмотреть сообщение
Но всё время выдает String not found
Название: Безымянный.png
Просмотров: 57

Размер: 2.6 Кб
0
Croessmah
Эксперт CЭксперт С++
13424 / 7578 / 856
Регистрация: 27.09.2012
Сообщений: 18,668
Записей в блоге: 3
Завершенные тесты: 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 нужен?
0
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 минуты
Блин, почему вместе эти две программы не работают?
0
alsav22
5421 / 4816 / 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; 
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2013, 21:28
Привет! Вот еще темы с ответами:

Функция возвращающая позицию первого вхождения числа в массив - C++
Вот задача: Написать функцию, которая получает в качестве параметров адрес числового массива данных, его размер и число. Функция...

Найти все вхождения строки Т в строке S - C++
Найти все вхождения строки Т в строке S Помогите пожалуйста! И если можно на языке Си!!!

Определить позицию первого вхождения в заданную строку какого-либо символа - C++
Помогите составить процедуру, позволяющую определить позицию первого вхождения в заданную строку какого-либо символа из второй заданной...

Вставка элемента в позицию первого вхождения числа, сумма цифр которого кратна 7 - C++
Написал программу с использованием статических и динамических массивов. Пока натолкнулся на такую проблему, что когда мне нужно вставить...


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

Или воспользуйтесь поиском по форуму:
12
Yandex
Объявления
12.03.2013, 21:28
Ответ Создать тему
Опции темы

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