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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2009, 19:58   #1
Staxxx
Новичок
Джуниор
 
Регистрация: 02.01.2009
Сообщений: 2
По умолчанию Обработка строки

суть моего задания очень проста! для начала вводим строку состоящую из букв, цифр и символов. после чего её следует обработать по заданию:
1)Строка меньше 10 символов
2)Удалить маленькие буквы и пунктуацию
3)Цифры окружить пробелами
и выводим.

первые два пункта я выполнил, а вот с третьим проблемы..

вот код до третьего пункта
Код:
#include <string> 
#include <iostream>
using namespace std ;
int main ( ) 
{
	char tmp [80] ;
	do 
	{
		cout << "Vvedite stroku tmp" << endl ;
		cin.getline (tmp,80) ;
		if (!strcmp (tmp,"")) 
			break ;  

	char *px ;
		px = new char [strlen (tmp) +1] ;
		strcpy_s (px,strlen (tmp) +1, tmp) ;
		cout << "Blok raven ->" ;
		char *py, *pz ;
		py = px ;
		pz = py ;
		    if (strlen (px)< 10) // строка меньше 10 символов
		{	
                while (*py)
			{
				    if (ispunct(*py) || islower(*py)) // удаляем пунктуацию и маленькие буковки
					{
					for ( pz=py ; *pz ;pz++)
					*pz = *(pz + 1);
					}
					else
					py++ ;
			}
				
			else cout << "Men'she 10 simvolov"<< endl;
			}
			
			cout << px << endl;
			delete px ;
	}	
					while (1); 
                 return (0);	
}
_______________________
с третьим (не работает, помогите найти ошибку)
Код:
#include <string> 
#include <iostream>
using namespace std ;
int main ( ) 
{
	char tmp [80] ;
	do 
	{
		cout << "Vvedite stroku tmp" << endl ;
		cin.getline (tmp,80) ;
		if (!strcmp (tmp,"")) 
			break ;  

	char *px ;
		px = new char [strlen (tmp) +1] ;
		strcpy_s (px,strlen (tmp) +1, tmp) ;
		cout << "Blok raven ->" ;
		char *py, *pz ;
		py = px ;
		pz = py ;
		    if (strlen (px)< 10) // строка меньше 10 символов
		{	
                while (*py)
			{
				    if (ispunct(*py) || islower(*py)) // удаляем пунктуацию и маленькие буковки
					{
					for ( pz=py ; *pz ;pz++)
					*pz = *(pz + 1);
					}
					else
					py++ ;
			}
				py=px; 
			while (*py)
			{
				if (isdigit (*py)) // цикл окружающий цифры пробелами (работает с ошибкой) 
				{
					for (pz=py+strlen(py) ;pz!=py ; pz--)// смотрим из конца строки
						*(pz+2)=*pz;
					*(pz+1)=' ';
					*(pz+3)=' ';
					py=py+2;
				}
				py=py+1;
			}
			else cout << "Men'she 10 simvolov"<< endl;
			}
			
			cout << px << endl;
			delete px ;
	}	
					while (1); 
                 return (0);	
}
Изображения
Тип файла: jpg dddaa222.jpg (10.7 Кб, 150 просмотров)

Последний раз редактировалось MaTBeu; 02.01.2009 в 21:09.
Staxxx вне форума Ответить с цитированием
Старый 03.01.2009, 00:20   #2
spark-roman
Пользователь
 
Регистрация: 25.10.2008
Сообщений: 20
По умолчанию

Вот функция, вроде работает...Заточи под программу сам
Код:
char * space_digit(char * ch){
     int k=0;
     int len=strlen(ch);
     for (int i=len-1;*(ch+i);i--){
        int n=2;
        if (isdigit(*(ch+i))){
           for (int j=len+k-1;j!=i-1;j--){
               *(ch+j+n)=*(ch+j);
               if (j==i+1){ 
                  *(ch+j+1)=' ';
                  n=1;
               }
               if (j==i){ 
                  *(ch+j)=' ';
                  k+=2;
               } 
           }                                                                          
        }                                                                       
    }
    return ch;
}
spark-roman вне форума Ответить с цитированием
Старый 03.01.2009, 12:30   #3
Staxxx
Новичок
Джуниор
 
Регистрация: 02.01.2009
Сообщений: 2
По умолчанию

окей спасибо
Staxxx вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка текста pvleo Фриланс 4 14.07.2008 05:19
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27
Строки в Паскале Обработка текста quqer Помощь студентам 3 11.03.2008 11:22
Обработка XML строки при загрузке dbf в Delphi SereJa1020 БД в Delphi 1 18.12.2007 18:28
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. vitalik007 Помощь студентам 1 25.09.2007 20:45