Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Лафоре. Программирование в С++, помогите сделать упражнение 
:(
    Опции темы
zkv
Дата 7.6.2007, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(BigHeart @  7.6.2007,  21:31 Найти цитируемый пост)
ну как по мне, если есть готовый набор функций, то оформить их в виде класса не есть особая проблема 

не самый правильный подход  smile 
По вашему выходит назначение классов - упорядочивание функций по группам? Для этого существуют пространства имен.
PM MAIL   Вверх
nerezus
  Дата 7.6.2007, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 3
Всего: 43



BigHeart, зря так думаешь.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
BigHeart
Дата 7.6.2007, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 17.3.2007

Репутация: нет
Всего: нет



не правильно поняли. простоDigitSphinxвыложил код,но просто пропустил, что надо было класс писать.

код ведь готовый есть!!! 

теперь его немного переофрмить...

Добавлено через 1 минуту и 21 секунду
чем с начала писать...
PM MAIL   Вверх
Hawaii
Дата 8.6.2007, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 5.6.2007

Репутация: нет
Всего: нет



У меня не работает функция _atold(). Все похожие на неё работают. Наверное компилятор тупит.
PM MAIL   Вверх
DigitSphinx
Дата 8.6.2007, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: 1
Всего: 3



_atold() ?? 
Имеешь ввиду _atodbl()
Если не работает посмотри мой код (последний цикл)
Это и есть что то типа _atoldl()



--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Hawaii
Дата 8.6.2007, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 5.6.2007

Репутация: нет
Всего: нет



Вот чё я написал. Программа работает а _atold() нет... smile 
Код
#include<conio.h>
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<cstring> 
#include<stdlib.h>
#include<math.h>
using namespace std;
int j, ja;
int u = 0;
int p = 0;
class money
  {
  private:
    char monV[100];
    char monX[100];
    long double qwerty;
  public:
     void formating(char s[])
     { 
      for(j=0; j<strlen(s);)
         {
           while (s[j] == '$')
            {
            j++;
            }
          monV[u] = s[j];  
           u++;
           j++;
         }
      monV[u] = '\0';
      for(ja=0; ja<strlen(monV);)
         {
           while (monV[ja] == ',')
            {
            ja++;
            }
          monX[p] = monV[ja];  
           p++;
           ja++;
         }
      monX[p] = '\0';
      long double d = _atold(monX);
      cout << d;
     
     }   

  };
int main()
{
money m1;
char dengi[100];
cout << "Vedi summu v formate $1,234,567,890,123.99 "<< endl;
cin >> dengi;
m1.formating(dengi);
cout << endl;
system("PAUSE");
return 0;
}



Извините за латиницу. Просьба проверить, если не в лом в других компиляторах.
 smile 
PM MAIL   Вверх
DigitSphinx
Дата 8.6.2007, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: 1
Всего: 3



вот так сойдет ?
Код

#include<conio.h>
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<cstring> 
#include<stdlib.h>
#include<math.h>
using namespace std;
int j, ja;
int u = 0;
int p = 0;
class money
  {
      
  private:
    char monV[100];
    char monX[100];
    long double qwerty;
  public:
      money::money()
      {
          qwerty = 0.0;
      }
     void formating(char s[])
     { 
      for(j=0; j<strlen(s);)
         {
           while (s[j] == '$')
            {
            j++;
            }
          monV[u] = s[j];  
           u++;
           j++;
         }
      monV[u] = '\0';
      for(ja=0; ja<strlen(monV);)
         {
           while (monV[ja] == ',')
            {
            ja++;
            }
          monX[p] = monV[ja];  
           p++;
           ja++;
         }
      monX[p] = '\0';
      long double d = 0.0;
      long double e = 1.0;

      for(int i = strlen(monX);i--;) 
            if (monX[i] != 46)// '.' = 46
            {
               d += (monX[i] - 48) * e;
               e *= 10.0;
            }
      d /= 100;
      cout << d << endl;
      printf("%.2f", d);
     }   
  };
int main()
{
money m1;
char dengi[100];
cout << "Vedi summu v formate $1,234,567,890,123.99 "<< endl;
cin >> dengi;
m1.formating(dengi);
cout << endl;
system("PAUSE");
return 0;
}

на VS2005  smile 

Это сообщение отредактировал(а) DigitSphinx - 8.6.2007, 23:46


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Hawaii
Дата 8.6.2007, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 5.6.2007

Репутация: нет
Всего: нет



он у меня не видит int _tmain(int argc, _TCHAR* argv[]), пишет `_TCHAR' has not been declared 

Это сообщение отредактировал(а) Hawaii - 8.6.2007, 23:45
PM MAIL   Вверх
DigitSphinx
Дата 8.6.2007, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: 1
Всего: 3



соррррри , я исправил  smile 
теперь на все 100%  smile 

Это сообщение отредактировал(а) DigitSphinx - 8.6.2007, 23:47


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Damarus
Дата 9.6.2007, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 6
Всего: 29



Код
#include <iostream>
#include <string>
#include <strstream>

class money
{
public:
    money(void) : m_value(0.0)
    {

    }
    money(const std::string& str) : m_value(0.0)
    {
        m_value = mstold(str.c_str());
    }
    money(const char* str) : m_value(0.0)
    {
        m_value = mstold(str);
    }
    money(const long double value) : m_value(value)
    {

    }

public:
    inline operator long double () const
    {
        return m_value;
    }

private:
    long double mstold(const char* str) const
    {
        std::strstream buffer;
        long double value = 0.0;

        while (*str++) if ((*str >= '0' && *str <= '9') || *str == '.') buffer << *str;
        buffer >> value;

        return value;
    }

private:
    long double m_value;
};

int main(int argc, char *argv[])
{
    for (int n = 0; n < 5; n++)
    {
        std::string str;
        std::cout << "Введите строку: ";
        std::cin >> str;
        money m(str);
        std::cout << "Значение long double: " << m << std::endl;
    }
}


ЗЫ. Добавить операторы по необходимости smile 
PM MAIL ICQ Jabber   Вверх
Hawaii
Дата 12.6.2007, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 5.6.2007

Репутация: нет
Всего: нет



Кто мне может помочь написать код. Нужно перегрузить ПОСТФИКСНЫЕ операции уменьшения и увеличеия значений класса Time. Шаг 1 сек. Много всяких вариантов перепробовал, всегда выходит с ошибками. Когда начинаю подставлять другие аргументы в объект time1, получаются отрицательные минуты, секунды.
Код
#include <iostream>
using namespace std;
////////////////////////////////////////////////////////////////
class Time
   {
   private:
      int hrs, mins, secs;
   public:
      Time() : hrs(0), mins(0), secs(0)
         {  }
                                       
      Time(int h, int m, int s) : hrs(h), mins(m), secs(s)         
         {  }

      void display()              
         { cout << hrs << ":" << mins << ":" << secs; cout << endl; }

      Time operator ++()                
      {                                  
            ++secs;                      
            if(secs > 59)                
             {secs -= 60; ++mins ;}      
            if(mins > 59)                
             {mins -= 60; ++hrs;}        
            if(hrs >= 24)                
             {hrs-=24;}                 
                                         
       return Time (hrs, mins, secs);    
      }                                 
      Time operator --()
      { 
           --secs;
           if(secs <0)
             {secs+=60; --mins ;}
           if(mins <0)
             {mins += 60; --hrs;}
           if(hrs <0)
             {hrs+=24;}
        return Time (hrs, mins, secs);        
      } 
      Time operator ++(int)
      { 
           
        //???????????????????????????????  
        
      }
      Time operator --(int)
      {
           
        //???????????????????????????????
        
      }
   };
////////////////////////////////////////////////////////////////
int main()
   {
   Time time1(23, 59, 59);
   Time time2;
   
   time1++;
   time1.display(); 
   
   time2 = time1++;
   time1.display();
   time2.display();
   
   cout << endl;
   system("PAUSE");
   return 0;
   }




PM MAIL   Вверх
Xenon
Дата 12.6.2007, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Код

#include <iostream>
using namespace std;
////////////////////////////////////////////////////////////////
class Time
{
private:
    int hrs, mins, secs;
public:
    Time():hrs(0), mins(0), secs(0) {}
    Time(int h, int m, int s):hrs(h), mins(m), secs(s) {}
    Time(const Time& obj):hrs(obj.hrs), mins(obj.mins), secs(obj.secs) {}
    void display()              
    {
        cout << hrs << ":" << mins << ":" << secs << endl; 
    }
    Time& operator ++()                
    {                                  
        ++secs;                      
        if(secs > 59)                
        {
            secs -= 60; 
            ++mins;
        }      
        if(mins > 59)
        {
            mins -= 60; 
            ++hrs;
        }        
        if(hrs >= 24) hrs-=24;
        return *this;
    }                                 
    Time& operator --()
    { 
        --secs;
        if(secs < 0)
        {
            secs+=60;
            --mins;
        }
        if(mins < 0)
        {
            mins += 60; 
            --hrs;
        }
        if(hrs < 0) hrs+=24;
        return *this; 
    } 
    Time operator ++(int)
    {
        Time buf(*this);
        ++*this;
        return buf;        
    }
    Time operator --(int)
    {
        Time buf(*this);
        --*this;
        return buf;
    }
};
////////////////////////////////////////////////////////////////
int main()
{
   Time time1(23, 59, 59);
   Time time2;
   
   time1++;
   time1.display(); 
   
   time2 = time1++;
   time1.display();
   time2.display();
   
   cout << endl;
   system("PAUSE");
   return 0;   
}



--------------------
user posted image  
PM MAIL   Вверх
Hawaii
Дата 12.6.2007, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 5.6.2007

Репутация: нет
Всего: нет



Большое спасибо.
PM MAIL   Вверх
Damarus
Дата 12.6.2007, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 6
Всего: 29



Hawaii, может проще хранить время в секундах smile 
PM MAIL ICQ Jabber   Вверх
Xenon
Дата 12.6.2007, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Damarus, ну просто в книге пример такой smile


--------------------
user posted image  
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0861 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.