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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти количество четных и нечетных членов последовательности http://www.cyberforum.ru/cpp-beginners/thread128331.html
Даны натуральные числа n, p, q, a1, a2,.....,an, причем n>=q>p>=1. Найти количество четных и нечетных членов последовательности a, a2,...,an. Определить значения наименьшего четного члена и наибольшего нечетного члена последовательности ap, ap+1,....,an. Упорядочить члены последовательности ap, ap+1,....,aq по убыванию, используя алгоритм сортировки методом прямого выбора. include <iomanip.h>...
C++ Ограничение ввода с клавиатуры Доброго времени суток. Ребят такой вопрос: Как ограничить ввод данных с клавиатуры. Если точнее: прдставте себе что юзер заснул на одной клавише, а потом нажал Enter. Прога от этого виснет. Мне необходимо ограничение ввода. Не проверку на кол-во введенных букв. А ограничение при самом вводе. Заранее спасибо!!! http://www.cyberforum.ru/cpp-beginners/thread128330.html
Курсовая C++
Пожалуйста очень нужна помощь с курсовой С++. 1 курс. Задача : Одномерный массив целых чисел размер которого задаётся с клавиатуры. Запрограммировать следующие действия с массивом: 1)Создать массив, в котором i-й элемент является средним арифметическим всех элементов исходного массива A , кроме i-го; 2)Элементы массива циклически сдвигать на k позиций влево; 3)определить симметричен ли...
Вывод информации о треке C++
Всем доброго времени суток! Вот захотел написать программку, которая выводит (хотя бы в консоль) такие данные о треке, как название, размер, альбом и прочее. Подскажите, куда копать!!!
C++ Ошибка при работе с файлом http://www.cyberforum.ru/cpp-beginners/thread128319.html
Пытался разобраться с записью и чтением из файла, посмотрел с десяток тем здесь, но столкнулся со странной (для меня) ошибкой. Вот, казалось бы, банальная программа для записи числа в файл: #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std; void main() {int x=123; FILE *f;
C++ Перегрузка оператора В следующем коде имеется перегруженный оператор, позволяющий умножить вектор справа на число. Как сделать обратное, то есть, чтобы вектор можно было умножать на число слева? template <class T> class Vector{ protected: T *v; int dim; public: Vector(T *a,int n); Vector<T> operator*(T k); подробнее

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

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

11.05.2010, 23:37. Просмотров 1298. Ответов 3
Метки (Все метки)

помогите пожалуйста исправить ошибки в коде:
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;
конец_пока
Заранее большое спасибо!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru