Форум программистов, компьютерный форум CyberForum.ru

Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Конвертер текстового файла http://www.cyberforum.ru/cpp-beginners/thread439174.html
Добрый день!!! Простите за наглость... Помогите пожалуйста написать программу-конвертер текстовых файлов из dos в windows и обратно. С командной строки должно вводится направление /d или /w. Я очень мало в этом понимаю. Заранее спасибо!!!
C++ Проблема с libmms - ошибка при компиляции. Здравствуйте. Уже который день не могу разобраться с упомянутой в заголовке библиотекой, а именно: пишу примерно такой тестовый код #include <iostream> #include <libmms/mms.h> int main() { mms_t *stream; char mms_link="mms://audio.rfn.ru/radiorus/audio/710/90.asf"; stream=mms_connect(0, 0, mms_link, 128); http://www.cyberforum.ru/cpp-beginners/thread439169.html
C++ Привет. Как можна найти с даного примера умножение элементов массива с четными номерами?
#include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <iostream> using namespace std; int main(int argc, _TCHAR* argv)
C++ Начало DEV С++
Здравствуйте, подскажите где ошибка? Задание Даны действительные числа х, у . Если х, у отрицательные то каждое значение заменить его модулем; если отрицательное только одно из них, то оба значения увеличить на 0.5; если оба значения не отрицательные и ни одно из них не принадлежат отрезку , то оба значения уменьшить в 10 раз; в остальных случаях х, у оставить без изменения. Решение ...
C++ Запись текста в файл http://www.cyberforum.ru/cpp-beginners/thread439138.html
Нужно составить прогрумма которая создает файл и записывает в него текст. Программа не записывает в файл текст после пробела, помогите пожалуйста. char name; char text; cout<<"vvedite put' i im9 faila:\n"; cin>>name; ofstream out(name); cout<<"vvedite text:\n"; cin>>text; out<<text; out.close();
C++ allocator std::map Подскажите вопрос, есть тестовое задание: Написать allocator для std::map, располагающий элементы контейнера последовательно в памяти. Подскажите где про это почитать и разъясните по-возможности, что это вообще такое (std::map я вкурсе что это контейнер и как с ним работать) в ступор вводит allocator подробнее

Показать сообщение отдельно
Рики
6 / 6 / 1
Регистрация: 27.02.2013
Сообщений: 23
28.03.2013, 23:35     Решение всех упражнений из книги Р. Лафоре "Объектно-ориентированное программирование в С++"
если я ввожу пенсов больше чем 12 (шиллингов больше чем 20) в несколько раз
я выходил из соображений, что 1 фунт и 25 шиллингов это 2 фунта и 5 шиллингов.
Если все работает, то выходит как и проверка есть)

Добавлено через 6 минут
Глава 7 Упражнение №4
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
int maxint (int [], int);
int main ( )
{
  setlocale (LC_ALL, "russian");
  const int SIZE = 6;
  int sales [ SIZE ];
  int j;
  cout << "Введите шесть значений\n";
  for ( j = 0; j < SIZE; j++ )
    cin >> sales [ j ];
  cout << "Индекс наибольшего числа: " <<maxint(sales, SIZE)<<endl;
  system("pause");
  return 0;
}
//------------------------------------------------------------------------------
int maxint (int m [], int k)
  {
  int j, max=0;
  for ( j = 0; j < k; j++ )
    if (m [j] > m [max] )
       max = j;
  return max;
  }


Глава 7 Упражнение №5
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <iostream>
#include<cmath>
using namespace std;
////////////////////////////////////////////////////////////////////////////////
class fraction
{
   private:
      int chis, znam;
   public:
      fraction(): chis(0), znam(0)
        {}
      fraction(int c, int z): chis(c), znam(z)
        {}  
     void set_drobi ()
        {
            char drob; 
            cout<< "Введите значение дроби в формате x/y: "<<endl;
            cin>>chis>>drob>>znam;
        }
      void show_drobi()const
        {
            cout<< chis<<"/"<<znam<<endl;
        }
      void add_drobi(fraction, fraction);  
      void lowterms (); 
      void average (fraction, int);
};
//------------------------------------------------------------------------------
void fraction::add_drobi (fraction d1, fraction d2)
    {
        chis = (d1.chis*d2.znam+d1.znam*d2.chis);
        znam = (d1.znam*d2.znam);  
    }
//------------------------------------------------------------------------------
    void fraction::lowterms ()
    {
        long tchis, tznam, temp, gcd;
        tchis = labs(chis);
        tznam = labs(znam);
        if (tznam == 0)
            { cout<<"Недопустимый знаменатель!"; exit(1);}
        else if (tchis == 0)
            { chis = 0; znam = 1; return;}
        while(tchis !=0)
            {
                if(tchis < tznam)
                    {temp = tchis; tchis = tznam; tznam = temp;}
                tchis = tchis - tznam;
            }
        gcd = tznam;
        chis = chis/gcd;
        znam = znam/gcd;
    }
//---------------------------------------------------------
void fraction::average (fraction d1, int n)
{
    chis = (d1.chis*1);
    znam = (d1.znam*n);  
}
////////////////////////////////////////////////////////////////////////////////
int main()
{
  setlocale (LC_ALL, "russian");
  fraction frac [100]; 
  fraction total, aver; 
  int n = 0;             // счетчик данных
  int j, i;
  char ans;              // ответ пользователя (д/н)
 
  cout << endl;
  do
  {
    frac [ n++ ].set_drobi();      // получаем и сохраняем 
    cout << "Продолжить ввод (y/n)?: ";
    cin >> ans;
  }
  while ( ans != 'n' );            // продолжать, пока не будет введено 'н'
  
  for ( int j = 0; j < n; j++ )
  {
    cout << "\nДробь номер " << j + 1 << " : ";
    frac [ j ].show_drobi ( );
  }
  total = frac [ 0 ];
  for ( i = 1; i < n; i++)
    total.add_drobi (frac [ i ], total);
  total.lowterms();
  aver.average(total, n);
  aver.lowterms();
  cout << "\nСреднее значение введенных дробей: ";
  aver.show_drobi ( );
  cout << endl;
system("pause");
return 0;
}


Глава 7 Упражнение №6
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
enum Suit { clubs, diamonds, hearts, spades };
// от 2 до 10 обычные числа
const int jack = 11;
const int queen = 12;
const int king = 13;
const int ace = 14;
/////////////////////////////////////////////////////////////
class card
{
  private:
    int number;
    Suit suit;
  public:
    card ( ) // конструктор
      { }
    void set ( int n, Suit s ) // установка значения
      { suit = s; number = n; }
    void display ( );          // показ карты
};
/////////////////////////////////////////////////////////////
void card::display ( )
{
  if ( number >= 2 && number <= 10 )
    cout << number;
  else
  {
    switch ( number )
    {
      case jack: cout << 'J'; break;
      case queen: cout << 'Q'; break;
      case king: cout << 'K'; break;
      case ace: cout << 'A'; break;
    }
  }
  switch ( suit )
  {
    case clubs: cout << static_cast<char>( 5 ); break;
    case diamonds: cout << static_cast<char>( 4 ); break;
    case hearts: cout << static_cast<char>( 3 ); break;
    case spades: cout << static_cast<char>( 6 ); break;
  }
}
/////////////////////////////////////////////////////////////
int main ( )
{
  setlocale (LC_ALL, "russian");
  card deck [ 52 ];
  const int MAX = 13;
  card p1 [MAX], p2 [MAX], p3 [MAX], p4 [MAX];
  int j;
 
  cout << endl;
  for ( j = 0; j < 52; j++ )   // создаем упорядоченную колоду карт
  {
    int num = ( j % 13 ) + 2;
    Suit su = Suit ( j / 13 );
    deck [ j ].set ( num, su );
  }
  // показываем исходную колоду
  cout << "Исходная колода:\n";
  for ( j = 0; j < 52; j++ )
  {
    deck [ j ].display ( );
    cout << "  ";
    if ( !( ( j + 1 ) % 13 ) ) // начинаем новую строку после каждой 13-й карты
      cout << endl;
  }
  srand ( time ( NULL ) );     // инициализируем генератор случайных чисел
  for ( j = 0; j < 52; j++ )
  {
    int k = rand ( ) % 52;     // выбираем случайную карту
    card temp = deck [ j ];    // и меняем ее с текущей
    deck [ j ] = deck [ k ];
    deck [ k ] = temp;
  }
  cout << endl;
  int i;
  cout << "После перемешивания.\n"<< endl;;
  cout << "Карты первого игрока:\n";
  for ( j = 0, i = 0; j < 13; i++, j++ )
  {     
        p1 [i] = deck [ j ];
        p1 [i].display ( );
        cout << "  ";
  }
  cout << endl;
  cout << "\nКарты второго игрока:\n";
  for ( j = 13, i = 0; j < 26; i++, j++ )
  {     
        p2 [i] = deck [ j ];
        p2 [i].display ( );
        cout << "  ";
  }
  cout << endl;
  cout << "\nКарты третьего игрока:\n";
  for ( j = 26, i = 0; j < 39; i++, j++ )
  {     
        p3 [i] = deck [ j ];
        p3 [i].display ( );
        cout << "  ";
  }
  cout << endl;
  cout << "\nКарты четвертого игрока:\n";
  for ( j = 39, i = 0; j < 52; i++, j++ )
  {     
        p4 [i] = deck [ j ];
        p4 [i].display ( );
        cout << "  ";
  }
  cout << endl;
  system("pause");
  return 0;
}


_atold так и не заработало.

Глава 7 Упражнение №7
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <cmath>
#include <stdlib.h> 
#include <cstring>
#include <cstdlib>
#include <stdio.h> 
using namespace std;
const int MAX = 50;
/////////////////////////////////////////////////////////////
class money
{
  private:
    long double longMoney;
  public:
    money ():longMoney(0.0) // конструктор
      { }
    void mstold ( char []);
    void display ( )const
      {
            cout << longMoney << endl; 
      }           
};
//-----------------------------------------------------------
    void money::mstold ( char s [])
      {
            int j, k = 0;
            char tolkoChisla [MAX];
            int l = strlen(s);
            for (j = 0; j<l; j++)
            {
               if (s [j]== '0' || s [j]== '1' || s [j]== '2'
               || s [j]== '3' || s [j]== '4' || s [j]== '5'
               || s [j]== '6' || s [j]== '7' || s [j]== '8'
               || s [j]== '9' || s [j]== '.' )
                    {
                        tolkoChisla [k]=s[j];
                        k++;
                    }                    
            }
            tolkoChisla [k]='\0';
            longMoney =strtold (tolkoChisla, NULL );
                   
      }  
/////////////////////////////////////////////////////////////
int main ( )
{
  setlocale (LC_ALL, "russian");
  money m1;
  char stringMoney[MAX];
  cout << "Введите денежную сумму в формате \"$xxx,xxx,xxx.xx\"" << endl;
  cin >>  stringMoney;
  m1.mstold(stringMoney);
  m1.display ( );
  system("pause");
  return 0;
}


Глава 7 Упражнение №8
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <process.h>
using namespace std;
/////////////////////////////////////////////////////////////
class safearay
{
  private:
    static const int MAX = 50;
    int limit [MAX];
  public:
    void putel ( int, int);
    int getel ( int );
};
//-----------------------------------------------------------
    void safearay::putel ( int j, int k)
      {
            if (j > 0 && j<MAX)
                limit [j] = k;
            else
                {cout << "Вы вышли за границы массива" << endl; exit (1);}         
      } 
//-----------------------------------------------------------
    int safearay::getel ( int j)  
      {
            if (j > 0 && j<MAX)
                return limit [j];                
            else
                {cout << "Вы вышли за границы массива" << endl; exit (1);}                         
      }      
