• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Задача в Pascal'е (ЕГЭ)

  • Автор темы Автор темы Zibuga
  • Дата начала Дата начала

Zibuga

Ученик
Регистрация
4 Май 2011
Сообщения
4
Реакции
0
Баллы
0
Задача в Pascal'е (ЕГЭ)

Интернет-фирма получает заказы каждый день в любое время. Пришло N заказов. В какой день недели пришло наибольшее число заказов?

(вводим: -кол-во заказов -дату закза(2 переменные: число и месяц)
выводим: в какой день недели приходит больше всего заказов)

Помогите пожалуйста, я не понимаю вообще как сделать эту программу!
Заранее благодарен
 
Код:
Var a:array[1..7] of integer;
i,k:byte; max:integer;
begin
max:=a[1];
for i:=1 to 7 do
begin
Writeln('Vvedite scolco zakazov postupilo v ',i,' day');
readln(a[i]);
if a[i]>max
then begin max:=a[i]; k:=i; end;
end;
Writeln('bolshe zakazov v ',k);
readln;
end.
 
Не совсем верно.
Программа высчитывает только 7 дней!А должна высчитывать 365 дней.
То есть в любое время года.
Например:
1 января вторник 5 заказов
7 марта среда 3 заказа и тд
 
Вообще-то надо бы поподробнее сформулировать. В частности:
1. Как предполагается делать заполнение данных? Тупо вводить 365 записей? Проще сразу удавиться. Или можно сгенерить число заказов случайным образом?
2. Как осуществляется привязка дата-день недели? Берется конкретный год? Или нужно программировать календарь?
 
2)нужно программировать календарь
Надо еще учесть, с какого дня начинается год( с понедельника или со среды...)
1) сам не знаю. Иначе бы сам сделал
 
....
[MOD2]Удалено. Прямое нарушение Правил форума, п.3.1, в части перехода на личности. Не Вам решать, кто тут достойный, а кто нет, и, мягко говоря, невелики Ваши "благодеяния".
Бан на неделю.

Модератор.[/MOD2]
 
Ну вот, кое что сотворил.
Программа случайным образом задает количество заказов в день в интервале 0-9 штук. Все данные о заказах за весь год хранятся в файле Data.txt. Там колонки: дата dd.mm, номер дня недели, начиная с понедельника, которому соответствует 1 и число заказов. Год считается невисокосным. Программа запрашивает номер дня недели, приходящегося на 1 января. Вычисляются и выводятся на экран сумма заявок в течение года по дням недели и усредненное число заявок в день, тоже по дням недели. Потом находятся наиболее "удачные" дни.
Код:
Uses crt;
Const
 Days:Array[1..7] of String = ('monday','tuesday','wednesday','thursday',
                               'friday','saturday','sunday');
Var
 f:text;
 Num_of_Days,Orders_per_Day_Sum,Orders_Average:Array[1..7] of Word;
 day_1,i,Max:Word;
 j,N_ord,k:Byte;
 S:String[5];

BEGIN
 clrscr;
 Writeln('Enter the day of January, 1st (1-7): 1 - monday');
 WriteLn('                                     2 - tuesday');
 WriteLn('                                     3 - wednesday');
 WriteLn('                                     4 - thursday');
 WriteLn('                                     5 - friday');
 WriteLn('                                     6 - saturday');
 Write('                                     7 - sunday ');
 ReadLn(day_1);
 Randomize;
 assign(f,'C:\data.txt');
 ReWrite(f);
 For i:=1 to 365 do
  begin
   If i<32 then
    begin
     if i<10 then write(f,'0',i,'.01 ') else write(f,i,'.01 ');
    end else
   If i<60 then
    begin
     if i-31<10 then write(f,'0',i-31,'.02 ') else write(f,i-31,'.02 ');
    end else
   If i<91 then
    begin
     if i-59<10 then write(f,'0',i-59,'.03 ') else write(f,i-59,'.03 ');
    end else
   If i<121 then
    begin
     if i-90<10 then write(f,'0',i-90,'.04 ') else write(f,i-90,'.04 ');
    end else
   If i<152 then
    begin
     if i-120<10 then write(f,'0',i-120,'.05 ') else write(f,i-120,'.05 ');
    end else
   If i<182 then
    begin
     if i-151<10 then write(f,'0',i-151,'.06 ') else write(f,i-151,'.06 ');
    end else
   If i<213 then
    begin
     if i-181<10 then write(f,'0',i-181,'.07 ') else write(f,i-181,'.07 ');
    end else
   If i<244 then
    begin
     if i-212<10 then write(f,'0',i-212,'.08 ') else write(f,i-212,'.08 ');
    end else
   If i<274 then
    begin
     if i-243<10 then write(f,'0',i-243,'.09 ') else write(f,i-243,'.09 ');
    end else
   If i<305 then
    begin
     if i-273<10 then write(f,'0',i-273,'.10 ') else write(f,i-273,'.10 ');
    end else
   If i<335 then
    begin
     if i-304<10 then write(f,'0',i-304,'.11 ') else write(f,i-304,'.11 ');
    end else
    begin
     if i-334<10 then write(f,'0',i-334,'.12 ') else write(f,i-334,'.12 ');
    end;
   If ((day_1+i-1) mod 7)=0 then Write(f,'7')
    else Write(f,(day_1+i-1) mod 7);
   WriteLn(f,'     ',Random(10));
  end;
 Close(f);

 For j:=1 to 7 do
  begin
   Num_of_Days[j]:=0;
   Orders_per_Day_Sum[j]:=0;
  end;

 Reset(f);

 For i:=1 to 365 do
  begin
   ReadLn(f,S,j,N_ord);
   Inc(Num_of_Days[j]);
   Orders_per_Day_Sum[j]:=Orders_per_Day_Sum[j]+N_ord;
  end;

 close(f);

 For j:=1 to 7 do
  Orders_Average[j]:=Round(Orders_per_Day_Sum[j]/Num_of_Days[j]);

 WriteLn('Orders per Days:');
 WriteLn('  Day         Whole   Averaged');
 For j:=1 to 7 do
  begin
   Write(Days[j]);
   for k:=length(Days[j]) to 9 do Write(' ');
   WriteLn(Orders_per_Day_Sum[j]:8,Orders_Average[j]:8);
  end;

 WriteLn;
 Max:=0;
 For j:=1 to 7 do
  if Orders_Average[j]>Max then Max:=Orders_Average[j];

 WriteLn('Most popular days (',Max,' orders per day) are:');
 For j:=1 to 7 do
  if Orders_Average[j]=Max then WriteLn(Days[j]);

 ReadLn;
end.
 
Гениально! Спасибо
 
Назад
Сверху