Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Chekhov
1 / 1 / 0
Регистрация: 09.09.2010
Сообщений: 53
#1

Из Дейтела (4.20) - C++

04.07.2011, 23:15. Просмотров 963. Ответов 8
Метки нет (Все метки)

Привет всем!!!! Ребята, есть задачка из Дейтела (4.20) для зачета, но совсем в проге не смыслем, послезавтра сдают, кто поможет а? И если нетрудно с комментариями!

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

Заранее очень благодарны.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2011, 23:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Из Дейтела (4.20) (C++):

Пример из Дейтела - C++
Помоготе разобрать пример из Дейтела, #include<iostream> #include<string> using namespce std; MyBook{ public: void...

Классы из Дейтела - C++
Сейчас читаю книгу Дейтела (Как программировать на С++ (5-е издание, 2008) ), читаю главу про классы, там предоставлен такой код: ...

Самоучитель от Дейтела врет? - C++
Почему в самоучителе по С++ от Дейтела Х, программа, выводящая текст записана так: #include <iostream> int main() { ...

ответы на книгу Дейтела - C++
Здравствуйте! Подскажите,где можно скачать ответы на задачи из учебника Дейтела "Как программировать на С++" 5 издание?

Разбить по файлам пример из Дейтела - C++
Хочу разбить по файлам пример из книги Дейтела. Что куда сохранять!? Пожалуйсто подскажите, тяжело самому... Определение класса GradeBook...

Задача из учебника Дейтела Харви - C++
Задача: используйте одномерный массив для решения слудующей задачи. прочитайте 20 чисел, каждое из которых находится в диапазоне от 10 до...

8
R136a1
143 / 112 / 15
Регистрация: 14.04.2011
Сообщений: 261
05.07.2011, 03:45 #2
код получился громоздким, потому как я только учусь но всё работает
Если клиент ввел 1, ваша программа должна выделять место в салоне для некурящий (места 6-10)
я так понял что вы отпечатались и имели в виду 2

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
#include <iostream>
using namespace std;
 
int main()
{
    int location[10] = {0};
    char choise;
    bool nl = false;
    static int b = 5;
    static int a = 0;
    
    while(!nl) {
    
     do {
          cout << "\n1. для курящих\n"
               << "2. для некурящих\n";
    
          cin >> choise;
    
     } while(choise < '1' || choise > '2');
    
    cout << "\n";
    
    switch(choise) {
        case '1':
           if(a < 5) {
              location[a] = 1;
              cout << "Место: " << a+1 << "\n";
              a++; }
           else { 
             char ch;
             cout << "мест больше нет, приемлем ли для вас салон для некурящих?(y/n)\n";
             cin >> ch;
             if(ch == 'y' || ch == 'Y') {
                if(b < 10) {
                   location[b] = 1;
                               cout << "Место: " << b+1 << "\n";
                               b++; }
                else {
               cout << "мест больше нет, следующий полет состоится через три часа\n";
               nl = true; }
                }  
             }     
        break;
        case '2':
           if(b < 10) {
              location[b] = 1;
                      cout << "Место: " << b+1 << "\n";
                      b++; }
                   else {
                      cout << "мест больше нет, следующий полет состоится через три часа\n";
                  nl = true; }
        break;
       }
   }
    return 0;
}
2
Chekhov
1 / 1 / 0
Регистрация: 09.09.2010
Сообщений: 53
05.07.2011, 07:55  [ТС] #3
ОГРОМНОЕ спосибо!!!!!!
0
Chekhov
1 / 1 / 0
Регистрация: 09.09.2010
Сообщений: 53
09.07.2011, 22:37  [ТС] #4
А такую задачку кто поможет решить?
(Восемь Ферзей) Шахматной головоломкой является задача о Восьми Ферзях: можно ли поставить на пустой шахматной доске восемь фрезей так, чтобы ни один из них не "атаковал" другого, т.е. никакие два ферзя не стояли бы на одном и том же столбце или на одной и той же строке или на одной и той же диагонали?
Совет: Присвоить значение каждой клетке шахматной доски, указывая сколько клеток пустой шахматной доски "исключается", если ферзя поместить на эту клетку. Каждому углу должно быть присвоено значение 22. Как только эти числа исключений будут присвоены всем 64 клеткам, можно предложить эвристику: ставить каждого следующего ферзя на клетку с наименьшим числом исключений.

И еще такую!
Для каждого класса укажите некоторые общие атрибуты у финкции, определяющие иерархию. Добавьте некоторые другие классы, такие, как UndergraduateStudent, GraduateStudent, Freshmen, Sophomore, Junior, Senior и т.д., чтобы обоготить иерархию.

Огромное спосибо за внимание и помощь!!!!!
0
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
09.07.2011, 22:41 #5
Цитата Сообщение от Chekhov Посмотреть сообщение
(Восемь Ферзей) Шахматной головоломкой является задача о Восьми Ферзях:
0
botasa
3 / 3 / 0
Регистрация: 18.01.2011
Сообщений: 131
09.07.2011, 23:07 #6
какой выпуск книги у вас ? так как у меня эти все задачи в главе 7
0
Chekhov
1 / 1 / 0
Регистрация: 09.09.2010
Сообщений: 53
09.07.2011, 23:16  [ТС] #7
Незнаю, у меня электронная версия! В чем разница то?
0
botasa
3 / 3 / 0
Регистрация: 18.01.2011
Сообщений: 131
09.07.2011, 23:18 #8
да и у меня электронная версия, сколько у вас страниц в книге ? а точнее какое издание ?
0
Daemon025
380 / 328 / 67
Регистрация: 06.12.2010
Сообщений: 894
09.07.2011, 23:27 #9
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <stdio.h>
#include <stdlib.h>
#include <time.h>  
#define SIZE 8
//ГґГіГ*êöèÿ äëÿ Г§Г*ГЇГЁГ±ГЁ èçìåГ*ÿåìûõ ýâðèñòè÷. Г§Г*Г*Г·.
void evristic( int e_dos[][ SIZE ], int dos[][ SIZE ], 
const int hor[ SIZE ], const int vert[ SIZE ]);
 
int main()
{
   int strk, stlb, hod = 0, x,y,z,i,c,v=0,n=0,m, vr_s, vr_st;
   
   int doska[ SIZE ][ SIZE ] = { 0 }; //Г¬Г*Г±Г±ГЁГў äëÿ Г§Г*ГЇГЁГ±ГЁ "îïГ*Г±Г*ûõ êëåòîê"
   int evr_doska[ SIZE ][ SIZE ] = { 0 }; //Г¬Г*Г±Г±ГЁГў äëÿ Г§Г*ГЇГЁГ±ГЁ èçìåГ*ÿåìûõ ýâðèñòè÷. Г§Г*Г*Г·.
   
   const int horizont[ SIZE ]= {0, 1,1,1,0,-1,-1,-1 }; //Г¬Г*Г±Г±ГЁГўГ» êîîðäèГ*Г*ГІ õîäîâ
   const int vertical[ SIZE ]= {-1, -1,0,1,1,1,0,-1 }; 
   
   srand( time( NULL ) ); 
   
   for ( c = 1; c <= 8; ++c ) { //Г§Г*ГЇГіГ±ГЄГ*ГҐГ¬ 8 ôåðçåé Г± óñëîâèåì äëÿ ГІГіГЇГЁГЄГ* Г±Г¬.i
      
      evristic( evr_doska, doska, horizont, vertical );//ГЁ ìåГ*ГїГҐГ¬ ГЅГўГ°. Г§Г*Г*Г·.
      z = 28;//äëÿ âûáîðГ* Г*Г*èìåГ*Гё. ГЅГўГ°. Г§Г*Г*Г·.
      
      m = 1 +  rand() % 3;
      
     //Г§Г*ГЇГіГ±ГЄГ*ГҐГ¬ 64 öèêë äëÿ ïîèñêГ* ñâîá. ГЁ Г*Г*ГЁГ¬. ГЅГўГ°. Г§Г*Г*Г·. êëåòêè
      for ( x = 0; x <=7; ++x ) { 
      
         for ( y = 0; y <=7; ++y) { 
         
            if ( doska[ x ][ y ] == 0 ){
         
               if ( (evr_doska[ x ][ y ]<= z) && (n <= m) ){
                    
                  ++n;
                  z = evr_doska[ x ][ y ];  
                  strk = x;
                  stlb = y;
                  v = 1;
               }
            }
         }    
      } 
      n = 0;
      if  ( v == 1 ){ 
          
         doska[ strk ][ stlb ] = c;
         vr_s = strk;// ñîõð. äëÿ âîçì. âîçâð. Г*Г* ГЁГ±Гµ. ïîç.
         vr_st = stlb;// äëÿ âîçâð. Г*Г* ГЁГ±Гµ. ïîç.
         //Г§Г*ГЇГіГ±ГЄГ*ГҐГ¬  Г¶ГЁГЄГ« äëÿ Г§Г*ГЇГЁГ±ГЁ ГўГ±ГҐГµ âåðò., ãîð., äèГ*ГЈ., ïðîïóñêГ*Гї Г§Г*Г*ÿòûå 
         for ( hod = 0; hod < SIZE; ++hod ) {
         
            for ( i = 1; i < SIZE; ++i ) {
            
               strk += vertical[ hod ]*i;// ïîëó÷Г*ГҐГ¬ Г*îâóþ ïîç.
               stlb += horizont[ hod ]*i;// ïîëó÷Г*ГҐГ¬ Г*îâóþ ïîç.
               // ïðîâåðÿåì ГЈГ°Г*Г*èöû ГЁ Г*Г*ëè÷èå ñâîá. õîäîâ
               if ( strk >= 0 && stlb >= 0 && strk <= 7 && stlb <= 7 
               && doska[ strk ][ stlb ] == 0 ){
                    
                  doska[ strk ][ stlb ] = -1;
               }
               strk = vr_s;// âîçâð. Г*Г* ГЁГ±Гµ. ïîç.
               stlb = vr_st;      
            }
         }  
      }
      v = 0;
   }
   printf( "\n\n" );
    for ( x = 0; x < SIZE; ++x ) {
      
       printf( "\n\n" ); 
      
       for ( y = 0; y < SIZE; ++y ) {
           
           if (doska[ x ][ y ]==-1)
              printf( "*  ", doska[ x ][ y ] );
          else
             printf( "%d  ", doska[ x ][ y ] );
       } 
   }
 
 
   printf( "\n\n" );
   system("PAUSE"); 
   return 0;  
 
} 
 
void evristic( int e_dos[][ SIZE ], int dos[][ SIZE ], 
const int hor[ SIZE ], const int vert[ SIZE ]){
 
  int strk, stlb, hod, x,y,z=0,b,i;
  
   for ( x = 0; x < SIZE; ++x ) { 
      
      for ( y = 0; y < SIZE; ++y) { 
         
         z = 0;// åñëè êëåòêГ* Г*ГҐ ГЇГіГ±ГІГ*Гї, ГІГ® Г§Г*ГЇГЁГ±. 0
         if ( dos[ x ][ y ] == 0 ){
         
            strk = x;
            stlb = y; 
            ++z;
            
            for ( hod = 0; hod < SIZE; ++hod ) {
                
               for ( i = 1; i < SIZE; ++i ) {
                  strk += vert[ hod ]*i;// ïîëó÷Г*ГҐГ¬ Г*îâóþ ïîç.
                  stlb += hor[ hod ]*i;// ïîëó÷Г*ГҐГ¬ Г*îâóþ ïîç.
                  // ïðîâåðÿåì ГЈГ°Г*Г*èöû ГЁ Г*Г*ëè÷èå ñâîá. õîäîâ
                  if ( strk >= 0 && stlb >= 0 && strk <= 7 && stlb <= 7 
                  && dos[ strk ][ stlb ] == 0 ){
                     ++z; // óâåëè÷. êîë. âîçì. õîäîâ
                     
                  }
                  strk = x;// âîçâð. Г*Г* ГЁГ±Гµ. ïîç.
                  stlb = y;       
               }
            }
         }
         e_dos[ x ][ y ] = z; // Г§Г*ГЇГЁГ±. êîë. âîçì. õîäîâ
      }  
   }
   printf( "\n\n" ); 
   for ( x = 0; x < SIZE; ++x ) {
      
      printf( "\n\n" ); 
      
      for ( y = 0; y < SIZE; ++y ) {
          
         if ( y < 10 )
            printf( "%2d  ", e_dos[ x ][ y ] );
         else 
            printf( "%d  ", e_dos[ x ][ y ] );
      } 
   } 
}
2
09.07.2011, 23:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2011, 23:27
Привет! Вот еще темы с ответами:

Где найти примеры задач из книги Дейтела по C++ - C++
Скачал книгу Дейтела на C++ не могу найти примеры задач, мб есть у кого?

Не работает программа из книги Дейтела "Как программировать на с++" - C++
Помогите, пожалуйста, решить проблему. Программа из раздела книги &quot;Отделение интерфейса от реализации&quot;. При компиляции(использую visual c++...

Задача из книги Дейтела "Шахматная доска" - C++
В задаче использовать управляющие структуры(лог.операции, циклы) можно массивы. Остального я пока не знаю))

Задача из книги Дейтела "Ромб" - C++
В задаче использовать управляющие структуры(лог.операции, циклы) можно массивы. Остального я пока не знаю))


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru