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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2014, 17:50   #1
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию Проверка кода на ошибки (описать класс Time на С++)

Код:
#include <iostream>
using namespace std;

class Time
{
  private:
    int hour;
    int min;
    int sec;
  public:
    void get_time ();
    void show_time ()
    {cout <<'\n' << hour << ' : ' << min << ' : ' << sec;}
    bool isHour (int t){
      if (t< 0 || t>23)
      return 0;
    }
    bool isMinSec (int t)
      {if (t<0 || t >59) return 0;}
};
//----------------------------------------------------
void Time::get_time ()
{
  Time t;
  while (true)
  {
    cout << "\nVvedite chasy: ";
    cin.unsetf(ios::skipws);
    cin >> t.hour; int ti = t.hour;
    if (isHour (ti) && cin.good())
      {cin.ignore (10, '\n'); break; }
    cin.clear();
    cin.ignore(10, '\n');
    cout << "Nevernyi format!!!";
  }
  while (true)
  {
    cout << "Vvedite minuty: ";
    cin.unsetf(ios::skipws);
    cin >> t.min; int mi = t.min;
    if (isMinSec(mi) && cin.good())
      { cin.ignore(10, '\n'); break; }
    cin.clear();
    cin.ignore(10, '\n');
    cout << "\nNe pravil'nyi format vremeni!";
  }
  while (true)
  {
    cout << "Vvedite minuty: ";
    cin.unsetf(ios::skipws);
    cin >> t.sec; int se = t.sec;
    if (isMinSec(se) && cin.good())
      { cin.ignore(10, '\n'); break; }
    cin.clear();
    cin.ignore(10, '\n');
    cout << "\nNe pravil'nyi format vremeni!";
  }
}
//-----------------------------------------------------
int main ()
{
  Time t;
  t.get_time();
  t.show_time();
  cout << endl;
  system ("pause");
  return 0;
}
Привет, ребят? Прошу помочь. Вроде с ошибками в порядке все, а с выводом времени на екран проблемы
Код:
void show_time ()
    {cout <<'\n' << hour << ' : ' << min << ' : ' << sec;}
Изображения
Тип файла: jpg Безымянный.jpg (27.1 Кб, 133 просмотров)
igoreshka3333 вне форума Ответить с цитированием
Старый 06.10.2014, 18:19   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
void Time::get_time ()
{
Time t;
Time t отсюда выкинь.
и еще:
Цитата:
cin >> t.hour; int ti = t.hour;
t. тоже не пиши. Ибо тут должны заноситься в поля этого класса.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.10.2014, 18:27   #3
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

Код:
void Time::get_time ()
{
  while (true)
  {
    cout << "\nVvedite chasy: ";
    cin.unsetf(ios::skipws);
    cin >> hour; int ti = hour;
    if (isHour (ti) && cin.good())
      {cin.ignore (10, '\n'); break; }
    cin.clear();
    cin.ignore(10, '\n');
    cout << "Nevernyi format!!!";
  }
Убрал, но все равно адреса выводит!

И еще: компилируется нормально, но подводит строку на уровне метода ШОУТАЙМ с замечанием:
Код:
Multi-character character constant

Последний раз редактировалось Stilet; 18.10.2014 в 11:21.
igoreshka3333 вне форума Ответить с цитированием
Старый 06.10.2014, 19:56   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не знаю что ты там с стандартными потоками навертел, но вот так работает:
Код:
#include <iostream>

using namespace std;

class Time
{
  private:
    int hour;
    int min;
    int sec;

  public:
    void get_time ();

    void show_time ()
    {cout <<"\n" << hour  << " : " << min  << " : " << sec;}
    bool isHour (){ return (hour> 0 && hour<23);   }
    bool isMinSec (){return (min>=0 && min <=59);}
};
//----------------------------------------------------
void Time::get_time ()
{
  while (true)
  {
    cout << "\nVvedite chasy: ";
    cin >> hour;
    if (isHour ())
      { break; }
    cout << "Nevernyi format!!!";
  }
  while (true)
  {
    cout << "Vvedite minuty: ";
    cin >> min;
    if (isMinSec())
      {  break; }
    cout << "\nNe pravil'nyi format vremeni!";
  }
  while (true)
  {
    cout << "Vvedite Sec: ";
    cin >> sec;
    if (isMinSec())
      {  break; }
    cout << "\nNe pravil'nyi format vremeni!";
  }
}
//-----------------------------------------------------

int main()
{
Time *t=new Time();
  t->get_time();
  t->show_time();
  delete t;
  cout << endl;
  cin.get();
  return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.10.2014, 21:55   #5
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

Спасибо, Стил!
Цитата:
Сообщение от Stilet Посмотреть сообщение
Не знаю что ты там с стандартными потоками навертел
Я ж новичек Мне можно вертеть!
igoreshka3333 вне форума Ответить с цитированием
Старый 06.10.2014, 22:01   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну смотри демонов своими заклятьями не вызови )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.10.2014, 22:59   #7
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Для начала очень даже неплохо! Молодец!

Очень хорошая задача! Вы её только начали решать. Это первый этап - добиться, чтобы работало. А теперь нужно рефакторить и рефакторить (то есть, улучшать и улучшать). Не упускайте возможности извлечь из этой пещеры, как можно больше сокровищ!

Для начала переведите на английский. Если не знаете, то имейте ввиду, что https://translate.google.com очень хорошо переводит. Например, вы вводите: "Введите часы" И получаете "Enter hours"

Класс уберите в отдельный файл, чтобы другие программисты могли себе скопировать файлы "Time.h" и "Time.cpp" и подключить с помощью #include "Time.h"

Последний раз редактировалось Stilet; 18.10.2014 в 11:21.
8Observer8 вне форума Ответить с цитированием
Старый 06.10.2014, 23:54   #8
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

Спасибо) Английский, как понимаю, очень необходим! Буду немного ИТишный английский осваивать)
Кстати, не могли бы подсказать план действий насчет следующей задачи?

