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

Найти промежуток времени, в течение которого в музее одновременно находилось максимальное число посетителей - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Viola2208
0 / 0 / 0
Регистрация: 11.05.2010
Сообщений: 3
11.05.2010, 23:37     Найти промежуток времени, в течение которого в музее одновременно находилось максимальное число посетителей #1
помогите пожалуйста исправить ошибки в коде:
C++
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
37
38
39
40
41
42
43
44
#include <iostream>
using namespace std;
 
 
void main()
 
{
 
int N,i,C, j;
int Cmax, A[i,j];
 
for(i=0;i<N;i++) for(j=0; j<10; j a[i] [ j ]=i*j ;
 
 
i=1; Cmax=0; 
while (i<=2*N)
 
  if (A[2,i]>0){
      C=C+1;
      Cmax=max(Cmax, C);}
  else C=C-1;
  else i=i+1;
 
      while
         if (Сmax=0),
         printf("\n посетителей не было вообще\n”); 
       
i:=1;
while (i<=2*N)
 if (A[2,i]>0){
   C:=C+1;
 
   if (С=Сmax) 
       printf("Конец промежутка: \n",A[1,i]);}
 
else {
   if (С=Cmax) {
      printf("Начало промежутка: \n",A[1,i]);
 
C:=C-1;}
   else i:=i+1;}
 
return;
}
вот формулировка задания: В музее регистрируется в течение дня время прихода и ухода каждого посетителя. Таким образом за день получены N пар значений, где первое значение в паре показывает время прихода посетителя и второе значения - время его ухода. Найти промежуток времени, в течение которого в музее одновременно находилось максимальное число посетителей.

и алгоритм для решения, который я взяла из интернета:
Будем представлять посещение музея посетителем в виде отрезка [время_прихода_посетителя, время_ухода_посетителя]. Надо найти множество точек, принадлежащих максимальному числу отрезков (они и будут составлять тот промежуток (промежутки) времени, в течение которого в музее одновременно находилось максимальное число посетителей.

Рассмотрим какой-нибудь такой промежуток. Его концами, очевидно, являются концевые точки каких-то двух отрезков. В решении задачи в переменной С храниться количество отрезков, пересекающихся в текущей концевой точке. Сначала мы найдем Cmax - максимальную величину переменной C, затем определим, каким промежуткам соответствует максимальное количество посетителей в музее:

Код
{находим Cmax}
i:=1; Cmax:=0;
пока (i<=2*N) и
повторять
если A[2,i]>0
то C:=C+1;
Cmax:=max(Cmax, C);
конец_то
иначе C:=C-1;
конец_иначе
i:=i+1;
конец_пока
если Сmax=0,
то посетителей не было вообще. Стоп.
{ищем и печатаем промежутки с максимальным числом посетителей}
i:=1;
пока (i<=2*N) и
повторять
если A[2,i]>0
то C:=C+1;
если С=Смах {это начало искомого промежутка?}
 то печатаем координату начала промежутка A[1,i] конец_то
конец_то
иначе
если С=Смах {промежуток закончился}
то печатаем координату конца промежутка A[1,i]
конец_то
C:=C-1;
конец_иначе
i:=i+1;
конец_пока
Заранее большое спасибо!!!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2010, 23:37     Найти промежуток времени, в течение которого в музее одновременно находилось максимальное число посетителей
Посмотрите здесь:

C++ Среди простых чисел, не превосходящих N, найти такое, в десятичной записи которого максимальное число единиц
Найти максимальное целое число, куб которого не превышает 30000 C++
C++ Найти среди простых чисел, попадающих в этот промежуток, такое число, у которого сумма цифр максимальная
Программа должна выводить координаты отрезка в границы которого входит максимальное число отрезков подаваемых на вход C++
C++ Определить элемент этого массива, в двоичной записи которого максимальное число единиц
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Crudelis
Шаровик затейник
 Аватар для Crudelis
667 / 409 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
12.05.2010, 00:22     Найти промежуток времени, в течение которого в музее одновременно находилось максимальное число посетителей #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
i=1;
while (i<=2*N)
 if (A[2,i]>0){
 C=C+1;
if (С=Сmax) 
 printf("Конец промежутка: \n",A[1,i]);}
else {
 if (С=Cmax) {
 printf("Начало промежутка: \n",A[1,i]);
C=C-1;}
 else i=i+1;} 
return;
}
Viola2208
0 / 0 / 0
Регистрация: 11.05.2010
Сообщений: 3
12.05.2010, 00:56  [ТС]     Найти промежуток времени, в течение которого в музее одновременно находилось максимальное число посетителей #3
Спасибо, но это далеко не все ошибки
Crudelis
Шаровик затейник
 Аватар для Crudelis
667 / 409 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
12.05.2010, 01:50     Найти промежуток времени, в течение которого в музее одновременно находилось максимальное число посетителей #4
это первое что бросилось в глаза
Yandex
Объявления
12.05.2010, 01:50     Найти промежуток времени, в течение которого в музее одновременно находилось максимальное число посетителей
Ответ Создать тему
Опции темы

Текущее время: 00:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru