Введи топо этого "SU2021RUUS"Блин, как тяжело, а можно как-то упростить его чуток?
К примеру что ввести
Введи топо этого "SU2021RUUS"Блин, как тяжело, а можно как-то упростить его чуток?
К примеру что ввести
буду дома введу)Введи топо этого "SU2021RUUS"
#include "Header.h"
int main() {
Book A;
Book B("Book autor","Book name", "Book publisher", 2020, 355);
A.getInformation();
B.getInformation();
cout << endl << endl << endl;
//operator overloading
cout << A << B;
return 0;
}
#ifndef HEADER_H_
#define HEADER_H_
#include <iostream>
using std::cout; using std::cin; using std::endl; using std::string; using std::ostream;
class Book {
private:
string mAuthor;
string mName;
string mPublisher;
int mYear;
int mPages;
public:
Book();
Book(const string &author, const string &name, const string &publisher, const int &year, const int &pages);
bool setAuthor(const string &author);
bool setName(const string &name);
bool setPublisher(const string &publisher);
bool setYear(const int &year);
bool setPages(const int &pages);
string &getAutor();
string &getName();
void getInformation();
//operator overloading
friend ostream& operator<< (ostream &out, const Book &b);
};
#endif // HEADER_H_
#include "Header.h"
Book::Book() {
setAuthor("undefinedAutor");
setName("undefinedName");
setPublisher("undefinedPublisher");
setYear(2000);
setPages(0);
}
Book::Book(const string &author, const string &name, const string &publisher, const int &year, const int &pages) {
setAuthor(author);
setName(name);
setPublisher(publisher);
setYear(year);
setPages(pages);
}
bool Book::setAuthor(const string &author) {
mAuthor = author;
return true;
}
bool Book::setName(const string &name) {
mName = name;
return true;
}
bool Book::setPublisher(const string &publisher) {
mPublisher = publisher;
return true;
}
bool Book::setYear(const int &year) {
mYear = year;
return true;
}
bool Book::setPages(const int &pages) {
mPages = pages;
return true;
}
string &Book::getAutor() {
return mAuthor;
}
string &Book::getName() {
return mName;
}
void Book::getInformation() {
cout << "Book information: " << endl << "\tAutor - " << getAutor() << "." << endl << "\tName - " << getName() << "." << endl;
return;
}
//operator overloading
ostream& operator<< (ostream &out, const Book &b) {
out << "Book information: " << endl << "\tAutor - " << b.mAuthor << "." << endl << "\tName - " << b.mName << "." << endl;
return out;
}
Опять маленькие придирки x)Ну вот первое задание
Только смог зайти на форум, можешь ещё остальные сделать плиз?)Ну вот первое задание
C:#include "Header.h" int main() { Book A; Book B("Book autor","Book name", "Book publisher", 2020, 355); A.getInformation(); B.getInformation(); cout << endl << endl << endl; //operator overloading cout << A << B; return 0; }
C++:#ifndef HEADER_H_ #define HEADER_H_ #include <iostream> using std::cout; using std::cin; using std::endl; using std::string; using std::ostream; class Book { private: string mAuthor; string mName; string mPublisher; int mYear; int mPages; public: Book(); Book(const string &author, const string &name, const string &publisher, const int &year, const int &pages); bool setAuthor(const string &author); bool setName(const string &name); bool setPublisher(const string &publisher); bool setYear(const int &year); bool setPages(const int &pages); string &getAutor(); string &getName(); void getInformation(); //operator overloading friend ostream& operator<< (ostream &out, const Book &b); }; #endif // HEADER_H_
C++:#include "Header.h" Book::Book() { setAuthor("undefinedAutor"); setName("undefinedName"); setPublisher("undefinedPublisher"); setYear(2000); setPages(0); } Book::Book(const string &author, const string &name, const string &publisher, const int &year, const int &pages) { setAuthor(author); setName(name); setPublisher(publisher); setYear(year); setPages(pages); } bool Book::setAuthor(const string &author) { mAuthor = author; return true; } bool Book::setName(const string &name) { mName = name; return true; } bool Book::setPublisher(const string &publisher) { mPublisher = publisher; return true; } bool Book::setYear(const int &year) { mYear = year; return true; } bool Book::setPages(const int &pages) { mPages = pages; return true; } string &Book::getAutor() { return mAuthor; } string &Book::getName() { return mName; } void Book::getInformation() { cout << "Book information: " << endl << "\tAutor - " << getAutor() << "." << endl << "\tName - " << getName() << "." << endl; return; } //operator overloading ostream& operator<< (ostream &out, const Book &b) { out << "Book information: " << endl << "\tAutor - " << b.mAuthor << "." << endl << "\tName - " << b.mName << "." << endl; return out; }
Использую принцип разделять и властвовать. Но я понял лучше простые геттеры и сеттеры писать можно было в объявлении. Наверное функции надо было предварить словом inline. Про header guard, я использую Code Blocks он сам подставляет. Вообще для закрепления нужно немного ручной работы так сказать.Опять маленькие придирки x)
Короткие методы (например простые геттеры и сеттеры) проще писать сразу при объявлении, несмотря на то что сейчас есть межобъектная оптимизация например в студии, метод может остаться в отдельной функции, вызов которой будет дороже чем обычный инлайн.
Так же в качестве защиты дабл инклуда проще использовать #pragma once.
Не особо дееспособен сегодня но я попробую.Только смог зайти на форум, можешь ещё остальные сделать плиз?)
#include "Header.h"
int main() {
worker one;
one.getInformation();
worker two({"Sinclair",'M','V'},POST::TECHNICAL_STAFF,2000, 10000);
two.getInformation();
return EXIT_SUCCESS;
}
#pragma once
#include <iostream>
#include <cstdlib>
using std::cout; using std::cin; using std::endl; using std::string; using std::ostream; using std::istream;
enum class POST {
UNCNOWN,
DIRECTOR,
ACADEMIC,
MID_RANGE_MANAGER,
TECHNICAL_STAFF,
LAWYER,
};
struct initials {
string m_Surname;
char m_Name;
char m_Patronomus;
};
class worker {
private:
initials m_FullName;
POST m_Position;
unsigned int m_Joining;
unsigned int m_Salary;
public:
worker();
worker(const initials &fullname, const POST&, const unsigned int&, const unsigned int&);
inline bool SetFullName(const initials &fullname);
inline bool SetPost(const POST &position);
inline bool setJoin(const unsigned int &joining);
inline bool setSalary(const unsigned int &salary);
inline const initials &getFullname() const;
inline const unsigned int &getSalary() const;
const bool getInformation() const;
//friend istream& operator>> (istream &in, worker &w);
//friend ostream& operator<< (ostream &out, const worker &w);
};
#include "Header.h"
worker::worker() {
SetFullName({"No data available",'_','_'});
SetPost(POST::UNCNOWN);
setJoin(0);
setSalary(0);
}
worker::worker(const initials &fullname, const POST &position, const unsigned int &joining, const unsigned int &salary) {
SetFullName(fullname);
SetPost(position);
setJoin(joining);
setSalary(salary);
}
inline bool worker::SetFullName(const initials &fullname) {
m_FullName = fullname;
return true;
}
inline bool worker::SetPost(const POST &position) {
m_Position = position;
return true;
}
inline bool worker::setJoin(const unsigned int &joining) {
m_Joining = joining;
return true;
}
inline bool worker::setSalary(const unsigned int &salary) {
m_Salary = salary;
return true;
}
inline const initials &worker::getFullname() const {
return m_FullName;
}
inline const unsigned int &worker::getSalary() const {
return m_Salary;
}
const bool worker::getInformation() const {
cout << "\t\tInformation" << endl << "Initials:" << endl << '\t' << m_FullName.m_Surname << ' ' << m_FullName.m_Name << "." << m_FullName.m_Patronomus << '.'<< endl;
cout << "\tSalary: ";
if(getSalary()== 0) {
cout << "No data available" << "$." << endl;
} else if (getSalary()){
cout << getSalary() << "$." << endl;
}
cout << "--------------------------------------------------" << endl;
return true;
}
#include "Header.h"
int main() {
worker one;
one.getInformation();
worker two({"Sinclair",'M','V'},POST::TECHNICAL_STAFF,2000, 10000);
two.getInformation();
worker three;
cin >> three;
cout << three;
return EXIT_SUCCESS;
}
#pragma once
#include <iostream>
#include <cstdlib>
using std::cout; using std::cin; using std::endl; using std::string; using std::ostream; using std::istream;
using unsint = unsigned int;
enum class POST {
UNCNOWN,
DIRECTOR,
ACADEMIC,
MID_RANGE_MANAGER,
TECHNICAL_STAFF,
LAWYER,
};
struct initials {
string m_Surname;
char m_Name;
char m_Patronomus;
};
class worker {
private:
initials m_FullName;
POST m_Position;
unsint m_Joining;
unsint m_Salary;
public:
worker();
worker(const initials &fullname, const POST&, const unsint&, const unsint&);
inline bool SetFullName(const initials &fullname);
inline bool SetPost(const POST &position);
inline bool setJoin(const unsigned int &joining);
inline bool setSalary(const unsigned int &salary);
inline const initials &getFullname() const;
inline const unsint &getSalary() const;
const bool getInformation() const;
friend istream& operator>> (istream &in, worker &w);
friend ostream& operator<< (ostream &out, const worker &w);
};
#include "Header.h"
constexpr unsigned int sizeArray = 6;
string Posts[sizeArray] = {
"UNCNOWN",
"DIRECTOR",
"ACADEMIC",
"MID_RANGE_MANAGER",
"TECHNICAL_STAFF",
"LAWYER"
};
worker::worker() {
SetFullName({"No data available",'_','_'});
SetPost(POST::UNCNOWN);
setJoin(0);
setSalary(0);
}
worker::worker(const initials &fullname, const POST &position, const unsint &joining, const unsint &salary) {
SetFullName(fullname);
SetPost(position);
setJoin(joining);
setSalary(salary);
}
inline bool worker::SetFullName(const initials &fullname) {
m_FullName = fullname;
return true;
}
inline bool worker::SetPost(const POST &position) {
m_Position = position;
return true;
}
inline bool worker::setJoin(const unsigned int &joining) {
m_Joining = joining;
return true;
}
inline bool worker::setSalary(const unsigned int &salary) {
m_Salary = salary;
return true;
}
inline const initials &worker::getFullname() const {
return m_FullName;
}
inline const unsint &worker::getSalary() const {
return m_Salary;
}
const bool worker::getInformation() const {
cout << "\t\tInformation" << endl << "Initials:" << endl << '\t' << m_FullName.m_Surname << ' ' << m_FullName.m_Name << "." << m_FullName.m_Patronomus << '.'<< endl;
cout << "\tSalary: ";
if(getSalary()== 0) {
cout << "No data available" << endl;
} else if (getSalary()){
cout << getSalary() << "$." << endl;
}
cout << "--------------------------------------------------" << endl;
return true;
}
istream& operator>> (istream &in, worker &w) {
cout << "\t\tSet data" << endl;
cout << "Enter initials: " << endl;
while (true) {
cout << "\tSurname: ";
cin >> w.m_FullName.m_Surname;
if(cin.fail()) {
cin.clear();
cin.ignore(32767, '\n');
cout << "Incorrect Surname again: " << endl;
continue;
}
cin.ignore(32767, '\n');
break;
}
while (true) {
cout << "\tName: ";
cin >> w.m_FullName.m_Name;
if(cin.fail()) {
cin.clear();
cin.ignore(32767, '\n');
cout << "Incorrect Name again: " << endl;
continue;
}
cin.ignore(32767, '\n');
break;
}
while (true) {
cout << "\tPatronomus: ";
cin >> w.m_FullName.m_Patronomus;
if(cin.fail()) {
cin.clear();
cin.ignore(32767, '\n');
cout << "Incorrect Patronomus again: " << endl;
continue;
}
cin.ignore(32767, '\n');
break;
}
cout << "Set post: " << endl;
for(unsigned int num = 0; num < sizeArray; num++) {
cout << num << ") " << Posts[num] << endl;
}
unsigned int choice;
while (true) {
cin >> choice;
if(cin.fail()) {
cin.clear();
cin.ignore(32767, '\n');
cout << "Incorrect Choice again: " << endl;
continue;
}
if (choice > 5) {
cout << "Incorrect Choice again: " << endl;
continue;
}
break;
}
switch(choice) {
case 0: w.m_Position = POST::UNCNOWN;
break;
case 1: w.m_Position = POST::DIRECTOR;
break;
case 2: w.m_Position = POST::ACADEMIC;
break;
case 3: w.m_Position = POST::MID_RANGE_MANAGER;
break;
case 4: w.m_Position = POST::TECHNICAL_STAFF;
break;
case 5: w.m_Position = POST::LAWYER;
break;
default:
w.m_Position = POST::UNCNOWN;
}
cout << "Enter joining: " << endl;
while (true) {
cin >> w.m_Joining;
if(cin.fail()) {
cin.clear();
cin.ignore(32767, '\n');
cout << "Incorrect Choice again: " << endl;
continue;
}
break;
}
cout << "Enter salary: " << endl;
while (true) {
cin >> w.m_Salary;
if(cin.fail()) {
cin.clear();
cin.ignore(32767, '\n');
cout << "Incorrect Choice again: " << endl;
continue;
}
break;
}
cout << "--------------------------------------------------" << endl;
return in;
}
ostream& operator<< (ostream &out, const worker &w) {
cout << "\t\tInformation" << endl << "Initials:" << endl << '\t' << w.m_FullName.m_Surname << ' ' << w.m_FullName.m_Name << "." << w.m_FullName.m_Patronomus << '.'<< endl;
cout << "\tSalary: ";
if(w.getSalary()== 0) {
cout << "No data available" << endl;
} else if (w.getSalary()){
cout << w.getSalary() << "$." << endl;
}
cout << "--------------------------------------------------" << endl;
return out;
}
В этом задании нужно что-то объявлять?Вот второе
Перегрузка операторов вроде тебе не нужна, и к тому же это долговато реализовывать. Со здоровьем сегодня не впорядке, как смог сделал.C++:#include "Header.h" int main() { worker one; one.getInformation(); worker two({"Sinclair",'M','V'},POST::TECHNICAL_STAFF,2000, 10000); two.getInformation(); return EXIT_SUCCESS; }
C++:#pragma once #include <iostream> #include <cstdlib> using std::cout; using std::cin; using std::endl; using std::string; using std::ostream; using std::istream; enum class POST { UNCNOWN, DIRECTOR, ACADEMIC, MID_RANGE_MANAGER, TECHNICAL_STAFF, LAWYER, }; struct initials { string m_Surname; char m_Name; char m_Patronomus; }; class worker { private: initials m_FullName; POST m_Position; unsigned int m_Joining; unsigned int m_Salary; public: worker(); worker(const initials &fullname, const POST&, const unsigned int&, const unsigned int&); inline bool SetFullName(const initials &fullname); inline bool SetPost(const POST &position); inline bool setJoin(const unsigned int &joining); inline bool setSalary(const unsigned int &salary); inline const initials &getFullname() const; inline const unsigned int &getSalary() const; const bool getInformation() const; //friend istream& operator>> (istream &in, worker &w); //friend ostream& operator<< (ostream &out, const worker &w); };
C++:#include "Header.h" worker::worker() { SetFullName({"No data available",'_','_'}); SetPost(POST::UNCNOWN); setJoin(0); setSalary(0); } worker::worker(const initials &fullname, const POST &position, const unsigned int &joining, const unsigned int &salary) { SetFullName(fullname); SetPost(position); setJoin(joining); setSalary(salary); } inline bool worker::SetFullName(const initials &fullname) { m_FullName = fullname; return true; } inline bool worker::SetPost(const POST &position) { m_Position = position; return true; } inline bool worker::setJoin(const unsigned int &joining) { m_Joining = joining; return true; } inline bool worker::setSalary(const unsigned int &salary) { m_Salary = salary; return true; } inline const initials &worker::getFullname() const { return m_FullName; } inline const unsigned int &worker::getSalary() const { return m_Salary; } const bool worker::getInformation() const { cout << "\t\tInformation" << endl << "Initials:" << endl << '\t' << m_FullName.m_Surname << ' ' << m_FullName.m_Name << "." << m_FullName.m_Patronomus << '.'<< endl; cout << "\tSalary: "; if(getSalary()== 0) { cout << "No data available" << "$." << endl; } else if (getSalary()){ cout << getSalary() << "$." << endl; } cout << "--------------------------------------------------" << endl; return true; }
Если ты собираешься вызвать конструктор с аргументами, нужно передавать структуру первым аргументом.
Это третяя лаба я так понял?Так второе дыхание. Доделал перегрузку операторов.
C++:#include "Header.h" int main() { worker one; one.getInformation(); worker two({"Sinclair",'M','V'},POST::TECHNICAL_STAFF,2000, 10000); two.getInformation(); worker three; cin >> three; cout << three; return EXIT_SUCCESS; }
C++:#pragma once #include <iostream> #include <cstdlib> using std::cout; using std::cin; using std::endl; using std::string; using std::ostream; using std::istream; using unsint = unsigned int; enum class POST { UNCNOWN, DIRECTOR, ACADEMIC, MID_RANGE_MANAGER, TECHNICAL_STAFF, LAWYER, }; struct initials { string m_Surname; char m_Name; char m_Patronomus; }; class worker { private: initials m_FullName; POST m_Position; unsint m_Joining; unsint m_Salary; public: worker(); worker(const initials &fullname, const POST&, const unsint&, const unsint&); inline bool SetFullName(const initials &fullname); inline bool SetPost(const POST &position); inline bool setJoin(const unsigned int &joining); inline bool setSalary(const unsigned int &salary); inline const initials &getFullname() const; inline const unsint &getSalary() const; const bool getInformation() const; friend istream& operator>> (istream &in, worker &w); friend ostream& operator<< (ostream &out, const worker &w); };
C++:#include "Header.h" constexpr unsigned int sizeArray = 6; string Posts[sizeArray] = { "UNCNOWN", "DIRECTOR", "ACADEMIC", "MID_RANGE_MANAGER", "TECHNICAL_STAFF", "LAWYER" }; worker::worker() { SetFullName({"No data available",'_','_'}); SetPost(POST::UNCNOWN); setJoin(0); setSalary(0); } worker::worker(const initials &fullname, const POST &position, const unsint &joining, const unsint &salary) { SetFullName(fullname); SetPost(position); setJoin(joining); setSalary(salary); } inline bool worker::SetFullName(const initials &fullname) { m_FullName = fullname; return true; } inline bool worker::SetPost(const POST &position) { m_Position = position; return true; } inline bool worker::setJoin(const unsigned int &joining) { m_Joining = joining; return true; } inline bool worker::setSalary(const unsigned int &salary) { m_Salary = salary; return true; } inline const initials &worker::getFullname() const { return m_FullName; } inline const unsint &worker::getSalary() const { return m_Salary; } const bool worker::getInformation() const { cout << "\t\tInformation" << endl << "Initials:" << endl << '\t' << m_FullName.m_Surname << ' ' << m_FullName.m_Name << "." << m_FullName.m_Patronomus << '.'<< endl; cout << "\tSalary: "; if(getSalary()== 0) { cout << "No data available" << endl; } else if (getSalary()){ cout << getSalary() << "$." << endl; } cout << "--------------------------------------------------" << endl; return true; } istream& operator>> (istream &in, worker &w) { cout << "\t\tSet data" << endl; cout << "Enter initials: " << endl; while (true) { cout << "\tSurname: "; cin >> w.m_FullName.m_Surname; if(cin.fail()) { cin.clear(); cin.ignore(32767, '\n'); cout << "Incorrect Surname again: " << endl; continue; } cin.ignore(32767, '\n'); break; } while (true) { cout << "\tName: "; cin >> w.m_FullName.m_Name; if(cin.fail()) { cin.clear(); cin.ignore(32767, '\n'); cout << "Incorrect Name again: " << endl; continue; } cin.ignore(32767, '\n'); break; } while (true) { cout << "\tPatronomus: "; cin >> w.m_FullName.m_Patronomus; if(cin.fail()) { cin.clear(); cin.ignore(32767, '\n'); cout << "Incorrect Patronomus again: " << endl; continue; } cin.ignore(32767, '\n'); break; } cout << "Set post: " << endl; for(unsigned int num = 0; num < sizeArray; num++) { cout << num << ") " << Posts[num] << endl; } unsigned int choice; while (true) { cin >> choice; if(cin.fail()) { cin.clear(); cin.ignore(32767, '\n'); cout << "Incorrect Choice again: " << endl; continue; } if (choice > 5) { cout << "Incorrect Choice again: " << endl; continue; } break; } switch(choice) { case 0: w.m_Position = POST::UNCNOWN; break; case 1: w.m_Position = POST::DIRECTOR; break; case 2: w.m_Position = POST::ACADEMIC; break; case 3: w.m_Position = POST::MID_RANGE_MANAGER; break; case 4: w.m_Position = POST::TECHNICAL_STAFF; break; case 5: w.m_Position = POST::LAWYER; break; default: w.m_Position = POST::UNCNOWN; } cout << "Enter joining: " << endl; while (true) { cin >> w.m_Joining; if(cin.fail()) { cin.clear(); cin.ignore(32767, '\n'); cout << "Incorrect Choice again: " << endl; continue; } break; } cout << "Enter salary: " << endl; while (true) { cin >> w.m_Salary; if(cin.fail()) { cin.clear(); cin.ignore(32767, '\n'); cout << "Incorrect Choice again: " << endl; continue; } break; } cout << "--------------------------------------------------" << endl; return in; } ostream& operator<< (ostream &out, const worker &w) { cout << "\t\tInformation" << endl << "Initials:" << endl << '\t' << w.m_FullName.m_Surname << ' ' << w.m_FullName.m_Name << "." << w.m_FullName.m_Patronomus << '.'<< endl; cout << "\tSalary: "; if(w.getSalary()== 0) { cout << "No data available" << endl; } else if (w.getSalary()){ cout << w.getSalary() << "$." << endl; } cout << "--------------------------------------------------" << endl; return out; }
Можешь пожалуйста сделать в этом задании что бы человек вписывать мог имя автора и т.д.Ну вот первое задание
C:#include "Header.h" int main() { Book A; Book B("Book autor","Book name", "Book publisher", 2020, 355); A.getInformation(); B.getInformation(); cout << endl << endl << endl; //operator overloading cout << A << B; return 0; }
C++:#ifndef HEADER_H_ #define HEADER_H_ #include <iostream> using std::cout; using std::cin; using std::endl; using std::string; using std::ostream; class Book { private: string mAuthor; string mName; string mPublisher; int mYear; int mPages; public: Book(); Book(const string &author, const string &name, const string &publisher, const int &year, const int &pages); bool setAuthor(const string &author); bool setName(const string &name); bool setPublisher(const string &publisher); bool setYear(const int &year); bool setPages(const int &pages); string &getAutor(); string &getName(); void getInformation(); //operator overloading friend ostream& operator<< (ostream &out, const Book &b); }; #endif // HEADER_H_
C++:#include "Header.h" Book::Book() { setAuthor("undefinedAutor"); setName("undefinedName"); setPublisher("undefinedPublisher"); setYear(2000); setPages(0); } Book::Book(const string &author, const string &name, const string &publisher, const int &year, const int &pages) { setAuthor(author); setName(name); setPublisher(publisher); setYear(year); setPages(pages); } bool Book::setAuthor(const string &author) { mAuthor = author; return true; } bool Book::setName(const string &name) { mName = name; return true; } bool Book::setPublisher(const string &publisher) { mPublisher = publisher; return true; } bool Book::setYear(const int &year) { mYear = year; return true; } bool Book::setPages(const int &pages) { mPages = pages; return true; } string &Book::getAutor() { return mAuthor; } string &Book::getName() { return mName; } void Book::getInformation() { cout << "Book information: " << endl << "\tAutor - " << getAutor() << "." << endl << "\tName - " << getName() << "." << endl; return; } //operator overloading ostream& operator<< (ostream &out, const Book &b) { out << "Book information: " << endl << "\tAutor - " << b.mAuthor << "." << endl << "\tName - " << b.mName << "." << endl; return out; }
а и шо тут закомментировано ?)Вот второе
Перегрузка операторов вроде тебе не нужна, и к тому же это долговато реализовывать. Со здоровьем сегодня не впорядке, как смог сделал.C++:#include "Header.h" int main() { worker one; one.getInformation(); worker two({"Sinclair",'M','V'},POST::TECHNICAL_STAFF,2000, 10000); two.getInformation(); return EXIT_SUCCESS; }
C++:#pragma once #include <iostream> #include <cstdlib> using std::cout; using std::cin; using std::endl; using std::string; using std::ostream; using std::istream; enum class POST { UNCNOWN, DIRECTOR, ACADEMIC, MID_RANGE_MANAGER, TECHNICAL_STAFF, LAWYER, }; struct initials { string m_Surname; char m_Name; char m_Patronomus; }; class worker { private: initials m_FullName; POST m_Position; unsigned int m_Joining; unsigned int m_Salary; public: worker(); worker(const initials &fullname, const POST&, const unsigned int&, const unsigned int&); inline bool SetFullName(const initials &fullname); inline bool SetPost(const POST &position); inline bool setJoin(const unsigned int &joining); inline bool setSalary(const unsigned int &salary); inline const initials &getFullname() const; inline const unsigned int &getSalary() const; const bool getInformation() const; //friend istream& operator>> (istream &in, worker &w); //friend ostream& operator<< (ostream &out, const worker &w); };
C++:#include "Header.h" worker::worker() { SetFullName({"No data available",'_','_'}); SetPost(POST::UNCNOWN); setJoin(0); setSalary(0); } worker::worker(const initials &fullname, const POST &position, const unsigned int &joining, const unsigned int &salary) { SetFullName(fullname); SetPost(position); setJoin(joining); setSalary(salary); } inline bool worker::SetFullName(const initials &fullname) { m_FullName = fullname; return true; } inline bool worker::SetPost(const POST &position) { m_Position = position; return true; } inline bool worker::setJoin(const unsigned int &joining) { m_Joining = joining; return true; } inline bool worker::setSalary(const unsigned int &salary) { m_Salary = salary; return true; } inline const initials &worker::getFullname() const { return m_FullName; } inline const unsigned int &worker::getSalary() const { return m_Salary; } const bool worker::getInformation() const { cout << "\t\tInformation" << endl << "Initials:" << endl << '\t' << m_FullName.m_Surname << ' ' << m_FullName.m_Name << "." << m_FullName.m_Patronomus << '.'<< endl; cout << "\tSalary: "; if(getSalary()== 0) { cout << "No data available" << "$." << endl; } else if (getSalary()){ cout << getSalary() << "$." << endl; } cout << "--------------------------------------------------" << endl; return true; }
Если ты собираешься вызвать конструктор с аргументами, нужно передавать структуру первым аргументом.
Вот ОнаЛадно вот третий вариант первой лабы
Вроде работает правильно проверь. Если и это не подходить то нужен независимый эксперт.C++:#include <iostream> #include "Header.h" using namespace std; int main() { Abiturient b; Abiturient a("KROSSSAW(name)", "KROSSSAW(surname)","KROSSSAW(patronomus)" ,"KROSSSAW(address)"); return 0; }
C++:#ifndef HEADER_H_ #define HEADER_H_ using namespace std; class Abiturient{ private: string name; string surname; string patronomyc; string address; int Array[5]; public: Abiturient(); Abiturient(string a_name, string a_surname, string a_patronomus, string a_adress); string GetName(); string GetSurname(); string GetPatronomyc(); string GetAddress(); int GetArray(); void SetName(string value); void SetSurname(string value); void SetPatronomyc(string value); void SetAddress(string value); void SetArray(int value[5]); void DeanonStudent(); }; #endif // HEADER_H_
C++:#include <iostream> #include "Header.h" Abiturient::Abiturient() { cout << "Hello, unnamed Abiturient!\n"; cout << "Please Enter name, surname, patronomus, address: "; cin >> name >> surname >> patronomyc >> address; GetArray(); } Abiturient::Abiturient(string a_name, string a_surname, string a_patronomus, string a_adress) : name(a_name), surname(a_surname), patronomyc(a_patronomus), address(a_adress) { cout << "Hello " << name << " Abiturient!\n"; GetArray(); } string Abiturient::GetName() { return name; } string Abiturient::GetSurname() { return surname; } string Abiturient::GetPatronomyc() { return patronomyc; } string Abiturient::GetAddress() { return address; } int Abiturient::GetArray() { cout << "Enter grade five value: "; for (int var = 0; var < 5; var++) { cin >> Array[var]; } int counter = 0; for (int var = 0; var < 5; var++) { if (Array[var] < 3){ counter++; } } if (counter > 2) { cout << "exclude from the sharaga\a\a\n"; } else { cout << "Normal\n"; } return Array[5]; } void Abiturient::SetName(string value) { name = value; } void Abiturient::SetSurname(string value) { surname = value; } void Abiturient::SetPatronomyc(string value) { patronomyc = value; } void Abiturient::SetAddress(string value) { address = value; } void Abiturient::SetArray(int value[5]) { Array[5] = value[5]; }
Уважаемый, не кажется ли Вам, что решение простейших лабораторных работ через помощь со стороны - далеко не лучшая идея. Остальные предметы Вы так же учите? В таком случае встает вопрос о необходимости получения выбранного образования.Ребята, помогите пожалуйста, новая лабораторная)
Для класса Abiturient создать конструктор, который будет предлагать ввести количество оценок, создавать динамический массив с помощью ключевого слова new. Далее будет предлагать ввести все оценки последовательно. И будет записывать их в массив.
Также конструктор имеет посчитать среднее арифметическое.
В деструкторе позаботьтесь об очищении динамического массива с помощью ключевого слова delete.
Далее необходимо создать конструктор копирования, который проверит было выделение памяти и или адрес записан в указателе. При наличии адреса, конструктор копирования выделит новый участок для массива в объекте которому копируются данные.
Для проверки создайте функцию которая принимает параметр типа Abiturient и выводит в консоль имя, фамилия, отчество абитуриента и средний балл.
Также конструкторы и деструкторы пусть выводят адреса объектов создаваемых и уничтожаются, а также адреса массивов.
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz