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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2009, 22:55   #1
Arcueid1691
Пользователь
 
Аватар для Arcueid1691
 
Регистрация: 31.05.2009
Сообщений: 97
По умолчанию объясните, пожалуйста..

разбираю пример программы. Программа разбивает строку на отдельные слова. В этом фрагменте кода создается массив слов
Код:
char **mass_str=new char*[gap]; // gap - кол-во пробелов
int befor=0;
int next=0;
i_str=str; //увеличивая i_str  перемещаемся по строке

for(int i=0; i<gap; i++)
	mass_str[i]=0; // обнуляем пройденый эл-т
	for(next=0; ; i_str++, next++) 
	{
	 if(isalpha(*i_str)!=2 && !isdigit(*i_str)) // вот эта строка не понятна
            
	 { 
	  befor++;
	 
	  if(befor>1){  --i;
					--gap;
					--next;}
	  breack;
	 }
	 befor=0;
	}


	
}
поясните, пожалуйста, указанную строку
спят подружки вредные безмятежным сном,
Снятся мышкам хлебные крошки под столом, Буратинам - досточки, кошкам - караси,
Всем собакам - косточки, программистам - Си (с)
Arcueid1691 вне форума Ответить с цитированием
Старый 16.12.2009, 23:36   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

if(isalpha(*i_str) != 2 && !isdigit(*i_str)) - Если символ, адресованный i_str не маленькая буква и не цифра. Вроде так )
netrino вне форума Ответить с цитированием
Старый 17.12.2009, 00:35   #3
Arcueid1691
Пользователь
 
Аватар для Arcueid1691
 
Регистрация: 31.05.2009
Сообщений: 97
По умолчанию

В попытках разобраться в коде совершенно запуталась Не могли бы вы помочь? Это функция которая сортирует слова в предложении по алфавиту.
Код:
struct word{           //структура понятна
	int w_long;
	int w_ind;
	char w_start_istr;
};

char* sorting(char** mas_istr,int size)                // вот эта часть                                              совершенно не понятна (( 
{
	word* mas_istr_array = new word[size];
	word* pw=mas_istr_array;
	char** wds=mas_istr;
	
	for(int i=0; pw!=(mas_istr_array+size); pw++,i++)
	 {
		pw->w_long=strlen(*wds);
		pw->w_ind=i;
		pw->w_start_istr=*wds[0];
		wds+=1;
	 }
	pw=0;
	pw=mas_istr_array;

	for(int j=0;j<size;++j)
	{
		for(int i=0;i<size-1;++i)
		{
			if((int)(pw+i)->w_start_istr>(int)(pw+i+1)->w_start_istr)
			{
				word temp=*(pw+i);
				*(pw+i)=*(pw+i+1);
				*(pw+i+1)=temp;
			}
		}
	}
	
	char* end_str=new char[255];
	end_str[0]='\0';
	
	for(int j=0;j<size;++j)
	{
		strcat(end_str,mas_istr[mas_istr_array[j].w_ind]);
		strcat(end_str," ");
	}
	_getch();
	
	return end_str;
}

char* search(char* str)        // с этой частью проблем кажется нет
{
	int gap=1;
    char* istr=str;
        while(*istr!='\0')
        {
            if(!isalpha(*istr)&&!isdigit(*istr))
			
                gap++;
            
            istr++;
        }

    char** mas_istr = new char*[gap];
    int before=0;
    int next=0;
    istr=str;
	
	for(int word=0;word<gap;++word)
	{
        mas_istr[word]=0;
        
		for(next = 0 ; ;istr++, next++)
        {
            if(isalpha(*istr)!=2 && !isdigit(*istr))               
            {
                before++;
			
                if(before>1){--word;
                             gap--;
                             next--;}
                
				break;
				
            }
            before=0;
        }
		
        if(next>0)
		{
		
			mas_istr[word]=new char[next];
			next++;

            strncpy(mas_istr[word],(istr-next+1),next-1);
			mas_istr[word][next-1] = '\0';
        }
            istr++;
    }
	
	return sorting(mas_istr,gap);
}
спят подружки вредные безмятежным сном,
Снятся мышкам хлебные крошки под столом, Буратинам - досточки, кошкам - караси,
Всем собакам - косточки, программистам - Си (с)
Arcueid1691 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните пожалуйста bunya Общие вопросы C/C++ 5 12.01.2009 22:02
объясните, пожалуйста brainstorm Помощь студентам 10 14.10.2008 23:49