Перейти к содержимому

Фото
- - - - -

программирование в си++


  • Вы не можете создать новую тему
  • Please log in to reply
25 ответов в этой теме

#1 Gulia

Gulia
  • Новобранец
  • 1 сообщений

Отправлено 29 сентября 2009 - 19:54

два натуральных числа называют дружественными, если каждые из них равно сумме всех делителей другого, кроме самого числа. Найти все пары дружественных чисел, лежащих в диапазоне от 200 до 300. Спрограммировать в СИ++
  • 0

#2 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 29 сентября 2009 - 20:51

Gulia, наглость второе счатье :)
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#3 Tiez

Tiez
  • Постоялец
  • 939 сообщений

Отправлено 29 сентября 2009 - 21:14

а смысл если мы тебе подскажем,в голове ничего не отложится.
  • 0
Если ты споришь с идиотом, вероятно то же самое делает и он.

Пожалуйста, ознакомтесь с правилами форума.
Незнание правил не освобождает от ответственности.

Все вопросы пишите в ЛС

#4 Mr. Positive

Mr. Positive
  • Постоялец
  • 850 сообщений

Отправлено 30 сентября 2009 - 15:25

Gulia, Что за универ такой?)
  • 0
Former IAPB 8X.
Bachelor of Eternity

#5 Агент

Агент

    Поставщик загробных мук

  • S-Модератор
  • 23 267 сообщений
  • Откуда:Виймисленд

Отправлено 30 сентября 2009 - 15:33

xxx: привет! чем занимаешься?
yyy: пятый час сайт делаю для твоего зачета...
xxx: ооо... Ванечка ты самый лучший друг!
xxx: <Спасибо большое!> Удачи </Спасибо большое!>
yyy: <Пошла На Хуй!> Спасибо </Пошла На Хуй!>

