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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2009, 18:03   #11
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Кстати, динамику в третьей задаче можно оформлять и по количеству слагаемых, и по остатку суммы, и по сумме. Ах, да, сейчас исправлю свой первый пост - просматривать надо по ограничениям, до a, а не до n.
LeBron вне форума Ответить с цитированием
Старый 30.10.2009, 18:07   #12
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Цитата:
Сообщение от ОДИНОЧЕСТВО В СЕТИ Посмотреть сообщение
ваше то предложение кодом можно глянуть?
Можно, только осторожно. С моего первого поста можно написать и самостоятельно. Нету авторских наработок - нету готового кода, поэтому сдесь выкладывть не буду. Если хотите - сейчас напишу в личку.
LeBron вне форума Ответить с цитированием
Старый 30.10.2009, 18:24   #13
Nellas
Пользователь
 
Регистрация: 21.10.2009
Сообщений: 11
По умолчанию

я вот так сделал но чет компилироватся не хочет. не пойму почему. на 2 задачу.

procedure TWinForm2.Button1_Click(sender: System.Object; e: System.EventArgs);
var N,M,D,L: single;
X: real;
begin
N := System.Convert.ToSingle(TextBox1.Te xt);
M := System.Convert.ToSingle(TextBox2.Te xt);
D := System.Convert.ToSingle(TextBox3.Te xt);
L := System.Convert.ToSingle(TextBox4.Te xt);
X := L*D*(M+N)-(M*N)*D*D;
TextBox5.Text := ' '+X.ToString;
end;

end.

Последний раз редактировалось Nellas; 30.10.2009 в 18:38.
Nellas вне форума Ответить с цитированием
Старый 30.10.2009, 22:45   #14
Nellas
Пользователь
 
Регистрация: 21.10.2009
Сообщений: 11
По умолчанию

Цитата:
2
Код:
S:= L*D*(M+N)-(M*N)*D*D;
Спасибо помогло) разобрался
Nellas вне форума Ответить с цитированием
Старый 31.10.2009, 00:27   #15
Nellas
Пользователь
 
Регистрация: 21.10.2009
Сообщений: 11
По умолчанию

Цитата:
Сообщение от LeBron Посмотреть сообщение
Можно, только осторожно. С моего первого поста можно написать и самостоятельно. Нету авторских наработок - нету готового кода, поэтому сдесь выкладывть не буду. Если хотите - сейчас напишу в личку.
Напиши пожалуйста в личку.
Nellas вне форума Ответить с цитированием
Старый 31.10.2009, 09:02   #16
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Цитата:
Сообщение от Nellas Посмотреть сообщение
Напиши пожалуйста в личку.
Увижу в теме хотя бы попытку написать то, что я сказал в первом посте - выложу рабочий код. А то непонятно, почему за одних должны писать другие.
LeBron вне форума Ответить с цитированием
Старый 31.10.2009, 10:31   #17
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 823
По умолчанию

Вот собственно код первой задачи...написал,чтобы проснуться))),вроде работает)
Код:
#include <iostream>
using namespace std;
//---------------------------------------------------------------------------

#pragma argsused
 /*
 Одна баночка кока-колы стоит B рублей. Пустую баночку из-под кока-колы можно сдать и получить
 за неё E рублей. Он покупает кока-колу, выпивает её,
 сдает баночку, снова покупает кока-колу и так далее до тех пор, пока имеющихся у него денег
 (после сдачи очередной баночки) хватает на покупку кока-колы.
Сколько всего банок кока-колы он выпьет?
Формат ввода:
Вводится три натуральных числа B, E, R (1<= E<B<=30000, 1 <= R<=30000)
Формат вывода:
Выведите одно число - количество баночек, которое сможет выпить Вася.
*/
int B,E,R;
int main(int argc, char* argv[])
{
	cout<<"B= ";cin>>B;cout<<'\n';
	cout<<"E= ";cin>>E;cout<<'\n';
	cout<<"R= ";cin>>R;cout<<'\n';
	if(R<1 || R>30000)
		{
			cout<<"R neverno,*mi enter";
			getchar();
			return 0;
		}
	if (E<1 || B<1 || E>B || E>30000 || B> 30000)
		{
			cout<<"E ili B neverno,*mi enter";
			getchar();
			return 0;
		}
	if(R<B)
		{
			cout<<"Kypit 0 banok,*mi enter";
			getchar();
			return 0;

		}
	int i=0;
	while (R>=B)
		{
			i++;
			R=R-B+E;
		}
	cout<<"Kypit "<<i<< " banok,*mi enter";
	getchar();
	return 0;
}
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 31.10.2009, 10:48   #18
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Код:
if(R<B)
{
cout<<"Kypit 0 banok,*mi enter";
getchar();
return 0;
}
Этот кусок можно выбросить, тот, который ниже, даст такой же результат.
С такими ограничениями лобовик уложится в доли секунды, там в худшем случае будет всего лиш примерно 30000 итераций. А для серъезного решения я бы предложил хотя бы оптимизацию такого вида
Код:
while c>=a do begin inc(ans,c div a);s:=c div a;c:=c mod a;
c:=c+b*s;end;{c - наша сумма,a -цена,b - сдача,ans - ответ}
- тоесть за 1 раз куплять максимум, и все вместе потом сдавать, а не бегать за каждой отдельно. Получим выиграш даже на "хитрых" тестах не менее, чем в 2 раза, на "обычных" - еще больше.

