ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

26.12.2009, 22:05
|
|
Участник форума
Регистрация: 31.10.2007
Сообщений: 213
Провел на форуме: 394522
Репутация:
14
|
|
2 STIFFmaster :
попробуй так :
Код:
void main()
{
char stroka[30];
char podstroka[6];
int ch=0;
cout<<" vvedite stroky: ";
cin.getline(stroka, 30);
cout<<"\n vvedite iskomyjy podstroky: ";
cin.getline(podstroka, 6);
for ( int i = 0; i < strlen(stroka); i++)
for(int j = 0; j < strlen(podstroka); j++){
if(stroka[i] == podstroka[j]) ch++;
}
cout<<ch;
}
Так должно получиться .... я только точно не помню правильно ли я указал функции определения длинны строки - то ли strlen() то ли len()
|
|
|

26.12.2009, 22:36
|
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме: 2050916
Репутация:
0
|
|
Сообщение от 043nKRuT0y
2 STIFFmaster :
попробуй так :
Код:
void main()
{
char stroka[30];
char podstroka[6];
int ch=0;
cout<<" vvedite stroky: ";
cin.getline(stroka, 30);
cout<<"\n vvedite iskomyjy podstroky: ";
cin.getline(podstroka, 6);
for ( int i = 0; i < strlen(stroka); i++)
for(int j = 0; j < strlen(podstroka); j++){
if(stroka[i] == podstroka[j]) ch++;
}
cout<<ch;
}
Интересно, а что данная функция считает ? Мозгом чувствую что что-то интересное, но что именно - понять не могу 
|
|
|

27.12.2009, 00:03
|
|
Новичок
Регистрация: 12.12.2009
Сообщений: 10
Провел на форуме: 14658
Репутация:
0
|
|
В програме должно выводить сколько раз встречается подстрока в строке.
|
|
|

27.12.2009, 00:59
|
|
Участник форума
Регистрация: 31.10.2007
Сообщений: 213
Провел на форуме: 394522
Репутация:
14
|
|
дык - так просто такую проверку добавь:
Код:
if(ch == strlen(podstroka)){
kol_podstrok ++;
ch = 0;
}
То есть если количество совпадений без прерывно равно длине подстроки значить ето она , и мы увеличиваем счетчик подстрок, и обнуляем счетчик совпадений дабы заново искать подстроку....
|
|
|

27.12.2009, 13:27
|
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме: 2050916
Репутация:
0
|
|
Сообщение от 043nKRuT0y
дык - так просто такую проверку добавь:
Код:
if(ch == strlen(podstroka)){
kol_podstrok ++;
ch = 0;
}
То есть если количество совпадений без прерывно равно длине подстроки значить ето она , и мы увеличиваем счетчик подстрок, и обнуляем счетчик совпадений дабы заново искать подстроку....
У тебя не ищется подстрока. у тебя считется число совпадающих символов в двух строках.
|
|
|

27.12.2009, 14:23
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
ss88 - http://en.wikipedia.org/wiki/Bit_field
|
|
|

27.12.2009, 15:45
|
|
Новичок
Регистрация: 23.08.2006
Сообщений: 1
Провел на форуме: 73653
Репутация:
0
|
|
|
|
|

27.12.2009, 18:03
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
Код:
bool strcheck(const char* src, const char* sub){
while ( (*src == *sub) && *sub ){
src++;
sub++;
}
return *sub == 0;
}
int find_substr(const char* text, const char* sub){
const char* cur_text = text;
const char* end_text = text + strlen(text) - strlen(sub);
int position = -1;
while(cur_text++ != end_text){
if(strcheck(cur_text, sub)){
position = cur_text - text;
break;
}
}
return position;
}
int main(){
char text[] = {"123 111 345 321 654"};
char sub[] = {"655"};
int position = find_substr(text, sub);
if(position != -1){
cout << "position: " << position << ", substring = " << sub << endl;
}
else{
cout << "substring not found" << endl;
}
return 0;
}
ps: strcheck можете заменить на вызов strcmp. главное соблюдать порядок параметров - первым идет текст, вторым искомая подстрока.
Последний раз редактировалось Ra$cal; 27.12.2009 в 18:08..
|
|
|

27.12.2009, 18:29
|
|
Banned
Регистрация: 07.10.2009
Сообщений: 128
Провел на форуме: 725524
Репутация:
63
|
|
Господа, напишите код на Visual С++:
Вывождение графика ф-ций: y=3x-cos(x) - 1
 ОЧЕНЬ СРОЧНО И НУЖНО!!! Буду дико благодарен!
Если можно без послания на *** и гугл) Нужно, что бы компилилось.
|
|
|

27.12.2009, 19:35
|
|
Banned
Регистрация: 24.12.2009
Сообщений: 141
Провел на форуме: 487460
Репутация:
45
|
|
2 algol
Код:
...
int flag;
for(i=0,ch=0;*(stroka+i)!=0;i++)
{
for(int j=0,flag=0;*(podstroka+j)!=0 && flag==0 && *(stroka+i+j)!=0;j++)
if(*(stroka+i+j)!=*(podstroka+j))
flag=1;
if(flag==0)
ch++;
}
2-nd verson  придумываю для вас прямо тут не проверяя .... так что проверяйте!
Код:
#include <stdio.h>
void st(char *str1,char *str2,int l, int *sum)
{
if(*str1==0)
{
if(*str2==0)
*sum++;
}
else
if(*str2==0)
*sum++;
else
if(*str1==*str2)
st(str1+1,str2+1,l+1,sum);
else
st(str1-l+1,str2-l,0,sum);
}
int main()
{
int sum=0;
char str[]="srvferv ergergt4etr retgbrth4 wfwrefg4ert5 wqede";
char stt[]="er";
st(str,stt,0,&sum);
printf("Совпадений:%d",sum);
}
Последний раз редактировалось Retimiled; 27.12.2009 в 20:09..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|