Тема: Пробелы
Показать сообщение отдельно
Старый 23.07.2010, 02:04   #18
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Пробелы

Вообще, задача о перестановках несолкько усложняет реализацию. Нам необходимо забраковывать сочетания с одинаковыми цифрами в числе (типа 001 010 100). Можно конечно сгенерить все состояния слова и отсеять лишние - но это ппц костыль.
Есть один вариант на примете - но хотелсоь бы его подшлифовать. Кстати, вот весь код (помимо генрации), сделанный по моим советам.
#include<iostream.h>
#include<string.h>
#include<iomanip.h>
#include<malloc.h>
#include<conio.h>


int fact(int a){
	if(a<=1)return 1;
	int s=1;
	for(int i=2;i<=a;i++){
		s*=i;
	}
	return s;
}

void main(){
	cin>>resetiosflags(ios::skipws);
	int act_indx=0;
	int i,j,k;
	int sz;
	char *s=new char[1];
	char b;
	int N,P;
	while(true){
		cin>>b;
		if(b==10){break;}
		s[act_indx]=b;
		act_indx++;
		s=(char*)realloc(s,act_indx+1);
	}
	cout<<"input - ok\n";
	for(i=0;i<act_indx;i++){
		cout<<s[i];
	}
	cout<<endl;
	sz=act_indx;
	for(i=0;i<sz-1;i++){
		b=s[i];
		for(j=i+1;j<sz;j++){
			if(b==s[j]){
				for(k=j;k<sz-1;k++){
					s[k]=s[k+1];
				}
				sz--;
				j--;
			}
		}
	}
	cout<<"compress ok\n";
	for(i=0;i<sz;i++){
		cout<<s[i];
	}
	cout<<endl;
	N=sz;
	P=fact(N);
	cout<<"total="<<P<<endl;
	char *W=new char[N];
	//
//---------------- =((
	//
	delete[]s;
	delete[]W;
	

	getch();
}
комменатриев нет - это плохо
имена переменных - неинутивны
код слабо фоматирован - жуть
нет всяческих обёрточек-контейнеров типа CString - олд_скуловое перевыделение рулит
привычные манипуляторы потока - чсв овер9к
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
den (23.07.2010)