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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2010, 15:03   #1
ThisIzGame
Форумчанин
 
Регистрация: 31.08.2009
Сообщений: 161
По умолчанию программа в сложности O(n). C++.

здравстуйте, у меня появилась интересная задачка
условие: по массиву А длиной n составить другой массив В, где В[i] равен произведению всех элементов массива А за исключением A[i].
тоесть В[1] = A[2]*A[3]...
B[2]=A[1]*A[3]...
Решить нужно в сложности O(n);
я её почти решил вот код:
Код:
int main(void)
{
	const int size=4;
	int array[size] = {0,2,3,4};
	int result=1;
	  for(int i=0; i<size; i++)
	  {
		  result*=array[i];
	  }

	  for(int i=0; i<size; i++)
	  {
		  array[i]=result/array[i];
		  cout<<array[i]<<" ";
	  }

getch();
}
отлично работает если в массиве А нет нулевых элементов.
но, если один из элементов =0 то программа вылетает, (деление на 0) помогите доработать программку, хотя б намекните как, а то что-то никак не могу додуматься, + в сложности n
ThisIzGame вне форума Ответить с цитированием
Старый 14.04.2010, 17:12   #2
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

При первом проходе проверяете очередной array[i] на равенство 0 (и, заодно, подсчитываете к-во встреченный нулей в array[]. Если это 0, result для данного i наращивать не надо. Если счётчик нулей достиг двух - можно выходить из цикла: result уже вообще ни на что не повлияет.

Ну и во втором проходе логика чуть более разветвлённой становится...
Vago вне форума Ответить с цитированием
Старый 14.04.2010, 17:59   #3
ThisIzGame
Форумчанин
 
Регистрация: 31.08.2009
Сообщений: 161
По умолчанию

спасибо сейчас буду пробовать
ThisIzGame вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложности с запросом Kolik317 БД в Delphi 5 19.08.2009 12:09
Сложности с вычислениями Adlar Microsoft Office Access 0 23.06.2009 22:20
Задача по Паскалю. 1 уровень сложности. Сергей1 Помощь студентам 2 19.11.2007 22:45