• Поиск по форумам
  •  
      Этот форум закрыт. Новый форум располагается по адресу http://forum.use.ru  

      Nordnet Форум
      Программирование
      Помогите с программкой на паскале
     
    Страницы: 1
    Автор Тема:  Помогите с программкой на паскале
    AlexS 

    регистрация: 29-05-2006 в 17:54
    сообщений: 1

    отправлено 29-05-2006 17:55    
    Люди,мне тут задачку нужно на паскале написать.
    Помогите плиз,очень нужно.

    Только я на 2-ом курсе,так что по возможности без массивов,создания пользовательских функций и т.д.

    Вот задачка:

    Женщина шла на базар продавать яйца.Её случайно сбил с ног всадник,в результате чего все яйца разбились.Всадник предложил оплатить убытки и спросил,сколько у неё было яиц.Женщина сказала,что точного числа не помнит,но когда она брала яйца парами, то оставалось одно яйцо.Одно яйцо оставалось также когда она брала по 3,4,5 и 6 яиц,но когда она брала по 7 штук,то в остатке ничего не было.

    Какое минимальное число яиц могло быть в корзине?

    Помогите,а то я уже запарился
    Svan 

    регистрация: 12-11-2001 в 17:25
    сообщений: 3141

    отправлено 29-05-2006 18:00    
    Граждане, это всего лишь пиар МТС — не поддавайтесь.

    А яйцев было 301 штука, как минимум.
     
    Сообщение было изменено автором 29-05-2006 в 18:11
    Force 

    регистрация: 06-12-2001 в 00:09
    сообщений: 20128

    отправлено 29-05-2006 18:15    
    begin
     WriteLn(26246521);
    end.
     
    
    NuINu 

    регистрация: 09-04-2004 в 16:36
    сообщений: 2450

    отправлено 29-05-2006 18:19    
    Так это блин, загадка какая то, а не задача ;-)))

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

    у < 1000
    у = 7
    проверяем на делимость у-1 на 2,3,4,5,6
    нет?
    у = 2*7 меньше 1000 работаем нет выходим(несходиться)

    вообщем и так далее в цикле.
    Force 

    регистрация: 06-12-2001 в 00:09
    сообщений: 20128

    отправлено 29-05-2006 18:50    
    2 NuINu:
    А почему ты думаешь что у бабки яиц меньше тысячи? В задаче это не сказано? :))
    Вообще-то точное решение 301 + 420*i, где i целое, от нуля и до бесконечности.
    IoR Poslavshy 

    регистрация: 25-05-2006 в 10:22
    сообщений: 87

    отправлено 30-05-2006 03:03    
    Потому что бабке не унести 1к яиц
    IoR Poslavshy 

    регистрация: 25-05-2006 в 10:22
    сообщений: 87

    отправлено 30-05-2006 03:10    
    А зделать нужно так ( не знаю как програмно написать но)
    x=7*y (y - число раз взятия яиц бабкой^^)
    то есть надо взять из диапазона от 7 до ~1000 все чилса кратные 7ми ( это предполагаемый x)
    а потом каждое проверить на кратность
    (x-1):2;3;4;5;6.
    если такое выпадет то это число +1 и есть кол-во бабкиных яиц
    ЗЫ: думаю стоит искать в пределах 300-400
    иначе это не бабуля а Герк какой-то =)
    NuINu 

    регистрация: 09-04-2004 в 16:36
    сообщений: 2450

    отправлено 30-05-2006 10:00    
    В вообще говоря не сказано что яйца куриные, возможно это были муравьиные яйца ;-)))
    Decker 

    регистрация: 09-08-2004 в 15:13
    сообщений: 1403

    отправлено 30-05-2006 12:36    
    Извините за оффтоп,
    NuINu проверь аську, из профайла
    я те мессадж написал :)
    NuINu 

    регистрация: 09-04-2004 в 16:36
    сообщений: 2450

    отправлено 30-05-2006 13:23    
    Вот на си написал, у меня щас паскаля нету.
    Вернее какойто препроцессорный, а его еще настраивать надо на работу с библиотеками.
    #include <iostream>
    #include <string>
    
    #define MAX_EGG   10000
    
    
    int main(int argc, char* argv[])  {
       int count_egg = 7;
       int is_found  = 0;
       while(count_egg <= MAX_EGG) {
          std::cout << "Тестируем: " << count_egg << std::endl;
          is_found = 0;
          if((count_egg-1) % 2 == 0) {
             is_found++;
          }
          if((count_egg-1) % 3 == 0) {
             is_found++;
          }
          if((count_egg-1) % 4 == 0) {
             is_found++;
          }
          if((count_egg-1) % 5 == 0) {
             is_found++;
          }
          if((count_egg-1) % 6 == 0) {
             is_found++;
          }
    
          if(is_found == 5) break;
    
          count_egg += 7;
       }
    
       if(is_found == 5) {
          std::cout << "НАШЛИ!!!, Всего яиц было: " << count_egg << std::endl;   } else {
          std::cout << "НЕ НАШЛИ!!!, Хотя и обсчитали все вплоть до: " << count_egg << std::endl;
       }
       return 0;
    }
    


    Не знаю что должно получаться, но получилось 301 как форс написал...

    2 Decker: Нашел куда мессаги слать, а для чего там е-майл лежит??? у меня в линуксе аськи нет придетсья в винду перезагружаться...
    test 

    регистрация: 30-05-2002 в 19:33
    сообщений: 42

    отправлено 30-05-2006 16:50    
    const n: Word = 1;
    
    begin
      while (true) do
       begin
        if (n mod 7)=0 then begin writeLn('Eggs: ',n); exit; end;
        inc(n,60); {где 60 - наименьшее общее кратное (НОК) для 2,3,4,5 и 6}
       end;
    end.
    Force 

    регистрация: 06-12-2001 в 00:09
    сообщений: 20128

    отправлено 30-05-2006 17:03    
    2 NuINu:
    Вы все такие сишники извращенные? :)) Так все сложно творить :)
    На сях писать не буду, чтобы меня в ошибке синтаксиса не обвинили, но на C# это выглядит примерно так:
    public class c1
    {
    	public static void Main()
    	{
    		int i = 1;
    		int max = int.MaxValue / 7;
    		while(i < max)
    		{
    			int g = 7 * i - 1;
    			if(g % 2 == 0 && g % 3 == 0 && g % 4 == 0 && g % 5 == 0 && g % 6== 0)
    				System.Console.WriteLine(g + 1);
    			i ++;
    		}
    	}
    }
    

     
    Сообщение было изменено автором 30-05-2006 в 17:05
    NuINu 

    регистрация: 09-04-2004 в 16:36
    сообщений: 2450

    отправлено 30-05-2006 17:25    
    2 Force: нет!!! есть конечно и извращенцы, но в основном нормальные программисты ;-)))

    Просто я стремлюсь следовать очень простому правилу: не надо заниматься оптимизацией до написания кода.
    Возможно оптимизации и не понадобиться.

    Если у меня в голове возник алгоритм, я его воплощаю, а уж затем можно пытаться что то оптимизировать(да и нужно ли???)

    Второй принцип - понятность кода, я вот посмотрел твой код, код теста, ну тяжело читать.
    если бы не пометка у теста, долго бы соображал что за 60 такие ;-)))
    у тебя посмотрел долго соображал - зачем МахВалуе на 7 делиться??? хотя надо отдать мне должное сообразил ;-))))

    вот если бы еще Тест - привел свой код не на паскале на на какой нибудь Модуле или Аде, мы бы смогли себя поздравить с полнейшим абструкционизмом АлехСа....
    Впрочем и поделом ему ;-))) было бы.
    Svan 

    регистрация: 12-11-2001 в 17:25
    сообщений: 3141

    отправлено 30-05-2006 17:33    
    :) Я решил эту задачу, наверно, самым ламерским методом — с помощью екселя.

    Я в трауре.
     
    Сообщение было изменено автором 30-05-2006 в 17:43
    Force 

    регистрация: 06-12-2001 в 00:09
    сообщений: 20128

    отправлено 30-05-2006 18:47    
    2 NuINu:
    А суммирующий флажок в твоем случае очень понятен ;)
    Вроде все красиво, но когда начинаешь пытаться сообразить в чем же алгоритм ничего не понимаешь ;)

    2 Svan:
    А я вообще на бумажке и виндовом калькуляторе ;)

    ЗЫ: А подобные внутренние оптимизации я еще до написания применяю, хотя тут постарался сделать понятнее, часть условий можно порезать было ;)
    ЗЗЫ: Один раз долго доказывал преподу, что я не верблюд, доказал, исправив тройку на пятерку.
    NuINu 

    регистрация: 09-04-2004 в 16:36
    сообщений: 2450

    отправлено 31-05-2006 09:47    
    2 Force: Согласен, нужно было назвать что нибудь типа
    CountOfCoincidence
    Lenux 

    регистрация: 27-09-2003 в 08:58
    сообщений: 324

    отправлено 31-05-2006 17:26    
    7*2-1=13. Т.к. пары есть у всех, кроме 7-ого :).
    Думаю:), если не меньше:).
    Force 

    регистрация: 06-12-2001 в 00:09
    сообщений: 20128

    отправлено 31-05-2006 17:44    
    2 Lenux:
    жжошь!!! (другого слова не могу подобрать).
    SeLaNik 

    регистрация: 11-05-2005 в 01:49
    сообщений: 881

    отправлено 01-06-2006 02:36    
    Что-то у меня сегодня апатия на свою учебу, вот занялся чужой для разнообразия, накидал для коллекции вам и на Паскале программу :)


    Program q;
    var
    i:integer;
    d:integer;
    begin
    for i:=1 to 1000 do
    begin
    d:=i*7-1;
    if (d mod 6=0) and (d mod 5=0) and (d mod 4=0) and (d mod 3=0) and (d mod 2=0) then WriteLn(d+1)
    end;
    ReadLn
    end.


    2 AlexS:
    Больше не спрашивай на Паскале проги писать, здесь люди другими языками пользуются, а Паскаль он для обучения в универах только используется.
    Force 

    регистрация: 06-12-2001 в 00:09
    сообщений: 20128

    отправлено 08-06-2006 11:34    
    Посты Пряника удалены, ибо бред, и не в тему.
    Lexx7 

    регистрация: 06-06-2003 в 17:54
    сообщений: 3239

    отправлено 10-06-2006 22:58    
    Ну тогда и я «для коллекции кину» : ) qqq это программа Forc’а переведённая на Паскаль, только я не понял что значит
    int max = int.MaxValue / 7;
    qq ищет до первого «подходящего» числа.

    program qq;
    var
    i,g:integer;
    Begin
     i:=1;
     repeat
       g:=7*i-1;
       i:=i+1;
     until (g mod 2=0) and (g mod 3=0) and (g mod 4=0) and (g mod 5=0) and (g mod 6=0);
     writeln(g+1);
    end.
    
    program qqq;
    var
    i,g:integer;
    Begin
     i:=1;
     while i<32767 do
       begin
       g:=7*i-1;
       if (g mod 2=0) and (g mod 3=0) and (g mod 4=0) and (g mod 5=0) and (g mod 6=0)
       then writeln(g+1);
       i:=i+1;
       end;
    end.
    
    
    Force 

    регистрация: 06-12-2001 в 00:09
    сообщений: 20128

    отправлено 11-06-2006 14:15    
    2 Lexx7:
    Это просто ищет до максимума, деленного на 7 (мы ведь умножаем на 7 потом, поэтому максимум лучше поделить, а то переполнение будет).
    Страницы: 1