Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2013, 18:30   #51
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

я запуталась...получается что программе надо вывести только суммарную выручку.
Diana528 вне форума Ответить с цитированием
Старый 19.02.2013, 18:46   #52
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

Код:
#include <cstdlib>
#include <iostream>

using namespace std;

class ToolBooth 
{
private:
  unsigned int a; // chislo avtomobilei
  double s; //summarnaya viruchka
public:
 ToolBooth(void): a(0), s(0)
 {}
 void PayingCar(void)
 { ++a, s += 0.5f;
}
 void NopayCar(void)
 
      {
 ++a;
}
 void Display(void) const;
 {// Ìåòîä display âûâîäèò îáà çíà÷åíèÿ íà ýêðàí. Íóæíî âûâåñòè ñóììàðíóþ âûðó÷êó
}; 
      void ToolBooth::Display(void) const
 {    
  std::cout << "Najmite klavishu space" <<a << std::endl;

}
int main(void){
    ToolBooth k
    { switch (std::cin.get())
    { case 27: k.Display(); break;
      case 'space': k.PayingCar(); break;
      case 'shift': k.NopayCar(); break;
      return 0;
      }
      }
      }
   
    
 //ïðîãðàììà äîëæíà ïðåäëîæèòü íàæàòü ïîëüçîâàòåëþ êëàâèøó space, äëÿ òîãî, ÷òîáû ñûìèòèðîâàòü
 //çàïëàòèâøåãî êëèåíòà, è êëàâèøó Shift, ÷òîáû ñûìèòèðîâàòü íåäîáðîñîâåñòíîãî âîäèòåëÿ.
 // ïðè íàæàòèè êëàâèøè Esc, ïðîãðàììà âûäàåò ñóììàðíóþ âûðó÷êó.
  
      return 0;
}
Diana528 вне форума Ответить с цитированием
Старый 19.02.2013, 19:03   #53
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

Код:
#include <cstdlib>
#include <iostream>

using namespace std;

class ToolBooth 
{
private:
  unsigned int a; // chislo avtomobilei
  double s; //summarnaya viruchka
public:
 ToolBooth(void): a(0), s(0)
 {}
 void PayingCar(void)
 { ++a, s += 0.5f;
}
 void NopayCar(void)
 
      {
 ++a;
}
 void Display(void) const;

}; 
      void ToolBooth::Display(void) const
 {    
  std::cout << "Zdravstvuite" <<a << std::endl;

}
int main(void){
    ToolBooth k;
    { switch (std::cin.get())
    { case 27: k.Display(); 
    return 0;
    
      case 'space': k.PayingCar(); break;
      case 'shift': k.NopayCar(); break;
         }
      } 
      }
Diana528 вне форума Ответить с цитированием
Старый 19.02.2013, 19:05   #54
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

36:12 C:\Documents and Settings\Di\Ìîè äîêóìåíòû\Diana BVT-12-4\main.cpp [Warning] character constant too long for its type - выводит эту ошибку
Diana528 вне форума Ответить с цитированием
Старый 20.02.2013, 10:08   #55
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

это не ошибка, а предупреждение
_Bers вне форума Ответить с цитированием
Старый 20.02.2013, 10:58   #56
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
я запуталась...получается что программе надо вывести только суммарную выручку.
Нет. Сказано же - "вывести оба значения". Под "обоими значениями" подразумеваются суммарная выручка и число проехавших автомобилей.
Цитата:
Код:
case 'space': k.PayingCar(); break;
      case 'shift': k.NopayCar(); break;
Есть нюанс. 'space', с точки зрения компилятора, достаточно бессмысленное выражение. Обратите внимание, что для обработки нажатия на [Esc] у меня написано "магическое" число 27, а не 'esc' или что-то в этом роде. Дело в том, что std::cin.get() возвращает код введённого символа - это некоторое число. Когда Вы пишете 's' - в тексте программы это тоже число
Код:
int var = 's' + 'u' - 'k'; //Так можно писать - это всего лишь числа
, причём гарантируется, что это число равно коду символа. Такие "скрытые" числа называются символьными литералами. Литерал, соответствующий коду пробела, написать легко. Вот он: ' '. Литерал, соответствующий коду псевдосимвола, вводимого [Esc], так не записать, поэтому я использовал числовое значение (подсмотрев его в таблице). А вот с [Shift] засада: ведь когда Вы нажимаете клавишу [Shift], Вы не вводите никакого символа.
Поэтому я бы настоятельно советовал использовать вместо [Shift] что-нибудь другое (только не [Ctrl] или [Alt] - с ними ровно та же проблема). Скажем, "пробел" (код ' ') для нарушителя и [Enter] (код 13) для честного водителя. Коды других клавиш можно посмотреть например в этой таблице (в самом низу, и, как уже сказано, не обращайте внимания на коды [Ctrl], [Shift] и [Alt] - их нельзя получить с помощью getch(); если же непременно хотите использовать именно [Shift] - понадобятся специфические, не входящие в стандарт C++ функции наподобие kbhit()).

