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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2011, 12:46   #1
krepsh
Новичок
Джуниор
 
Регистрация: 26.04.2011
Сообщений: 8
По умолчанию решение программы методом перебора

дано пятизначное число. Найти минимальное отношение суммы его цифр к произведению первой и последней цифре
Код:
program zadacha;
var
  i: integer;
  max, x: real;
begin
  min := 1 / 10000;
  for i := 1001 to 9999 do begin
    x := (i * 10 + i * 10 * 10 + i * 100 * 10 + i * 1000 * 10 + i) / i;
    if x > min then min := x;
  end;
  WriteLn('минимум = ', min);  
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Примерно так, а дальше что то не очень получается.

Последний раз редактировалось krepsh; 26.04.2011 в 14:42.
krepsh вне форума Ответить с цитированием
Старый 26.04.2011, 13:27   #2
krepsh
Новичок
Джуниор
 
Регистрация: 26.04.2011
Сообщений: 8
По умолчанию

спасибо буду знать на будущее
krepsh вне форума Ответить с цитированием
Старый 26.04.2011, 13:29   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
"Найти минимальное отношение "

WriteLn('Максимум = ', mix);
никаких подозрений в правильности решения не возникает?

Да и вообще, это решение НЕ ВАШЕЙ задачи!
писать решение не хочу, ибо от предложенного оно будет отличаться всего парой-тройкой строк ( ну и другим сообщением, переменную другую взять - не max, а min). И когда будете делить на произведение - не забудьте проверить, что оно (произведение) может быть и равно нулю, а на ноль делить нельзя...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.04.2011, 13:37   #4
krepsh
Новичок
Джуниор
 
Регистрация: 26.04.2011
Сообщений: 8
По умолчанию

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

сам я не очень разбираюсь в программировании. Здесь не зубрить надо а понимать.
закончу курс и переведусь на другое отделение. Не знал что так тяжело будет. Сказали перед поступление что главное математику знать надо вот и повелся потому что матем знаю, Но оказалось этого мало. Если есть возможность а главное время посмотри что можно сделать, а я тоже сидеть сложа руки не буду.

я знаю что задача на пару строк и стыдно обращаться с ней сюда но выходов не особо много...

Код:
program zadacha;
var
  i: integer;
  min, x: real;
begin
  min := 1 / 10000;
  for i := 10001 to 9999 do begin
    x := (i * 10 + i * 10 * 10 + i * 100 * 10 + i * 1000) * i;
    if x > min then min := x;
  end;
  WriteLn('Минимум = ', min);  
end.
Прошу прощение за мою не корректность, первый раз на этом форуме...


форум - не чат. Не надо постить много небольших сообщений подряд. Есть что добавить - нажимайте на своём крайнем сообщении кнопку "Правка" и изменяйте/дописывайте/удаляйте лишнее...

модератор.

Последний раз редактировалось krepsh; 26.04.2011 в 14:44.
krepsh вне форума Ответить с цитированием
Старый 26.04.2011, 14:07   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

нет, у Вас неправильное решение. если переименовать переменную - от этого смысл её НЕ ИЗМЕНИТСЯ!
Вы по прежнему ищите МАКСИМУМ. а надо минимум. Это раз.

второе. Вам нужно искать отношение к произведению первой и последней цифры.
Ткните в коде место, где Вы это произведение вычисляете?!


Вы поймите, мне НЕ СЛОЖНО написать решение. Но даст ли Вам это что-нибудь?!
Если Вы ничего не понимаете в той программе, которую Вы взяли за основу. То точно так же Вы не будете ничего понимать в решении, которое Вам кто-то напишет!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.04.2011, 14:12   #6
krepsh
Новичок
Джуниор
 
Регистрация: 26.04.2011
Сообщений: 8
По умолчанию

да мне просто сдать эту задачу и все учебный год заканчивается и я закончил слава богу с программированием. А если не сложно то напиши пожалуйста.
krepsh вне форума Ответить с цитированием
Старый 26.04.2011, 14:45   #7
krepsh
Новичок
Джуниор
 
Регистрация: 26.04.2011
Сообщений: 8
По умолчанию

а если так как я отредактировал
Код:
program zadacha;
var
  i: integer;
  min, x: real;
begin
  min := 1 / 10000;
  for i := 10001 to 9999 do begin
    x := (i * 10 + i * 10 * 10 + i * 100 * 10 + i * 1000) * i;
    if x > min then min := x;
  end;
  WriteLn('Минимум = ', min);  
end.
krepsh вне форума Ответить с цитированием
Старый 26.04.2011, 14:48   #8
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Код:
program vvm;
var a,n,sum:integer;
      min :real;
begin
   repeat
   readln(a);
   until (a<99999)and(a>10000);
   sum:=(a mod 10 + a div 10 mod 10 + a div 100 mod 10 + a div 1000 mod 10+ a div 10000);
   writeln(sum / (a mod 10)/(a div 10000))  ;
readln;
end.
это по твоему условию
если ты имел вввиду
наименьшее отношение от 10000 до 99999999 тло
Код:
program MoskZohavanKtulhu;
var
  i,n: integer;
  min, x: real;
begin
  max := 1 / 1000;
  for i := 10000 to 99999 do begin
    n:=(i mod 10)*(i div 10000);
    if n<>0 then
           x := (i mod 10 + i div 10 mod 10 + i div 100 mod 10 + i div 1000 mod 10+i div 10000) / n else
        continue;
    if x < min then min := x;
  end;
  WriteLn('Минимум = ', mix);  
end.
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 26.04.2011, 14:52   #9
krepsh
Новичок
Джуниор
 
Регистрация: 26.04.2011
Сообщений: 8
По умолчанию

щас проверю и заранее спасибо.
krepsh вне форума Ответить с цитированием
Старый 26.04.2011, 14:54   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не хотите, значит учиться...
содрать бы с Вас деньги, чтобы стимул учиться появился!

вот решение.
Код:
(*
дано пятизначное число.
Найти минимальное отношение суммы его цифр к произведению первой и последней цифре *)

program Ameba;
var
  i, iMin : longint;
  sum, proiz : integer;
  min : real;
begin
  iMin := -1;
  min := 99999;
  for i := 10000 to 99999 do begin
    sum := (i mod 10 + i div 10 mod 10 + i div 100 mod 10 + i div 1000 mod 10 + i div 10000) ;
    proiz := (i mod 10) * (i div 10000);
    if proiz<>0 then
      if  (sum / proiz) < min then begin
         iMin := i;
         min := (sum / proiz);
      end;
    { if x > max then max := x;}
  end;
  WriteLn('Минимальное отношение = ', min:12:6,' при числе ',iMin);
  readln;
end.
комментировать не буду. ибо такую элементарщину и комментировать нечего.
Да и не хочется лентяям помогать...(я вообще не уверен, что правильно делаю, выкладывая решение! )
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение строк методом перебора в StrinGride'е с возвратом индекса Des Общие вопросы Delphi 6 23.10.2010 14:26
Решить методом перебора (Delphi) marina43 Помощь студентам 8 05.01.2010 17:14
Поиск текста методом последовательного перебора Des Общие вопросы Delphi 5 30.04.2009 16:15
1) Поиск кратчайшего пути в графе методом полного перебора в ширину(очередь) Serega123 Помощь студентам 3 30.10.2008 22:26