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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2011, 18:58   #1
vlad00777
Пользователь
 
Регистрация: 10.09.2009
Сообщений: 20
По умолчанию Накачайте теорией (работа с текстом)

Всем добрый вечер!
Есть такая задача:

Пусть задано некоторое слово. Начинать просмотр этого слова слева направо, до того не встретятся буквы, которые повторяются. Если такие буквы встретились, пропустить их и продолжать просмотр с конца слова в обратном порядке, пока снова не встретится набор букв, которые повторяются. Если такой набор встретился, продолжить просмотр с того места, которое следует за первым набором повторюючихся букв и т.д. "Протокол" просмотра строки вывести на экран; вместо последовательности букв, которые повторяются выводить символ "_".
НОННИЛЛИОН => НО_НОИ_И

Вообщем я не прошу решить задачу, но есть достаточно много вопросов.
Например:
1.Каким образом можно внести в массив символов эту строку?
2.Какие операторы пригодятся для работы с текстом?
3.Как организовать условие повторения букв?

По 3 пункту есть соображения что:
нужно пользоватся ду вайлом т.е перекидывать символы в новый массив пока не встретяться повторяющиеся буквы, если встретились , то заполнить массив _ и пропустить 2 символа.
Код:
for (i=1;i<размера строки+1;i++)
do
{
просмотр символов и перенос в новый массив
}
while (a[i-1]==a[i])
ну или можно как-то через цикл for организовать и if.
Код:
nomer=0;
nomer1=длина строки;
b:
for (i=nomer;i<nomer1;i++)
{
if (a[i]==a[i+1])  {b[i]='_'; goto a; nomer=i; }  
if (a[i]!=a[i+1]) b[i]=a[i];
}

a:
for (i=длина строки;i>nomer;i--)
{
if (a[i]==a[i-1])  {b[i]='_'; goto b; nomer1=i; }  
if (a[i]!=a[i-1]) b[i]=a[i];
}
Ну как то так. подскажите пожалуйста.

По 1 пункту есть код:
Код:
char *str = "Rabota ne volk v les ne ybeshit", arr[4][4];
    int count = 0;
    for (int i=0;i < 4;i++){
       for (int j=0;j < 4;j++){
          arr[i][j] = str[count++];
       }
    }
Это код для преобразования в матрицу, а если просто в массив символов, то как быть?

Последний раз редактировалось vlad00777; 25.05.2011 в 19:19.
vlad00777 вне форума Ответить с цитированием
Старый 25.05.2011, 20:03   #2
vlad00777
Пользователь
 
Регистрация: 10.09.2009
Сообщений: 20
По умолчанию

С 1 и 2 вопросом разобрался.
Кто подскажет условие правильное или нет?
vlad00777 вне форума Ответить с цитированием
Старый 26.05.2011, 00:13   #3
vlad00777
Пользователь
 
Регистрация: 10.09.2009
Сообщений: 20
По умолчанию

Условие кто-то подскажет правильное для просмотра строки с лева на право, а затем с право налево и т.д пока не просмотрится вся строка?
Код:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
main(int argc, char* argv[])
{
int nomer,nomer1;
char *stroka;
char *b;
printf("vvedite stroku");
gets(stroka);
 int i,j,result;
 result=strlen(stroka);
    char *str = stroka, arr[999];
    int count = 0;
     for ( i=0;i < result;i++){
	arr[i] = str[count++];
	 }


//otdelenie simvolov vverhu

nomer=0;
nomer1=result;
b:
for (i=nomer;i<nomer1;i++)
{
if (arr[i]==arr[i+1])  {b[i]='_'; nomer=i;  goto a; }
if (arr[i]!=arr[i+1]) b[i]=arr[i];
if (nomer1<=2) goto c;
}

a:
for (i=nomer1;i>nomer+2;i--)
{
if (arr[i]==arr[i-1])  {b[i]='_'; nomer1=i; goto b; }
if (arr[i]!=arr[i-1]) b[i]=arr[i];
if (nomer1<=2) goto c;
}

c:
 for (i=0;i<result;i++) {
 count<<b[i]<< ' ';
 count<< '\n';
 }

 for (i=0;i<result;i++) {
 printf("razdelenie stroki v massiv");
 count<<arr[i]<< ' ';
 count<< '\n';
 }


    getch();
return 0;
}
Вот такой текст программы но она не работает.
vlad00777 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с текстом. Andrew101095 Помощь студентам 11 05.03.2011 15:43
Работа с текстом С++ Verwolf Помощь студентам 4 02.11.2009 17:18
Работа с текстом dimon_home Паскаль, Turbo Pascal, PascalABC.NET 2 05.06.2009 13:17
Работа с текстом MSD Общие вопросы Delphi 28 05.05.2009 17:56