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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 29.04.2009, 10:16   #1
Evil Sun
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 11
Печаль перебрать весь массив начиная с 0го и закончить когда последний достиг максимума

Ребят, толи меня заклинило, толи еще чего) вобщем ну есть массив
mas размером N
и соответственно массив минимумов каждого элемента массива mas (masmin) и максимумов (masmax). нуна перебрать каждый элемент массива mas от его минимума до его максимума...
ну и причом так получается.. дошли до максимума элемента - скидываем его в минимум.. а следующий инкрементируем, только если он не максимум, а если и он максимум то его сбрасываем в минимум и след за ним проверяем на дохождение до максимума.
перебрали все - закончили. чегойта я где то не так делаю чую.

Код:
do
	{
		for(mas[0]=masmin[0]; mas[0]<=masmax[0]-1; )
		{
			if (function(mas)<min)
			{
				eps=min-function(mas);
				min=function(mas);
			}
			mas[0]=mas[0]+1.0;
		}
		for(i=1;i<=n-2;i++)
		{
			if ((mas[i]==masmax[i])&&(mas[i+1]!=masmax[i+1]))
			{
				mas[i]=masmin[i];
				mas[i+1]=mas[i+1]+1.0;
				break;
			} else continue;
		}
	}
	while ((i==n-1) && (mas[i]==masmax[i]));
Evil Sun вне форума
Старый 29.04.2009, 14:04   #2
Evil Sun
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 11
По умолчанию

иэхъ... не работает даже если с метками переписать...
я минимум исчу перебором)
Код:
	double min=function(mas);
	long double eps;
	mas[0]=mas[0]+1;
One:	if (function(mas)<min)
		min=function(mas);

	for (int i=0; i<=n-1;)
	{
		if(mas[i]==masmax[i])
		{
			if (i==n-1)
				goto Two;
			else
			{
				mas[i]=masmin[i];
				if (mas[i+1]==masmax[i+1])
					i++;
			}
		}
		else
		{
			mas[i]=mas[i]+1;
			goto One;
		}
	}
Two: return min;
умные люди, помогите)
Evil Sun вне форума
Старый 30.04.2009, 13:59   #3
Evil Sun
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 11
По умолчанию

Задача решена. итак функция полного перебора. универсальная. на любое количество входных переменных. работа с ними представляет собой работу с массивом. перебор ищет минимум) если нужно уменьшить шаг, то нужно брать тип данных подлиннее

Код:
double perebor(double mas[], double masmin[], double masmax[], int n)
{
	long double min=function(mas);
	long double eps;
	mas[0]=mas[0]+1;

	if (function(mas)<min)
		min=function(mas);
int i=1;
while ((i<=n-1)&&(mas[i]!=masmax[i]))
{
		for (mas[0]=masmin[0];mas[0]<=masmax[0];)
		{
			if (function(mas)<min)
			min=function(mas);
			mas[0]=mas[0]+1.0;
		}
		for (int k=1; k<=n-1;)
		{
			if (mas[k]==masmax[k])
			{
				mas[k]=masmin[k];
				i++;
			} else mas[k]++;
			k++;
		}

}
 return min;
спасибо за внимание)
можно топик закрыть как решенный)

Последний раз редактировалось Evil Sun; 30.04.2009 в 14:02.
Evil Sun вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как перебрать все элементы на форме? Аlex Общие вопросы C/C++ 1 07.02.2009 03:46
перебрать все варианты перестановки строк sv_mix Помощь студентам 2 26.07.2008 17:48
при введении любого номера года нашей эры, программа выводит его название за старым японским календарем mobi_vic Общие вопросы C/C++ 1 06.06.2007 12:33
Как узнать когда браузер скачивает, а когда нет? iPod Работа с сетью в Delphi 1 07.05.2007 15:16