/////////////////////////////////////////////////////////////
int main ( )
{
  setlocale (LC_ALL, "russian");
  safearay sa1;
  int temp;
  int index;
  cout << "Введите значение помещаемое в массив:" << endl;
  cin >> temp;
  cout << "Введите индекс массива:" << endl;
  cin >> index;
  sa1.putel (index, temp);
  temp = sa1.getel (index);
  cout << temp << endl;
  system("pause");
  return 0;
}


Глава 7 Упражнение №9
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
using namespace std;
///////////////////////////////////////////////////////////
class Queue
{
  private:
    static const int MAX = 10; 
    int st [ MAX ];    
    int head, tail;           
  public:
    Queue ( ) // конструктор
      { tail = 0; head = 0;  }
      //tail = MAX;
    void put ( int var ) // поместить в очередь
      {
            if (tail == MAX - 1)
                {tail = 0;
                st [ tail++ ] = var;}
            else st [ tail++ ] = var;
      }
    int get ( ) // взять из стека
      {
            if (head == MAX - 1)
                {head = 0;
                return st [ head++ ];}
            else return st [ head++ ];
      }
};
///////////////////////////////////////////////////////////
int main ( )
{
  setlocale (LC_ALL, "russian");
  Queue s1;
 
  s1.put ( 11 );
  s1.put ( 22 );
  cout << "1: " << s1.get ( ) << endl;
  cout << "2: " << s1.get ( ) << endl;
  s1.put ( 33 );
  s1.put ( 44 );
  s1.put ( 55 );
  s1.put ( 66 );
  s1.put ( 77 );
  s1.put ( 88 );
  s1.put ( 99 );
  s1.put ( 100 );
  s1.put ( 110 );
  cout << "3: " << s1.get ( ) << endl;
  cout << "4: " << s1.get ( ) << endl;
  cout << "5: " << s1.get ( ) << endl;
  cout << "6: " << s1.get ( ) << endl;
  cout << "7: " << s1.get ( ) << endl;
  cout << "8: " << s1.get ( ) << endl;
  cout << "9: " << s1.get ( ) << endl;
  cout << "10: " << s1.get ( ) << endl;
  cout << "11: " << s1.get ( ) << endl;
  system("pause");
  return 0;
}


Глава 7 Упражнение №10
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <process.h>
using namespace std;
/////////////////////////////////////////////////////////////
class matrix
{
  private:
    static const unsigned int row = 10;
    static const unsigned int column = 10;
    int limit [row] [column];
  public:
  //  matrix ( int x, int y): row(x), column(y) // конструктор
   //   {}    
    void putel ( int, int, int);
    int getel ( int, int );
};
//-----------------------------------------------------------
    void matrix::putel ( int i, int j, int k)
      {
            if ((i > 0 && i<row) && (j > 0 && j<column))
                limit [i][j] = k;
            else
                {cout << "Вы вышли за границы массива" << endl; exit (1);}         
      } 
//-----------------------------------------------------------
    int matrix::getel ( int i, int j)  
      {
            if ((i > 0 && i<row) && (j > 0 && j<column))
                return limit [i][j];                
            else
                {cout << "Вы вышли за границы массива" << endl; exit (1);}                         
      }      
/////////////////////////////////////////////////////////////
int main ( )
{
  setlocale (LC_ALL, "russian");
  //matrix m1 (5, 5);
  matrix m1;
  int temp;
  int row, column;
  cout << "Введите значение помещаемое в массив:" << endl;
  cin >> temp;
  cout << "Введите индекс строки :" << endl;
  cin >> row;
  cout << "Введите индекс столбца :" << endl;
  cin >> column;
  m1.putel (row, column, temp);
  temp = m1.getel (row, column);
  cout << temp << endl;
  system("pause");
  return 0;
}


Одиннадцатое задание -просто разрыв шаблона.
 
Текущее время: 19:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru