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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2010, 14:33   #1
NewMoon
Новичок
Джуниор
 
Регистрация: 20.08.2010
Сообщений: 2
Восклицание с++, структура Money

Здравствуйте, помогите отладить программку! Задание:
Создать структуру Money для работы с денежными суммами. Число должно быть представлено двумя полями: типа long для рублей и типа unsigned char — для копеек. Дробная часть (копейки) при выводе на экран должна быть отделена от целой части запятой. Реализовать сложение, вычитание, деление сумм, деление суммы на дробное число, умножение на дробное число.
Вот примерный код, но копейки представлены как unsigned int, помогите переделать в unsigned char
Код:
#pragma hdrstop
#pragma argsused
#include <conio.h>
#include <iostream.h>
 struct Money{
 long roubles;
      unsigned int copecks;
      float wholeSum;
      };
      void init(Money* arg)
      {
           arg->roubles = (int)arg->wholeSum;
           arg->copecks = (int)((arg->wholeSum - (int)arg->wholeSum) * 100);
      }
             void Read(Money* arg)
             {
             cout<<"vvedite summu ";
                  cin >>arg->wholeSum;
                  init(arg);
             }
             void Display(Money* arg)
             {
                  //stringstream out;
                  //string str;
                  cout << arg->roubles << ",";
                  if (arg->copecks < 10)
                  {
                              cout << "0";
                  }
                  cout << arg->copecks;  getch();
                  /*str = out.str();
                  return str; */
             }
             Money* Sum ()
             {
                    Money* arg1 = new Money;
                    Money* arg2 = new Money;
                    Read(arg1); Read(arg2);
Money* temp = new Money;
                    temp->wholeSum = arg1->wholeSum + arg2->wholeSum;
                    init(temp);
                    return temp;
             }
             Money* Razn ()
             { 
                    Money* temp = new Money;
                    Money* arg1 = new Money;
                    Money* arg2 = new Money;
                    Read(arg1); Read(arg2);
                    temp->wholeSum = arg1->wholeSum - arg2->wholeSum;
                    init(temp);
                    return temp;
             }
             float Divide ()
             {
                    Money* arg1 = new Money;
                    Money* arg2 = new Money;
                    Read(arg1); Read(arg2);
                    float temp;
                    cout<<"vvedite chislo ";
                    cin>>temp;
                    temp = arg1->wholeSum / arg2->wholeSum;
                    return temp;
             }
             Money* Divide1 ()
             {       Money* arg1 = new Money;
                        Read(arg1); float arg;
                    cout<<"vvedite chislo ";
                    cin>>arg;
                    Money* temp=new Money;
                    temp->wholeSum = arg1->wholeSum / arg;
                    init(temp);
                    return temp;
             }
             Money* Sub ()
             {       Money* arg1 = new Money;
                        Read(arg1); float arg;
                    cout<<"vvedite chislo ";
                    cin>>arg;
                    Money* temp=new Money;
                    temp->wholeSum = arg1->wholeSum * arg;
                    init(temp);
                    return temp;
             }

 int menu()
        {
        clrscr();
        cout<<"\n\n\n\tMenu";
        cout<<"\n------------------------";
        cout<<"\n  1. Summa";
        cout<<"\n  2. Raznost'";
        cout<<"\n  3. Umnozh";
        cout<<"\n  4. Devide rub";
        cout<<"\n  5. Devide float";
        cout<<"\n  6. Del All";
        cout<<"\n  7. Exit";

        cout<<"\n-------------------------";
        cout<<"\n\tYour choice(1-7)";
        int w;
        cin>>w;
        return w;
        }

int main(int argc, char* argv[])
{int s;
do{
s=menu();
switch (s){
        case 1: Display(Sum()); break;
        case 2:Display(Razn()); break;
        case 3:Display(Sub()); break;
        case 4:cout<<Divide();getch();break;
        case 5:Display(Divide1());break;
        case 6:break;
        case 7: break;}
        }
        while(s!=7);

getch();
        return 0;
}
NewMoon вне форума Ответить с цитированием
Старый 20.08.2010, 14:43   #2
Bonez92
Пользователь
 
Регистрация: 11.10.2009
Сообщений: 29
По умолчанию

unsigned int copecks;
Исправьте на
unsigned char copecks;

В функции Display исправьте
cout << arg->copecks; getch()
на
cout << (int)arg->copecks; getch();
Bonez92 вне форума Ответить с цитированием
Старый 20.08.2010, 19:55   #3
NewMoon
Новичок
Джуниор
 
Регистрация: 20.08.2010
Сообщений: 2
По умолчанию

спасибо большое))
NewMoon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
sb-money.ru VintProg Свободное общение 9 07.06.2010 07:52
Тип данных Money frustr Помощь студентам 2 06.05.2010 12:01
Сборщики money Sanek777 Софт 8 04.11.2008 10:57