Консультация № 175716
29.12.2009, 12:55
35.00 руб.
0 3 2
Здравствуйте.
Уважаемые эксперты, нужна ваша помощь в решении задачи:
Составить и протестировать функцию, возвращающую номер самого правого вхождения заданного символа во введенную строку. Если символ не входит в строку, должно возвращаться -1.
Заранее спасибо!

Обсуждение

давно
Профессор
230118
3054
29.12.2009, 13:02
общий
aller719:
Можно использовать STL или это должен быть "чистый С"?
Неизвестный
29.12.2009, 13:06
общий
это ответ
Здравствуйте, aller719.
Программу тестировал в MVS2008

Приложение:
#include<iostream>
#include<conio.h>

using namespace std;

int test_func(char *str,char sym)
{
int len=strlen(str);
for(int i=len-1;i>-1;i--)
{
if(str[i]==sym)
return i;
}
return -1;
}

int main ()
{
cout<<"Vvedite stroku : ";
char str[101];
cin.getline(str,100);
cout<<"Vvedite simvol : ";
char symbol;
cin>>symbol;

int ind=test_func(str,symbol);
if(ind!=-1)
cout<<"Index simvola '"<<symbol<<"' v stroke ""<<str<<"" "<<" = "<<ind;
else
cout<<"Simvol '"<<symbol<<"' v stroke ""<<str<<"" ne vstrechaetsya";

_getch();
}
Неизвестный
30.12.2009, 01:50
общий
это ответ
Здравствуйте, aller719.
Напишем функцию, работающую как с char символами, так и с wchar_t символами.
Программа.С++.Тестировал MS VS 2008.
Код:
#include <iostream>

using namespace std;

// Ищет символ согласно условия
template<class _Ty>
int find_last_chr(const _Ty* const str,_Ty what)
{
const _Ty* cur=str;
int result=-1;
while(*cur)
{
if(*cur==what)
{
result=cur-str;
}
++cur;
}
return result;
}

int main()
{
locale::global(locale(""));

char* cstr="This is a string";
wchar_t* wstr=L"This is a wide-char string";

// Пробуем для строк состоящих из char символов
cout<<"В строке ""<<cstr<<"""<<endl;
cout<<"i:"<<find_last_chr(cstr,'i')<<endl;
cout<<"m:"<<find_last_chr(cstr,'m')<<endl;

// Пробуем для строк состоящих из wchar_t символов
wcout<<L"В строке ""<<wstr<<L"""<<endl;
wcout<<L"g:"<<find_last_chr(wstr,L'g')<<endl;
wcout<<L"z:"<<find_last_chr(wstr,L'z')<<endl;

system("PAUSE");
return 0;
}

Вывод программы:
Код:
В строке "This is a string"
i:13
m:-1
В строке "This is a wide-char string"
g:25
z:-1
Форма ответа