Да, и, по здравом размышлении, std::cin.get() следует заменить на getch(), это был ляп с моей стороны.
Код:
//Учёный кот
class WonderfulCat {
private: 
  int m_numSongs; //Число спетых песен. 

  int m_numTales; //Число рассказанных сказок

  int m_totalGone; //"Смещение" кота от начальной позиции. Если значение
  //отрицательное - это смещение влево, положительное - вправо

public: 
  //Конструктор создаёт новый объект. В нашем случае, аргументов нет, void
  WonderfulCat(void) : m_numSongs(0), m_numTales(0), m_totalGone(0) 
  {} 

  //"пойти налево".
  void GoLeft(void) {
    //Идём налево - +1 к сказкам (гм...), -1 к смещению
    ++m_numTales; --m_totalGone;
  }

  //Аналогично, "пойти направо"
  void GoRight(void){
    //+1 к песням, +1 к смещению
    ++m_numSongs; ++m_totalGone;
  }

  //Метод "отобразить статистику кота".
  void Display(void) const;
};

void WonderfulCat::Display(void) const {
  std::cout << "Songs sung - " << m_numSongs << std::endl;
  std::cout << "Tales told - " << m_numTales << std::endl;

  if(m_totalGone > 0)
    std::cout << "Gone right " << m_totalGone << " steps total." << std::endl;
  else if(m_totalGone < 0)
    std::cout << "Gone left " << -m_totalGone << " steps total." << std::endl;
  else
    std::cout << "Is standing at starting point." << std::endl;
}

int main(void){
  //Создаём 1 (одного) учёного кота:
  WonderfulCat c;
  //До победного конца
  while(true){
    switch(getch()){
    case 27: //27 - код [Esc]
      c.Display();
      //И завершаем работу (обратите внимание, паузы нет - возможно, Вы захотите её поставить):
      return 0;
    case 'l': //Код клавиши [l]
      c.GoLeft();
      break;
    case 'r':
      c.GoRight();
      break;
    }
  }
}
Abstraction вне форума Ответить с цитированием
Старый 20.02.2013, 10:59   #57
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цитата:
Сообщение от Diana528 Посмотреть сообщение
36:12 C:\Documents and Settings\Di\Ìîè äîêóìåíòû\Diana BVT-12-4\main.cpp [Warning] character constant too long for its type - выводит эту ошибку
Что по вашему должна делать строка case 'shift'?
Подсказка - почему чуть выше case 27?
waleri вне форума Ответить с цитированием
Старый 21.02.2013, 17:44   #58
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

выдает ошибку -33 C:\Documents and Settings\Di\Ìîè äîêóìåíòû\Diana BVT-12-4\main.cpp `getch' undeclared (first use this function)
Diana528 вне форума Ответить с цитированием
Старый 21.02.2013, 17:52   #59
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

33 C:\Documents and Settings\Di\Ìîè äîêóìåíòû\Diana BVT-12-4\main.cpp `getch' undeclared (first use this function)
Diana528 вне форума Ответить с цитированием
Старый 21.02.2013, 17:53   #60
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

Код:
#include <cstdlib>
#include <iostream>

using namespace std;

class ToolBooth 
{
private:
  unsigned int a; // chislo avtomobilei
  double s; //summarnaya viruchka
public:
 ToolBooth(void): a(0), s(0)
 {}
 void PayingCar(void)
 { ++a, s += 0.5f;
}
 void NopayCar(void)
 
      {
 ++a;
}
 void Display(void) const;

}; 
      void ToolBooth::Display(void) const
 {    
  std::cout << "Chislo avtomobilei" <<a << std::endl;
  std::cout << "Summarnaya viruchka"<<s << std::endl;
}
int main(void){
    ToolBooth k;
     while(true)
    { switch ()
    { case 27: k.Display(); 
    return 0;
    
      case '37': k.PayingCar(); break;
      case '39': k.NopayCar(); break;
         }
      } 
      }
Diana528 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы в C++ Etete Помощь студентам 0 21.05.2012 21:36
Программа на С#. Классы MarihuanaP Фриланс 12 14.12.2011 05:48
С++,ООП,программа на классы VampIrchik Помощь студентам 1 25.01.2011 20:11
Классы в С++ Stager Помощь студентам 4 05.05.2009 10:05