Последний раз редактировалось LeBron; 31.10.2009 в 12:56.
LeBron вне форума Ответить с цитированием
Старый 31.10.2009, 11:19   #19
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 823
По умолчанию

ну можно и так
Код:
while c>=a do begin inc(ans,c div a);s:=c div a;c:=c mod a;
c:=c+b*s;end;{c - наша сумма,a -цена,b - сдача,ans - ответ}
но тогда не получается выполнить условие
Цитата:
Он покупает кока-колу, выпивает её,
сдает баночку, снова покупает кока-колу и так далее до тех пор, пока имеющихся у него денег
(после сдачи очередной баночки) хватает на покупку кока-колы
Вот думаю над 3-ей задачкой...чистая комбинаторика (которую я почти забыл),в голову пришло такое решение.только не могу сообразить правильное ли оно..(так что не стреляйте в пианиста)
Код:
//вводим переменные и проверяем условия
int kolvo=0;
do
{
   int k=2;
   while(k<=A)
     {
       kolvo+=(n-k);
       k++;
     }
  n=n-A;
  if(n<A) A=n;
}while(n>0);
cout<<"kol-vo "<<kolvo;
Не давай организму поблажки, каждый день тренируй его в шашки..

Последний раз редактировалось Скарам; 31.10.2009 в 12:39.
Скарам вне форума Ответить с цитированием
Старый 31.10.2009, 12:50   #20
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Какое условие не получается выполнить? Это оптимизирванная реализация, а не прямая симуляция. Всегда, когда нам не хватает денег на очередную бутылку - досстаем из широких штанин всю сдачу, и проерям с ней... Поэтому работает верно - по крайней мере, на моих тестах. В сети задачи не видел, поэтому решения с гарантированным АС у меня нету.

Цитата:
Сообщение от Скарам Посмотреть сообщение
Вот думаю над 3-ей задачкой...чистая комбинаторика (которую я почти забыл),в голову пришло такое решение.только не могу сообразить правильное ли оно..(так что не стреляйте в пианиста)
Код:
//вводим переменные и проверяем условия
int kolvo=0;
do
{
   int k=1;
   while(k<=A)
     {
       kolvo+=(n-k);
       k++;
     }
  n=n-A;
  if(n<A) A=n;
}while(n>0);
cout<<"kol-vo "<<kolvo;
На вид явно не то, так как рекомбинирования и как-то все слишком просто выглядит, не пойму, где хранится база предидущих умножений и мультипликаций. Сейчас поищу у себя солюшн, получающий АС по этой задача (точно где-то ее уже решал, слишком извесная), и сверю. А пока - в моих более ранних постах разбор задачи на словах уже есть. Сейчас код может быть выложу.
LeBron вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько задач hvaran Помощь студентам 0 07.07.2009 17:31
Несколько задач. GoldMan Паскаль, Turbo Pascal, PascalABC.NET 1 02.12.2008 15:14
Паскаль, несколько задач. DarkAn Помощь студентам 8 03.11.2008 15:40
[C++] Несколько задач Алиса111 Помощь студентам 1 15.01.2008 03:52
Несколько задач Wilda Паскаль, Turbo Pascal, PascalABC.NET 5 05.12.2007 19:03