//Задание 9. Решите с помощью классов следующую задачу:
//даны две бочки известного объема. В одной бочке в начальный момент
//времени содержится спирт (96%), в другой – вода.
//Кружкой емкостью 1л переливаем итеративно содержимое из одной бочки
//в другую следующим способом: на каждой итерации
//зачерпнули из первой бочки -> вылили во вторую
//зачерпнули из второй бочки -> вылили в первую.
//Требуется определить номер итерации, на которой концентрация спирта в
//первой бочке станет меньше 50%.
Задача на классы
Код:
второй вопрос,у меня есть класс MyString и мне нужно создать массив объектов этого класса,но почемуто все время выдает ошибку линкер.Привожу текст класса и задания.
Код:
/*header*/
class MyString
{
char* m_pStr; //строка-член класса
public:
MyString();//конструктор по умолчанию
MyString( char* pStr ); // объявление конструктора
~MyString();// объявление деструктора
void SetString(char*);
char* GetString(){ return m_pStr;}
};
/*realis*/
#include <string>
#include "myString.h"
using namespace std;
// Определение конструктора.
MyString::MyString( char* pStr )
{
// Динамически выделить требуемое количество памяти.
m_pStr = new char[strlen( pStr ) + 1]; // + 1, так как
//нулевой байт тоже нужно скопировать
// Если память выделена, скопировать строку-аргумент в строку-член класса
strcpy( m_pStr, pStr );
}
// Определение деструктора.
MyString::~MyString()
{
// Освобождение памяти, занятой в конструкторе для строки-члена класса
delete[] m_pStr;
}
/*сами задания*/
//Задание 7.Массив объектов класса.
//Объявите и проинициализируйте массив ar из трех объектов
// типа MyString.
//Проверка - печать строк-членов класса
//Задание 8.Массив указателей на объекты класса.
{
//Объявите и проинициализируйте массив arPtr из трех
//указателей на объекты типа MyString.
//Печать строк-членов класса
class MyString
{
char* m_pStr; //строка-член класса
public:
MyString();//конструктор по умолчанию
MyString( char* pStr ); // объявление конструктора
~MyString();// объявление деструктора
void SetString(char*);
char* GetString(){ return m_pStr;}
};
/*realis*/
#include <string>
#include "myString.h"
using namespace std;
// Определение конструктора.
MyString::MyString( char* pStr )
{
// Динамически выделить требуемое количество памяти.
m_pStr = new char[strlen( pStr ) + 1]; // + 1, так как
//нулевой байт тоже нужно скопировать
// Если память выделена, скопировать строку-аргумент в строку-член класса
strcpy( m_pStr, pStr );
}
// Определение деструктора.
MyString::~MyString()
{
// Освобождение памяти, занятой в конструкторе для строки-члена класса
delete[] m_pStr;
}
/*сами задания*/
//Задание 7.Массив объектов класса.
//Объявите и проинициализируйте массив ar из трех объектов
// типа MyString.
//Проверка - печать строк-членов класса
//Задание 8.Массив указателей на объекты класса.
{
//Объявите и проинициализируйте массив arPtr из трех
//указателей на объекты типа MyString.
//Печать строк-членов класса
Спасибо всем кто хотябы посмотрит,с уважением Антон.
Код:
#include <string.h>
#include <iostream.h>
class MyString
{
public:
MyString();//конструктор по умолчанию
MyString(char *pStr); // объявление конструктора
~MyString();// объявление деструктора
void Load(char *pStr);
void Print();
char* GetString()
{
return m_pStr;
}
private:
char* m_pStr; //строка-член класса
};
//Описание конструктора по умолчаниюMyString::MyString()
{
Load("");
}
// Определение конструктора.
MyString::MyString( char* pStr )
{
Load(pStr);
}
// Определение деструктора.
MyString::~MyString()
{
// Освобождение памяти, занятой в конструкторе для строки-члена класса
delete[] m_pStr;
}
//Печать
void MyString::Print()
{
cout << pStr << endl;
}
void MyString::Load(char *pStr)
{
// Динамически выделить требуемое количество памяти.
m_pStr = new char[strlen( pStr ) + 1]; // + 1, так как
//нулевой байт тоже нужно скопировать
// Если память выделена, скопировать строку-аргумент в строку-член класса
strcpy(m_pStr, pStr);
Print();
}
void main()
{
MyString ar[3];
MyString *arPtr[3];
ar[0].Load("One");
ar[1].Load("Two");
ar[2].Load("Three");
arPtr[0]=new MyString("OnePtr");
arPtr[1]=new MyString("TwoPtr");
arPtr[2]=new MyString("ThreePtr");
}
#include <iostream.h>
class MyString
{
public:
MyString();//конструктор по умолчанию
MyString(char *pStr); // объявление конструктора
~MyString();// объявление деструктора
void Load(char *pStr);
void Print();
char* GetString()
{
return m_pStr;
}
private:
char* m_pStr; //строка-член класса
};
//Описание конструктора по умолчаниюMyString::MyString()
{
Load("");
}
// Определение конструктора.
MyString::MyString( char* pStr )
{
Load(pStr);
}
// Определение деструктора.
MyString::~MyString()
{
// Освобождение памяти, занятой в конструкторе для строки-члена класса
delete[] m_pStr;
}
//Печать
void MyString::Print()
{
cout << pStr << endl;
}
void MyString::Load(char *pStr)
{
// Динамически выделить требуемое количество памяти.
m_pStr = new char[strlen( pStr ) + 1]; // + 1, так как
//нулевой байт тоже нужно скопировать
// Если память выделена, скопировать строку-аргумент в строку-член класса
strcpy(m_pStr, pStr);
Print();
}
void main()
{
MyString ar[3];
MyString *arPtr[3];
ar[0].Load("One");
ar[1].Load("Two");
ar[2].Load("Three");
arPtr[0]=new MyString("OnePtr");
arPtr[1]=new MyString("TwoPtr");
arPtr[2]=new MyString("ThreePtr");
}
Ну если, что не так сам поправишь... главное чтоб идея была понятна... а не Linkil'ся потому-что у тебя не был ОПИСАН конструктор по умолчанию...