<Svettik> приветик, можешь мне пожалуйста лабораторную помочь решить
<Jon`> првет…хочешь всю правду?
<Svettik> какую правду
<Jon`> во 1 — когда ты говоришь помочь — это нифига не помочь, а полностью решить, и еще начертить блок схему и обяснить как всё это работает во 2 — уже на протяжении 3 месяцев как я с тобой знаком, решаю тебе каждую неделю по несколько лаб, задач и тд. Я часто абалдевал с этих задач, наверно потому что ты учишься в вышке и там такой уровень, а я в средухе…. Но я запрягал друзей, когда сам не мог разобратся в коде, писал на форумах, спамил в хабе даже,…бывало тратил несколько часов, сидел весь вечер, понимая что ты в этом нифига не шаришь и тока на меня вся надежда. ПОтом я торчал(и сейчас даже до сих пор торчу) тем кто мне помог или ты хули думала всё так просто за спасибо? Да, ты мне всегда говарила огромное спасибо, смайлики там ставила и всякую теорию. ДА, зачет по вышмату у тебя автоматом…зачет по дискретки у тебя автоматом…всё холодись я рад за тебя честно. Я конечно не требовал чтоб ты мне дала за эту всю помощь, ты же приличная девушка. Но блять даже не было при встречах накакой награды там или намека…просто блять как друзья…
<Svettik> У тебя неудачный день выдался?
<Jon`> нет всё холодись, только решай сама свои ебнутые задачи


  • 0

По часам только таблетки надо принимать! А властвовать и унижать можно в любое время!

#6 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 30 сентября 2009 - 19:51

Бюджет ?
  • 0

Вначале делаю, потом думаю :)


#7 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 30 сентября 2009 - 21:14

Дон Агент, зачёт ...
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#8 Gangblang

Gangblang
  • Пользователь
  • 203 сообщений

Отправлено 30 сентября 2009 - 23:37

Злые вы пипец просто...Если б ещё понял,что требуется...в математике я слаб.Попробуй поспрашивать на _http://www.cyberinfo.ru Там и не такое кодят...
  • 0

#9 shb

shb

    New life, much more options

  • Постоялец
  • 5 253 сообщений
  • Откуда:Таллинн

Отправлено 01 октября 2009 - 07:50

математике я слаб

Какая тут математика?

Диапозон маленький, числа маленькие. Можно тупо перебрать для каждого числа все делители, сложить, получить сумму, проверить попадает ли в диапозон. Где математика? Это при условии 200-300

Правда для более крупных чисел - уже от 10к хорошо бы придумать что-нибудь получше :))
  • 0
Мыслящий человек просто обязан время от времени поднимать себя за волосы © Тот самый Мюнгхаузен

Joga Bonito!

#10 Агент

Агент

    Поставщик загробных мук

  • S-Модератор
  • 23 267 сообщений
  • Откуда:Виймисленд

Отправлено 01 октября 2009 - 08:45

алгоритм один и тот же, какая разница. факт в том что делать кому-то зачем-то ради непонятно чего задания? нах надо
  • 0

По часам только таблетки надо принимать! А властвовать и унижать можно в любое время!

#11 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 01 октября 2009 - 11:56

алгоритм один и тот же, какая разница. факт в том что делать кому-то зачем-то ради непонятно чего задания? нах надо

Даже в столь простой задаче есть возможность усовершенствования алгоритма для увеличения скорости его работы.
  • 0

#12 svekla

svekla
  • Новобранец
  • 11 сообщений

Отправлено 05 октября 2009 - 18:29

Вот решение, вроде без ошибок.
#include <iostream>

using namespace std;

int main()
{
	setlocale(0,"");//чтобы отображались русские символы
	cout<<"Программа для нахождения дружественных чисел в диапазоне от 200 до 300"<<endl;
	int a=200,b=300;//диапазон чисел
	int s1=0;//сумма делителей для первого числа
	int s2=0;//сумма делителей для второго числа
	do{for(int i=1;i<a;i++)
		if(a==i*(a/i))
			s1=s1+i;
	  for(int i=200;i<=300;i++)
		  if(s1==i)
			  {for(int i=1;i<s1;i++)
				  if(s1==i*(s1/i))
					  s2=s2+i;
			   if(s2==a)
					 if(s1<s2)//чтобы не повторялись числа 
						 cout<<s1<<" и "<<s2<<" являются дружественными числами."<<endl;
			  }
	a++;//переходим к следующему элементу
	s1=0;//обнуляем
	s2=0;//обнуляем
	}while(a<=b);
	system("pause");
	return 0;
}

Интересно на каком курсе задают такие задачи?.

Сообщение изменено: svekla (05 октября 2009 - 18:30 )

  • 0

#13 Cryptoboy

Cryptoboy
  • Пользователь
  • 280 сообщений

Отправлено 05 октября 2009 - 19:47

svekla, про оператор % слышал что нибудь?:)
  • 0

#14 svekla

svekla
  • Новобранец
  • 11 сообщений

Отправлено 05 октября 2009 - 20:20

% - остаток от деления

Наверное не понравилось a==i*(a/i) ? Можно было тут написать и a%i==0.

Я просто сначала думал так написать, но что-то мне не понравилось, а сейчас вижу что будет и так правильно.
  • 0

#15 dronius

dronius
  • Пользователь
  • 153 сообщений

Отправлено 12 октября 2009 - 19:08

в исходном задании сказано: С++
где темплейты, классы, перегрузка операторов :) ?
  • 0

#16 Mr.Positive

Mr.Positive
  • Пользователь
  • 55 сообщений
  • Откуда:Tallinn

Отправлено 12 октября 2009 - 19:45

dronius, смешная шутка...
  • 0
Bachelor's degree - In progress
TTÜ->IAPB 17

#17 ruslan)

ruslan)
  • Постоялец
  • 1 796 сообщений

Отправлено 12 октября 2009 - 19:50

перегрузка операторов

упал
  • 0

#18 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 12 октября 2009 - 22:07

svekla, чё курим?
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#19 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 13 октября 2009 - 08:50

Нет необходимости искать делители на отрезке a/2<i<a, их там нет
  • 0

#20 Cryptoboy

Cryptoboy
  • Пользователь
  • 280 сообщений

Отправлено 15 октября 2009 - 07:45

Vitalts, нет необходимости вообще просматривать интервал (sqrt(a), a]
  • 0

#21 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 15 октября 2009 - 14:04

Cryptoboy, забываешь о делителях в промежутке (sqrt(a), a/2]. Простой пример. 4^2=16. Теряешь делитель 8 :(
В этом случае необходимо будет находить делители из указанного промежутка путем нахождения частного от числа и найденного делителя из (0, sqrt(a)]. Хотя, для диапазона больших чисел, производительность налицо, ибо уменьшение кол-ва итераций с a/2 до sqrt(a) с лихвой перекрывает затраты для нахождения делителей путем деления. Это еще раз доказывает:

Даже в столь простой задаче есть возможность усовершенствования алгоритма для увеличения скорости его работы.


ЗЫ: ИМХО, единицу также не стоит рассматривать как делитель, хотя это нужно уточнять по заданию.
  • 0

#22 Cryptoboy

Cryptoboy
  • Пользователь
  • 280 сообщений

Отправлено 15 октября 2009 - 14:12

Vitalts, я не говорил, что я забуду какие-то делители. сказал только что тот интервал просматривать не нужно чтобы решить эту задачу
  • 0

#23 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 15 октября 2009 - 14:31

Vitalts, нет необходимости вообще просматривать интервал (sqrt(a), a]

Не вижу никаких намеков на "подводные камни", телепатией не влядею
  • 0

#24 Cryptoboy

Cryptoboy
  • Пользователь
  • 280 сообщений

Отправлено 15 октября 2009 - 14:48

Vitalts, какие подводные камни? это элементарные вещи
  • 0

#25 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 15 октября 2009 - 14:58

Cryptoboy, из твоего поста понял, что ты намерен рассматривать лишь промежуток (0, sqrt(a)], поскольку все делители вроде как находяться на нем, ибо никакой доп. инфы небыло.

Сообщение изменено: Vitalts (15 октября 2009 - 14:59 )

  • 0

#26 Cryptoboy

Cryptoboy
  • Пользователь
  • 280 сообщений

Отправлено 16 октября 2009 - 01:43

Vitalts, да, я намерен рассматривать лишь промежуток (0, sqrt(a)] потому что все остальные делители вычисляются через делители из этого промежутка (как ты и писал).
  • 0