Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2009, 18:02   #1
Wia
Пользователь
 
Регистрация: 06.12.2008
Сообщений: 79
Восклицание Строки в С++

Помогите решить задачу на С++:Нужно удалить подстроку из строки и подсчитать количесво удалений.Вот что я написала:
Код:
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>

char *strstr_rem(char *string,char *substring)
	{
	int i,j,k,l=0;
	for(i=0;string [i]&&(l==0);i++)
	for(j=i,k=0;string[j]==substring[k];j++,k++)
	if(!substring[k+1])
	l=i;
	if(l!=0)
		{
		for(k=0;substring[k];k++)
		for(j=l,i=l+k;string[i];j++,i++)
		string[j]=string[i];
		string[i]=NULL;
		}
	cout<<string;
	}
char *strstr_cnt(const char *string, const char *substring)
	{
	int i,j,k,c=0;
	for(i=0;string[i];i++)
	for(j=i,k=0;string[j]==substring[k];j++,k++)
	if(!substring [k+1])
	c++;
	cout<<c;
	}
void main()
	{
	clrscr();
	char string[20],substring[20];
	cout<<"Vvedite stroky"<<endl;
	cin.getline(string,20);
	cout<<"Vvedite podstroky"<<endl;
	cin.getline(substring,20);
	strstr_rem(string,substring);
        cout<<endl;
	strstr_cnt(string,substring);
	getch();
	}
Wia вне форума Ответить с цитированием
Старый 15.05.2009, 22:35   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот, как вариант. Написано, наверное, криво, и можно сделать лучше, но так работает (вы тогда попытайтесь допилить, чтобы было более красиво).
Код:
#include <conio.h>
#include <iostream.h>
#include <string.h>

int strstr_rem(char *string, char *substring)
{
	int count = 0;
	int len,l,i,j,k,length;

	s = string;
	len = strlen(substring);
	length = strlen(string);

	for(i=0; string[i]; i++)
	 {
   if(string[i]==substring[0])
    {
     l=1;
     for(j=i,k=0; substring[k] && string[j]; k++,j++)
       if(string[j]!=substring[k])
        {
         l = 0;
         break;
        }

     if(l==1 && k==len)
      {
       for(j=i; string[j+len]; j++)
        string[j] = string[j+len];
      length -= len;
      string[length]=0;
      count++;
      i--;
      }
    }

  }
cout<<string;
return count;
}

//------------

int main()
	{
	char string[20],substring[20];
	int count;
 cout<<"Vvedite stroky"<<endl;
	cin.getline(string,20);
	cout<<"Vvedite podstroky"<<endl;
	cin.getline(substring,20);

	count = strstr_rem(string,substring);
	cout<<endl<<count<<endl;

	getch();
	return 0;
	}
Пример ввода:
Код:
Vvedite stroky
asdf asdf asd
Vvedite podstroky
as
df df d
3
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
строки. falker Общие вопросы C/C++ 1 15.05.2009 16:46
Строки. Как вывести часть строки? Anfall Общие вопросы Delphi 7 26.02.2009 09:10
Строки delete Общие вопросы C/C++ 7 18.12.2008 22:27
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. vitalik007 Помощь студентам 1 25.09.2007 20:45