powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите,пожалуйста,как решить эту задачу на С++
3 сообщений из 3, страница 1 из 1
Подскажите,пожалуйста,как решить эту задачу на С++
    #33031076
Koldun#
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Условие:
Найти максимум длины таких начальных отрезков заданного слова,которые имеют вид VV,где V-симметричное слово.
подскажите,что да как,а может,кто поможет текст проги написать?
...
Рейтинг: 0 / 0
Подскажите,пожалуйста,как решить эту задачу на С++
    #33031108
baleGos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пример поиска семетрий через массив указателей
Код: plaintext
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.
char **F(char *p,int *&qq)
     {
     char *q;
     int ns= 0 ;
     for(q=p; *q!= 0 ; q++)          
	 {
         for (int k= 1 ; q-k>=p && q[-k]==q[k]; k++); //поиск симметричных фрагментов
         if (k>= 3 ) ns++;                  //подсчёт симметричных фрагментов
	                                  //для определения размерности ДМУ
         } 
     char **s=new char *[ns+ 1 ];       //создание ДМУ
     qq=new int[ns];                
     s[ns]=NULL;                     //ограничитель ДМУ
     int m= 0 ;   
     for (q=p; *q!= 0 ; q++) 
	 {
         for (int k= 1 ; q-k>=p && q[-k]==q[k]; k++);  
         if (k>= 3 )
		s[m]=q-k+ 1 ,                            
		qq[m++]= 2 *k- 1 ;      
	 
        }
     return s;     //возвратить указатель на ДМУ
    }

void main()         //вызов функции
    {
    char **qq;  
    int *ss;
    char *q="This is fragment */abcdedcba*/ and */bsfgfsb*/ and */xtpuptx*/";
    qq=F(q,ss);
    for (int i= 0 ; qq[i]!=NULL; i++) 
	{
	 //printf("%d:%s\n",ss[i],qq[i]);
	for (int j= 0 ;j<ss[i];j++) putchar(qq[i][j]);
	puts("");
	}
    delete qq;
    delete ss;
   }

А это просто одинаковые, то ж через массив указателей(мож надо)
Код: plaintext
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.
char **F(char *p)
	{
	char *q;
	int ns= 0 ;
	int k;
	for (q=p; *q!= 0 ;q++)           
	     {
	     for(k= 0 ;q[ 0 ]==q[k]; k++);
	     if (k>= 3 ) ns++,q+=k- 1 ;
	     } 
	char **s=new char *[ns+ 1 ];       //создание ДМУ
        s[ns]=NULL;                     //ограничитель ДМУ
	int m= 0 ;   
	for (q=p; *q!= 0 ;q++)           
	    {
	    for(k= 0 ;q[ 0 ]==q[k]; k++);
	    if (k>= 3 ) s[m++]=q,q+=k- 1 ;
	    } 
	return s;     
	}
void main()         
	{
	char *q="is aaaaaaaddddddaaaaa ssssseeeezsssssqnd";
	char **qq=F(q);
	for (int i= 0 ; qq[i]!=NULL; i++) 
		{
		for(int j= 0 ;qq[i][ 0 ]==qq[i][j];j++) putchar(qq[i][j]);
		printf("\n");
		}
	delete qq;
	}
...
Рейтинг: 0 / 0
Подскажите,пожалуйста,как решить эту задачу на С++
    #33031150
KOldun#
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
baleGos спасибо,щас надо только со всем разобраться,если что подскажешь?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите,пожалуйста,как решить эту задачу на С++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]