Тема: синтаксис або що?

// times1.cpp
// программа перевода времени в 24-часовом написании
// в 12-часовое 
#include <iostream>
#include <string>
using namespace std;
///////////////////////////////////////////////////////////
class time12
{
private:
bool pm;
int hrs;
int mins;
public:
time12 ( ) : pm ( true ), hrs ( 0 ), mins ( 0 )
{ }
time12 ( bool ap, int h, int m ) : pm ( ap ), hrs ( h ), mins ( m )
{ }
void display ( ) const
{
cout << hrs << ':';
if ( mins < 10 )
cout << '0';
cout << mins << ' ';
string am_pm = pm ? "p.m." : "a.m.";
cout << am_pm;
}
};
///////////////////////////////////////////////////////////
class time24
{
private:
int hours;
int minutes;
int seconds;
public:
time24 ( ) : hours ( 0 ), minutes ( 0 ), seconds ( 0 )
{ }
time24 ( int h, int m, int s ) : hours ( h ), minutes ( m ), seconds ( s )
{ }
void display ( ) const
{
if ( hours < 10 ) cout << '0';
cout << hours << ':';
if ( minutes < 10 ) cout << '0';
cout << minutes << ':';
if ( seconds < 10 ) cout << '0';
cout << seconds;
}
operator time12 ( ) const;
};
///////////////////////////////////////////////////////////
time24::operator time12 ( ) const
{
int hrs24 = hours;
bool pm = hours < 12 ? false : true;
int roundMins = seconds < 30 ? minutes : minutes + 1;
if ( roundMins == 60 )
{
roundMins = 0;
++hrs24;
if ( hrs24 == 12 ||hrs24 == 24 )
pm = ( pm == true ) ? false : true;
}
int hrs12 = ( hrs24 < 13 ) ? hrs24 : hrs24 – 12;
if ( hrs12 == 0 )
{
hrs12 = 12;
pm = false;
}
return time12 ( pm, hrs12, roundMins );
}
///////////////////////////////////////////////////////////
int main ( )
{
int h, m, s;
while ( true )
{
cout << "Введите время в 24-часовом формате: \n";
cout << " Часы (от 0 до 23): "; cin >> h;
if ( h > 23 )
return ( 1 );
cout << " Минуты: "; cin >> m;
cout << " Секунды: "; cin >> s;
time24 t24 ( h, m, s );
cout << "Исходное время: ";
t24.display ( );
time12 t12 = t24;
cout << "\nВ 12-часовом формате: ";
t12.display ( );
cout << "\n\n";
}
return 0;
}

Здрастуйте всім! Якась помилка в книзі. Я синтаксичної помилки як ніби-то не бачу.
Абсолютно зрозумілий зміст виразу в цьому рядку, і так воно могло б бути.

Це все-таки синтаксис або що? Як бути?

Впевнений, цє компілятор саме у цьому місці не розуміє – 12, тільки не зрозуміло чому.
Не бажаю ускладнювати програму, переписуючі строку з усякими іф-єлсє... Що ж краще робити?


Офигеть!! Раніше волало що в рядку int hrs12 = ( hrs24 < 13 ) ? hrs24 : hrs24 – 12; не знайдена кома з крапкою, перед знаком мінуса, а
тут чи то- скомпілювалося, але помилки і я такє першого разу бачу!!



Ошибка    1    error MSB6006: "CL.exe" завершилась с кодом 2.    C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets    147    6    TIMES1



        AcceptableNonZeroExitCodes         ="%(ClCompile.AcceptableNonZeroExitCodes)"
        YieldDuringToolExecution           ="$(ClYieldDuringToolExecution)"
    >
    </CL>

    <!-- Rest of the sources -->
    <CL Condition="'%(ClCompile.PrecompiledHeader)' != 'Create' and '%(ClCompile.ExcludedFromBuild)'!='true'"
        BuildingInIDE                      ="$(BuildingInsideVisualStudio)"
        Sources                            ="@(ClCompile)"

        AdditionalIncludeDirectories       ="%(ClCompile.AdditionalIncludeDirectories)"
        AdditionalOptions                  ="%(ClCompile.AdditionalOptions)"
        AdditionalUsingDirectories         ="%(ClCompile.AdditionalUsingDirectories)"
        AssemblerListingLocation           ="%(ClCompile.AssemblerListingLocation)"
        AssemblerOutput                    ="%(ClCompile.AssemblerOutput)"
        BasicRuntimeChecks                 ="%(ClCompile.BasicRuntimeChecks)"
        BrowseInformation                  ="%(ClCompile.BrowseInformation)"
        BrowseInformationFile              ="%(ClCompile.BrowseInformationFile)"
        BufferSecurityCheck                ="%(ClCompile.BufferSecurityCheck)"

Re: синтаксис або що?

Да. Ошибка    2    error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "–"    d:\rozbir\ lafore\times1\times1\times1.cpp    65    1    TIMES1

3 Востаннє редагувалося quez (22.04.2015 16:27:58)

Re: синтаксис або що?

Мінус в 65 рядку зовсім не мінус (як мінімум той, який вставлений тут). Може в ньому причина?

Подякували: Дмитро-Чебурашка2

Re: синтаксис або що?

Я зараз візьму  його хекс- редактором, подивлюся тай поминяю..

Re: синтаксис або що?

Було 20 96 20  змінив на 20 2D 20...  Так!!!  Працює!!!!!!!

Re: синтаксис або що?

Хто б знав!!   Такє..   Цє ж трєба!!   Виглядає зовсім однаково.