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

Найти самый посещаемый кинотеатр (массив из слов) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дружественная функция для класса http://www.cyberforum.ru/cpp-beginners/thread854364.html
Здравствуйте, имеется следующая задача: Базовый класс «СТУДЕНТ» описывает следующие данные о студентах университета: ФИО, год поступления, курс, номер группы, размер стипендии, оценки по n предметам. В состав класса входят следующие функции: виртуальный метод просмотра информации о студенте, функция-друг, которая вычисляет средний балл и выводит ФИО студента, у которого он максимальный....
C++ Перевод stdin c файла на клавиатуру #include <stdio.h> int x,y; int main(){ freopen("1.txt","r",stdin); freopen("2.txt","w",stdout); scanf("%d",&x); // scanf("%d",&y); printf("%d",x+y); http://www.cyberforum.ru/cpp-beginners/thread854356.html
C++ Подскажите, где может быть ошибка (структуры)? (скорее всего где-то амперсенд нужен, все вроде проверил)
написать универсальный тип, который представляет точку на плоскости в координатах (х, у) и в полярных координатах. Написать функцию для подсчета площади треугольника, заданного 3 точками. #include <iostream.h> #include <conio.h> #include <stdio.h> #include <string.h> #include <ctype.h> #include <math.h> typedef enum { stand, polar} Mode;
C++ Даны вещественные числа А > 1 и В
Даны вещественные числа А > 1 и В. Распечатать все числа вида сi = Аi (i = 1,2,...), меньшие В. Помогите решить в C++.
C++ Пояснения кода http://www.cyberforum.ru/cpp-beginners/thread854324.html
Вариант 5. Сформировать одномерный массив. Удалить из него K элементов, начиная с заданного номера, добавить K элементов, начиная с заданного номера. объясните пожалуйста отмеченные мною части кода.. Буду благодарен. #include "stdafx.h" #include <iostream> #include <conio.h> #include <time.h> #include <locale> using namespace std;
C++ Написать функцию, которая удаляет все лишние пробелы Доброго дня суток. Помогите пожалуйста.. Нужно написать функцию, которая удаляет все лишние пробелы, т. е. из нескольких подряд идущих пробелов оставить только один. А также есть такой код: #include "stdafx.h" #include <cmath> подробнее

Показать сообщение отдельно
men47
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 7
05.05.2013, 11:08  [ТС]     Найти самый посещаемый кинотеатр (массив из слов)
Цитата Сообщение от IrineK Посмотреть сообщение
Т.е. при запросе декады мы вводим числа от 1 до 36. ОК, понятно.

Хотя, по логике вещей, тогда и во входных данных коэффициент посещаемости должен быть подекадным (т.е. массив из 36 double для каждого кинотеатра). Судя по строке 18 вашего исходника, где-то так и задумывалось.

Структура будет такой:

C++
1
2
3
4
5
6
typedef struct cinema
{  string name;   //название
    int seats;     //кво мест
    double attendance[36];   //коэффициент посещаемости по декадам
    double price;    //цена
};
Коэффициент посещаемости: соотношение проданных в течение дня мест к их фактическому кву. Например, если за день было 5 сеансов и было продано 1325 билетов при 300 местах, то 1325/300 = 4,42

Тогда выручка данного кинотеатра за i-ую декаду (10 дней):
R = seats * attendance[i] * 10 * price

Если такая постановка задачи вас устраивает, могу приступить к реализации.

Я не много не понял, зачем коэффициент посещаемости, а если все эти 5 сеансов были разными категориями

Вот мне давали ответ, после нескольких вопросов

"По поводу контрольной.
Категория - это статус фильма, хранить можете цифру, учитывая для себя, что, допустим, 1 (документальный фильм) - это минимальные надбавки, 2 (детский) - это выше, и.т.п., 10 (блокбастер) - максимум.
Декада - это 10 дней, следовательно, в одном месяце - 3 декады. Надо определить максимальную выручку за определенную декаду. Следовательно, надо хранить инфу о выручке подекадно для каждого кинотеатра, а при запросе декады делать выбоку по соответствующим ячейкам - например.
Колонка - цена билета - нужна, но высчитываться она должна с учетом категории. "

вот что я сделал:

Сама структура
C++
1
2
3
4
5
6
7
8
struct cinima{       
    char title[30];
    int kol, kat, dek;
    double price;
    cinima *next;};   
    cinima * head, *tmp, *current; 
                    
    int nCount;
При добавлении (п.с. на счет суммы можно будет спросить пользователя о стандарте суммы, но или информировать что стандартно 60 р. билет, 0.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
void addCinima()
{   FILE *fp;
    cinima b;
  char ch;
  fp=fopen(filename,"r+");
  if(fp==NULL)
    cout<<"Oshibka chtenia dannbIx iz faila";
  else
   {
   do
    { 
      system("cls");
      cin.sync();
      cout<<"Vvedite dannbIe o knige."<<endl;
      cout<<"Nazvanie kinoteatra: \t" ; cin.getline(b.title, 29);
      cout<<"Kol-vo prodanbIx mest: \t"; cin>>b.kol;
      cout<<"Kotegoria (1-dokymentalnbIi, 2-mylbtfilm, 3-vestern, 4-komedia, 5-priklychenie, 6-yjasbI, 7-fantastika, 8-milodramma, 9-cport, 10-aktion): \t"; cin>>b.kat;
      cout<<"Dekada (1-36): \t"; cin>>b.dek;
          b.price = b.kat*60*0.1+60;
           nCount++;
      fseek(fp,0,SEEK_END);
      fwrite(&b, sizeof(cinima), 1, fp);
      fseek(fp,0,SEEK_SET);
      fwrite(&nCount, sizeof(int), 1, fp);
      cout<<"\nVvecti dannbIe o eshe odnom kinoteantre (y/n)?";
      ch=_getch();
    }
   while(ch=='Y' || ch=='y');
   fclose(fp);
  }
   cout<<endl;
}
Вот самый посещаемый кинотеатр года:

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
45
46
47
48
49
50
51
52
53
void Poseshaemost()
{  string c[1000];
   float a[1000];
int i,j,m=0,n, sum=0;
  cinima b;
  FILE *fp;
  cout<<"\nCambIi poseshaembIi kinoteatr goda\n";
  if(nCount==0) cout<<"V spiske net dannbIx o kinoteatrov";
  else
    {   fp=fopen(filename,"r");
        if(fp==NULL)
            cout<<"Oshibka chtenia dannbIx iz faila";
        else
                {
                        fseek(fp, sizeof(int), SEEK_SET);
                        m=1;
            for(i=0;i<nCount;i++)
                    {
                    fread(&b, sizeof(b), 1, fp);
                                if(m == 1)
                                        {
                                        c[m]=b.title;
                                        a[m]=b.kol;
                                        m=m+1;
                                }
                                else
                                        { for(j=1;j<m;j++)
                                                if(c[j]==b.title)
                                                        {
                                                        a[j]=a[j]+b.kol;
                                                        sum=sum+1;
                                                }
                                                if (sum==0)
                                                        {
                                                        c[m]=b.title;
                                                        a[m]=b.kol;
                                                        m=m+1;
                                                }
                                                else
                                                        sum=0;
                                }
            }
            fclose(fp);
        }
    }
     n=a[1];
     for(j=1;j<=m;j++)
        if (n<a[j])
                n=a[j];
     for(j=1;j<=m;j++)
        if (n==a[j])
                cout<<c[j]<<"\n"<<endl;
}
Вот в зависимости от декады:

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
void findCinima()
{  string c[1000];
   float a[1000];
int i,j,m=0,n, sum=0, nach, kon;
  cinima b;
  FILE *fp;
  cout<<"\nCambIi priBbIlnbIi kinoteatr po zadannbIm dekadam\n";
  cout<<"\nVvedite nachanyy dekady: ";
  cin>>nach;
  cout<<"\nVvedite konechnyy dekady: ";
  cin>>kon;
  if(nCount==0) cout<<"V spiske net dannbIx o kinoteatrov";
  else
    {   fp=fopen(filename,"r");
        if(fp==NULL)
            cout<<"Oshibka chtenia dannbIx iz faila";
        else
                {
                        fseek(fp, sizeof(int), SEEK_SET);
                        m=1;
            for(i=0;i<nCount;i++)
                    {
                    fread(&b, sizeof(b), 1, fp);
                                if (nach<=b.dek && kon>=b.dek)
                                {
                                if(m == 1)
                                        {
                                        c[m]=b.title;
                                        a[m]=b.price*b.kol;
                                        m=m+1;
                                }
                                else
                                        { for(j=1;j<m;j++)
                                                if(c[j]==b.title)
                                                        {
                                                        a[j]=a[j]+b.price*b.kol;
                                                        sum=sum+1;
                                                }
                                                if (sum==0)
                                                        {
                                                        c[m]=b.title;
                                                        a[m]=b.price*b.kol;
                                                        m=m+1;
                                                }
                                                else
                                                        sum=0;
                                }
                                }
            }
            fclose(fp);
        }
    }
     n=a[1];
     for(j=1;j<=m;j++)
        if (n<a[j])
                n=a[j];
                
     for(j=1;j<=m;j++)
        if (n==a[j])
                cout<<c[j]<<"\n"<<endl;
}
p.s. у меня все слова на выводи английские, потому что я не знаю как их сделать русскими, если вписываю русские то идет бред.... (прогу пишу на билдере 6.0)
 
Текущее время: 15:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru