HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 26.12.2009, 22:05
043nKRuT0y
Участник форума
Регистрация: 31.10.2007
Сообщений: 213
Провел на форуме:
394522

Репутация: 14
Thumbs up

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()
 
Ответить с цитированием

  #2  
Старый 26.12.2009, 22:36
Algol
Регистрация: 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;  		
}
Интересно, а что данная функция считает ? Мозгом чувствую что что-то интересное, но что именно - понять не могу
 
Ответить с цитированием

  #3  
Старый 27.12.2009, 00:03
STIFFmaster
Новичок
Регистрация: 12.12.2009
Сообщений: 10
Провел на форуме:
14658

Репутация: 0
По умолчанию

В програме должно выводить сколько раз встречается подстрока в строке.
 
Ответить с цитированием

  #4  
Старый 27.12.2009, 00:59
043nKRuT0y
Участник форума
Регистрация: 31.10.2007
Сообщений: 213
Провел на форуме:
394522

Репутация: 14
По умолчанию

дык - так просто такую проверку добавь:
Код:
if(ch == strlen(podstroka)){
         kol_podstrok ++;
         ch = 0;
}
То есть если количество совпадений без прерывно равно длине подстроки значить ето она , и мы увеличиваем счетчик подстрок, и обнуляем счетчик совпадений дабы заново искать подстроку....
 
Ответить с цитированием

  #5  
Старый 27.12.2009, 13:27
Algol
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме:
2050916

Репутация: 0


По умолчанию

Цитата:
Сообщение от 043nKRuT0y  
дык - так просто такую проверку добавь:
Код:
if(ch == strlen(podstroka)){
         kol_podstrok ++;
         ch = 0;
}
То есть если количество совпадений без прерывно равно длине подстроки значить ето она , и мы увеличиваем счетчик подстрок, и обнуляем счетчик совпадений дабы заново искать подстроку....
У тебя не ищется подстрока. у тебя считется число совпадающих символов в двух строках.
 
Ответить с цитированием

  #6  
Старый 27.12.2009, 14:23
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

ss88 - http://en.wikipedia.org/wiki/Bit_field
 
Ответить с цитированием

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

Репутация: 0
По умолчанию

Помогите пожалуйста, скоро зачет, а массивы для меня - темный лес. К четвергу все задачи надо прорешать, помогите хотя бы несколько сделать.
Условия по ссылке
http://narod.ru/disk/16374301000/zachet.doc.html
 
Ответить с цитированием

  #8  
Старый 27.12.2009, 18:03
Ra$cal
Постоянный
Регистрация: 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..
 
Ответить с цитированием

  #9  
Старый 27.12.2009, 18:29
«Adult Holding»
Banned
Регистрация: 07.10.2009
Сообщений: 128
Провел на форуме:
725524

Репутация: 63
По умолчанию

Господа, напишите код на Visual С++:
Вывождение графика ф-ций: y=3x-cos(x) - 1

ОЧЕНЬ СРОЧНО И НУЖНО!!! Буду дико благодарен!

Если можно без послания на *** и гугл) Нужно, что бы компилилось.
 
Ответить с цитированием

  #10  
Старый 27.12.2009, 19:35
Retimiled
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..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Американским студентам запретили пользоваться Skype KPOT_f!nd Мировые новости. Обсуждения. 1 28.09.2006 03:47
Любителям квестов сюда!! FoX's Болталка 10 25.01.2005 20:42



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.