Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

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

тебе дать адеквтаный код или я ещё должен думать за ВашихАвторитетов? *импер_заводится*
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 23.07.2010, 00:42   #17
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Пробелы

Тренер по С++.
- А нам тренер сказал делать 5 подходов по 10 Александреску в день.

ЗЫ. Прислушайся к Имперу. Перечитывай его сообщения пока не поймешь.
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (23.07.2010)
Старый 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)
Старый 23.07.2010, 16:37   #19
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Пробелы

Проболжаем тему ламерских вопросов:
#include <iostream>
using namespace std;
int dx[]={0,1,0,-1};
int dy[]={-1,0,1,0};
char m[100][100];
int w,h;
int f()
{
	int n=0;
	for(int i=0;i<w;i++)
	{
		for(int j=0;j<h;j++)
		{
			if(m[i][j]=='*')
			{
					for(int k=0;k<4;k++)
					{
						if(i+dx[k]>=0 && i+dx[k]<w && j+dy[k]>=0 && j+dy[k]<h)
							m[i+dx[k]][j+dy[k]]='*';
					}
			}
		}
	}
	for(int i=0;i<w;i++)
	{
		for(int j=0;j<h;j++)
		{
			if(m[i][j]=='.') n++; 
		}
	}
	return n;
	f();
}
void main()
{
	int mm=0,xod=0;
	cin>>w>>h;
	for(int i=0;i<w;i++)
	{
		for(int j=0;j<h;j++)
		{
			cin>>m[i][j];
		}
	}
	for(int i=0;i<w;i++)
	{
		for(int j=0;j<h;j++)
		{
			if(m[i][j]=='.') mm++;
		}
	}
	while(mm!=0)
	{
		mm=f();
		xod++;
	}
		cout<<xod;
}
Почему когда "*" в верхнем и/или левом ряду/столбце прога выдает ''1" ??
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 13:05.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com