Код:
Создайте класс name. Создайте методы для этого класса,осуществляющие 
файловый ввод/вывод данных указанного класса (с использованием ofstream и ifstream).
 Используйте форматирование данных (операторы << и >>). Функции чтения и записи 
должны быть независимыми: в них необходимо внести выражения для открытия 
соответствующего потока, а также чтения и записи данных.
1) То есть, под "форматированием данных" надо подразумевать перегрузку операторов << и >>?
2) Функции чтения и записи сделать методами и назвать write () и read()?
igoreshka3333 вне форума Ответить с цитированием
Старый 07.10.2014, 00:14   #9
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Тоже отличное задание и направление мысли! Я завтра в течении дня напишу свои соображения

Несколько замечаний.

1. Почти в любой IDE есть средства для форматирования кода по нажатию горячих клавиш. Эти средства можно гибко настроить под себя. Это очень удобно. Например, когда вы начнёте помогать другим, то увидите, как удобно скопировать к себе чужой неотформатированный код, и в момент отформатировать

2. У вас уже большая программа, а не демо-пример, поэтому вынесите ваш класс в отдельные файлы. Вы потом сами осознаете, как это удобно, когда у вас появится 2-3 класса и более

Time.h
Код:
#ifndef TIME_H
#define TIME_H

#include <iostream>
using namespace std;

class Time
{
  private:
    int hour;
    int min;
    int sec;

  public:
    void get_time ();

    void show_time ()
    {cout <<"\n" << hour  << " : " << min  << " : " << sec;}
    bool isHour (){ return (hour> 0 && hour<23);   }
    bool isMinSec (){return (min>=0 && min <=59);}
};

#endif // TIME_H
Time.cpp
Код:
#include "Time.h"

void Time::get_time ()
{
  while (true)
  {
    cout << "\nVvedite chasy: ";
    cin >> hour;
    if (isHour ())
      { break; }
    cout << "Nevernyi format!!!";
  }
  while (true)
  {
    cout << "Vvedite minuty: ";
    cin >> min;
    if (isMinSec())
      {  break; }
    cout << "\nNe pravil'nyi format vremeni!";
  }
  while (true)
  {
    cout << "Vvedite Sec: ";
    cin >> sec;
    if (isMinSec())
      {  break; }
    cout << "\nNe pravil'nyi format vremeni!";
  }
}
main.cpp
Код:

#include "Time.h"
#include <iostream>
using namespace std;

int main()
{
  Time *t=new Time();
  t->get_time();
  t->show_time();
  delete t;
  cout << endl;
  cin.get();
  return 0;
}
P.S. Не всё сразу, потом ещё напишу. Пока эту информацию переварите. Вопросов побольше задавайте

Цитата:
2. У вас уже большая программа, а не демо-пример, поэтому вынесите ваш класс в отдельные файлы. Вы потом сами осознаете, как это удобно, когда у вас появится 2-3 класса и более
Правда проблему лучше всего выкладывать в коротких демо-примерах, когда нет лишнего кода, а только код, который демонстрирует проблему

Последний раз редактировалось Stilet; 18.10.2014 в 11:21.
8Observer8 вне форума Ответить с цитированием
Старый 07.10.2014, 11:10   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
То есть, под "форматированием данных" надо подразумевать перегрузку операторов << и >>?
Кажись для cout есть какие-то методы установок флагов форматирования вывода. Не помню точно какие нуна в МСДН копаться.
Цитата:
Функции чтения и записи сделать методами и назвать write () и read()?
Да это как хочешь )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
описать класс в с# volkodinocka Помощь студентам 0 09.11.2013 22:05
Описать класс С# NeoX_2011 Помощь студентам 1 19.03.2012 00:10
C# исправление ошибки. Описать класс, реализующий шестнадцатеричный счетчик PROkaZZZniK Помощь студентам 7 09.02.2012 16:29
Описать класс-родитель и класс-потомок. Delphi 7 Andrew_M Помощь студентам 0 15.01.2011 14:42
Описать класс. Telec Общие вопросы C/C++ 1 30.04.2010 18:43