Форум программистов, компьютерный форум CyberForum.ru

Задача "Рабочее время": Помогите Ивану Ивановичу найти его суммарные затраты времени за год. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Записать математические формулы http://www.cyberforum.ru/cpp-beginners/thread1815104.html
Пожалуйста П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом. ha=bsiny V=пR2H
C++ Найти дистанцию между точками на плоскости (использовать перегруженный оператор) Необходимо найти дистанцию между точками на площади, используя перегруженный оператор. #include <iostream> using namespace std; class circle { public: double x; double y; http://www.cyberforum.ru/cpp-beginners/thread1815082.html
Ошибка в поэлементном сравнении элементов матрицы C++
не правильно сравнивает, помогите исправить. что с условием сделать, чтобы сравнивало поелементно каждую строку. Т.е. при сравнении 1 и 2 строк, получим,что 2>1, 5>4, но 3 меньше 5 следовательно строка 1 не больше строки 2. а тут выводит, что больше... не понимаю как изменить. #include <iostream> using namespace std; int main() { const int n = 3, m = 4;
указатель стал 0xCDCDCDCD C++
Ошибка пишет current стал равным 0xCDCDCDCD в чем проблема? мне кажется в операции присваивания #include <iostream> using namespace std; struct Single_node { Single_node *next;
C++ Объяснить нюансы оптимизации заданного фрагмента кода http://www.cyberforum.ru/cpp-beginners/thread1815065.html
Наткнулся на статью по оптимизации кода на C++http://itw66.ru/blog/c_plus_plus/13.html]ссылка Есть там 10-й пункт: SomeClass* p; - указатель на массив элементов x = *(p++); - значительно эффективнее x = *(++p);По той же причине что и пункт 1. В первом случае будет осуществляться разыменование указателя и его инкремент параллельно, а во втором — последовательно. Пункт 1: Используйте...
C++ Удаление строк из двумерного массива Подскажите, пожалуйста, как исправить код, чтобы удалялись только те строки, что поэлементно меньше. Т.е.т.е. 1 4 5 3 и 1 3 5 2 --------------- удалится должна нижняя строка, но если была бы хоть одна цифры в 2ой строке больше чем в 1, то они остались бы оба. В моем случае удалится должны только 2ая, 3ая, и 8 строка. Так как 2 доминирует над 8, 6ая доминирует над 2 7ая доминирует над 3 подробнее

Показать сообщение отдельно
vasiliy9211
0 / 0 / 0
Регистрация: 28.09.2016
Сообщений: 21

Задача "Рабочее время": Помогите Ивану Ивановичу найти его суммарные затраты времени за год. - C++

28.09.2016, 08:25. Просмотров 255. Ответов 3
Метки (Все метки)

есть программа написанная на паскале. мне нужно в c++. пропустил несколько занятий в универе и не могу теперь написать программу. help me.
Рабочее время

Иван Иванович – очень ответственный, но очень рассеянный человек. Поэтому когда он начинает очередное дело, он на отдельном листочке пишет дату и время начала (например, 29.01. 10:30), а когда заканчивает, то так же на отдельном листочке – дату и время окончания (например, 02.02. 12:15). Листочки аккуратно укладываются в стопку один на другой. А так как одновременно Иван Иванович может заниматься только одним делом, то листочки однозначно упорядочены в стопке: листок начала какого-то дела, листок окончания этого дела, листок начала, листок окончания… и т.д. Дело начинается в начале минуты, указанной в листочке начала этого дела, а заканчивается в конце минуты, указанной на листочке окончания. Иван Иванович ходит на работу каждый день и его рабочий день продолжается с 10:00 до 18:00. Таким образом, пара листочков «18.11. 15:13» — «20.11. 10:27» была написана при начале и окончании дела длительностью 11ч.15м.

Однажды в конце декабря уборщица Дуся нечаянно уронила эту стопку на пол и, не зная важной закономерности их укладки, собрала листочки обратно в каком-то произвольном порядке. Иван Иванович обнаружил этот прискорбный факт только 31 декабря, когда ему надо было произвести учет своего рабочего времени за год. Год был невисокосный.

Помогите Ивану Ивановичу найти его суммарные затраты времени за год.

Пример:

Input.txt:
4
15.01. 17:00
16.01. 12:00
11.02. 14:00
30.01. 10:00
Output.txt:
103:02
вот код на паскале:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
uses SysUtils;
var
  i,j,tmin,tmax,k:longint;
  s:string;
  t:array[100..3113,0..480] of boolean;
  b:boolean;
begin
  readln(k);
  tmin:=3112;tmax:=100;
  for k:=1 to k do begin
    readln(s);
    i:=StrToInt(s[4]+s[5]+s[1]+s[2]);
    if i>tmax then tmax:=i;
    if i<tmin then tmin:=i;
    j:=strtoint(s[8]+s[9])*60+strtoint(s[11]+s[12])-600;
    t[i,j]:=true;
  end;
  k:=0;
  i:=tmin;
  repeat
    if ((i div 100 in [1,3,5,7,8,10]) and (i mod 100=32)) or
        ((i div 100 in [4,6,9,11]) and (i mod 100=31)) or
        ((i div 100 =2) and (i mod 100=29)) then i:=(i div 100+1)*100+1;
     for j:=0 to 480 do begin
       if t[i,j] then begin
         b:=not b;
         if not b then k:=k+1;
       end;
       if b then k:=k+1;
     end;
     k:=k-ord(b);
     i:=i+1;
  until i>tmax;
  if k mod 60<10 then s:=':0' else s:=':';
  writeln(k div 60,s,k mod 60);
end.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru