学習ノート《コンピュータプログラム設計C++》第10週プログラミング作業

44693 ワード

10週目のプログラミングジョブの表示ヘルプは、このジョブがオンライン評価形式であることを示します.ソースプログラムを提出し、システムは自動的に評価し、複数回提出することができる.出力フォーマットはテーマの要求に厳格に従い、与えられたサンプルを参照する.大文字と小文字、中国語と英語、スペースの数は厳格にしなければならない.
学術の誠実さの条項に基づいて、私はこの宿題が本人が独立して完成したことを保証します.
お知らせ:
1.今回の作業はOnline Judgeの問題に属し、提出後、システムが即時に採点する.
2.学生は宿題の締め切り時間までに回数を問わず答えを提出することができ、システムはその中の最高点を最終成績とする.
1リロードコンストラクション関数付きの日付クラス(20分)のタイトルの内容を定義します.
リロードコンストラクタ付きの日付クラスDateを定義します.データ・メンバーには年、月、日があります.メンバー関数には、パラメータ付きコンストラクション関数Date(int,int,int)、パラメータなしコンストラクション関数(1900年1月1日に設定)、日付を年-月-日形式で表示する関数、データ・メンバーに値を割り当てる関数void init(int,int,int)が含まれます.
主関数のクラスに対するテスト要件:1.2つの異なるリロードコンストラクション関数を使用して、2つの日付クラスオブジェクトを作成します(d 1、d 2、d 2の初期値は2100-12-12でなければなりません).2.2つのオブジェクトの値を年-月-日の形式でそれぞれ表示します.3.データを入力し、init関数でd 1に値を割り当てる.2.オブジェクトd 1の値を年-月-日の形式で表示します.
入力形式:
d 1に付与されたデータ
出力フォーマット:
d 1のデフォルト値
d 2の初期値
d 1賦課後の値
サンプルを入力:
2011 4 29
出力サンプル:
1900-1-1 2100-12-12 2011-4-29
時間制限:500 msメモリ制限:32000 kb C++
#include 
using namespace std;
class date{
	int year,month,day;

public:
	date(){
		year=1900,month=1,day=1;
	}
		date(int y,int m,int d){
		year=y,month=m,day=d;
	}
	void init(int y,int m,int d){
		year=y,month=m,day=d;
	}
	void show(){
		cout<<year<<"-"<<month<<"-"<<day<<endl;
	}
};
int main(){
	date d1,d2(2100,12,12);
	d1.show();d2.show();
	int y,m,d;
	cin>>y>>m>>d;
	d1.init(y,m,d);d1.show();
	return 0;
}

用例試験結果実行時間占有メモリ提示スコア用例1 3 ms 256 kb 10用例2 2 ms 364 kb 10により回答を提出今回のスコア/総得点:20.00/20.00点2 Person類の対象を動的に生成する(20点)問題内容:
Personクラスを作成し、データメンバーは名前(20文字長)、年齢(int)、性別(char)です.パラメータのない構造関数を作成し、名前の付与値は「XXX」、年齢0、性別’m’である.構造関数を記述し、文字列「Now destroying the instance of Person」を出力します.Registerメンバー関数を作成し、データメンバーに値を割り当てます.showmeメンバー関数を作成し、名前、年齢、性別を表示します.
主関数の作成:Personクラスで2つのポインタ、p 1とp 2を作成します.2つのPersonオブジェクトをnewで作成し、それぞれp 1,p 2にポインタを割り当てます.showmeメンバー関数でp 1,p 2が指すオブジェクトの値を表示します.「名前、年齢、性別」の値のセットを入力し、メンバー関数Registerでp 1のメンバーに値を割り当てます.p 1が指すオブジェクトの値をp 2が指すオブジェクトに割り当てる.p 1,p 2が指すオブジェクトの値をshowmeで表示します.ダイナミックオブジェクトを削除します.
入力形式:
p 1のメンバーに値を割り当てるときに使用するデータ
出力フォーマット:
person 1とperson 2のデフォルト値
person 1とperson 2の付与後の値
構造関数出力の情報
サンプルを入力:
Bobs 24 m
出力サンプル:
person1:XXX 0 m person2:XXX 0 m person1:Bobs 24 m person2:Bobs 24 m Now destroying the instance of Person Now destroying the instance of Person
時間制限:500 msメモリ制限:32000 kb C++
#include 
#include
using namespace std;
class Person {
	char name[20];int age;char sex;
public:
	Person() {
		strcpy(name, "XXX"), age = 0, sex = 'm';
	}
	~Person() {
		cout << "Now destroying the instance of Person
"
; } void Register(char n[],int a,char s) { strcpy(name, n), age = a;sex = s; } void show() { cout << name << " " << age << " " << sex<< endl; } }; int main() { Person *p1 = new Person; Person *p2 = new Person; char name[20];int age;char s; cin >> name >> age >> s; cout << "person1:";p1->show();cout << "person2:";p2->show(); p1->Register(name, age, s); *p2 = *p1; cout << "person1:";p1->show(); cout<<"person2:";p2->show(); delete p1;delete p2; return 0; }

用例試験結果実行時間占有メモリ提示スコア用例1 3 ms 360 kb 20で解答を提出今回のスコア/総得点:20.00/20.00点3設計構造関数付きDog類(20点)テーマ内容:
名前、age、sex、weightなどの属性を含むDogクラスを設計し、パラメータのある構造関数でデータメンバーを初期化します.
公開メンバー関数には、GetName()、GetAge()、GetSex()およびGetWeight()があり、名前、年齢、性別、体重を取得できます.メンバー関数speak()を作成して犬の鳴き声を表示します.主関数を作成し、犬の名前、年齢、性別、体重を入力します.Dogオブジェクトを宣言し、入力したデータでコンストラクション関数でオブジェクトを初期化し、メンバー関数で犬の属性を取得して表示します.
入力形式:
犬のメッセージ
出力フォーマット:
犬の情報、鳴き声
サンプルを入力:
Tom 4 m 2.4
出力サンプル:
Tom
4
m
2.4
Arf!Arf!
時間制限:500 msメモリ制限:32000 kb C++
#include 
#include
using namespace std;
class Dog {
	char name[20];int age;char sex;double wight;
public:
	Dog() {
		strcpy(name, "xxx"), age = 0, sex = 'm',wight=2.4;
	}
	~Dog() {
		cout << "Now destroying the instance of	Dog
"
; } void Register(char n[],int a,char s,double w) { strcpy(name, n), age = a;sex = s;wight = w; } void speak() { cout << "Arf!Arf!
"
; } void show() { cout << name << "
"
<< age << "
"
<< sex<< endl<<wight<<endl; } }; int main() { Dog *p1 = new Dog; char name[20];int age;char s;double wight; cin >> name >> age >> s>>wight; p1->Register(name, age, s,wight); p1->show(); p1->speak(); return 0; }

使用例試験結果実行時間占有メモリ提示スコア使用例1 11 ms 364 kb 20を通じて解答を提出今回のスコア/総スコア:20.00/20.00点4楕円類(20点)問題内容を設計し試験する:
円心座標と長半軸と短半軸の長さを持つEllipseという楕円類を設計し,試験した.構造関数(Ellipse(int,int,double,double))を設計してこれらの属性を初期化し、メンバー関数によって楕円の面積(double Area()を計算します.
S(楕円面積)=PI(円周率)×a(長半軸)×b(短半軸)ここでPIは3.14をとる
入力形式:
円心座標、長半軸、短半軸の長さ
出力フォーマット:
だえんめんせき
サンプルを入力:
1 1 1 2
出力サンプル:
6.28
時間制限:500 msメモリ制限:32000 kb C++
#include 
#include
using namespace std;
class Ellipse {
	double x, y, l, r;
public:
	Ellipse() {
		x = y = l = r = 0;
	}
	~Ellipse() {
		cout << "Now destroying the instance of	Ellipse
"
; } void Register(double x,double y,double l,double r) { this->x = x; this->y = y; this->l = l; this->r = r; } double area() { return l * r*3.14; } }; int main() { Ellipse *p1 = new Ellipse; double x, y, l, r; cin >> x>>y>>l>>r; p1->Register(x, y, l, r); cout << p1->area(); return 0; }

用例試験結果実行時間占有メモリ提示スコア用例1 3 ms 256 kb 10用例2 2 ms 364 kb 10で解答を提出今回のスコア/総得点:20.00/20.00点5多機能MyTimeクラス(20点)テーマ内容を設計する:
多機能のMyTimeクラスを設計し、複数のリロードされたコンストラクタを設計し、時間を設定し、時間の加減演算を行い、様々な可能なフォーマット(24時間制、12時間制)で時間を出力することができます.
注意:
(1)設定した時間の妥当性を考慮してください(時間0-23;分0-59;秒0-59).
(2)12時間制では、12:00:00前がAM、12:00:00以降がPM
(3)加減算の加数・減数は1時間の長さであり、単位は「時・分・秒」である
(4)コンストラクション関数:パラメータがない場合、設定時間は0時0分0秒である.パラメータがある場合は、与えられた時間、分、秒に設定します.
メイン関数
(1)2つのオブジェクトt 1,t 2を宣言し、それらをコンストラクション関数によって初期化する(t 2は8:10:30に初期化する)
(2)t 1,t 2を12,14時間方式で表示した時間を表示する.
(3)t 1の時間を再設定し、データはユーザが入力する.
(4)加減算する時間を再入力する.
(5)t 1に入力した時間を加え、12時間、24時間で表示する.
(6)t 2は入力時間を減らし、12時間と24時間で表示する.
入力形式:
第1の動作t 1の時間、第2の動作が加減される時間
出力フォーマット:
t 1、t 2の初期時刻を12、14時間表示
t 1に加えて入力される減算される時間は、12時間および24時間で表示される.
t 2減算入力の減算待ち時間は12時間と24時間で表示
サンプルを入力:
11 30 30
5 15 20
出力サンプル:
00:00:00 AM
00:00:00
08:10:30 AM
08:10:30
04:45:50 PM
16:45:50
02:55:10 AM
02:55:10
時間制限:500 msメモリ制限:32000 kb C++
#include 
#include
using namespace std;
class MyTime {
	int hh,mm,ss;
public:
	MyTime() {
		hh =  mm = ss = 0;
	}
	MyTime(int h, int m, int s) {
		if (h >= 24)h = 0;if (m >= 60)m = 0;if (s >= 60)s = 0;
		hh = h, mm = m, ss = s;
	}
	void Register(int h, int m, int s) {
		if (h >= 24)h = 0;if (m >= 60)m = 0;if (s >= 60)s = 0;
		hh = h, mm = m, ss = s;
	}
	void add(char ad, int h, int m, int s) {
		if (h >= 24)h = 0;if (m >= 60)m = 0;if (s >= 60)s = 0;
		if (ad == '+') {
			ss += s;
			if (ss >= 60) { mm++;ss -= 60; }
			mm += m;
			if (mm >= 60) { hh++;mm -= 60; }
			hh += h;
			if (hh > 23) { hh -= 24; }
		}
		else {
			ss -= s;
			if (ss < 0) {
				ss += 60;mm--;
			}
			mm -= m;
			if (mm < 0) {
				mm += 60;hh--;
			}
			hh -= h;
			if(hh < 0){
				hh += 24;
			}
		}
	}
	void show() {
		int h = hh;
		if (h > 11)h -= 12;
		if (h < 10)cout << 0;
		cout << h << ":";
		if (mm < 10)cout << 0;
		cout << mm << ":";
		if (ss < 10)cout << 0;
		cout << ss << " ";
		if (hh >= 12)cout << "PM
"
; else cout << "AM
"
; if (hh < 10)cout << 0; cout << hh << ":"; if (mm < 10)cout << 0; cout << mm << ":"; if (ss < 10)cout << 0; cout << ss << endl; } }; int main() { int hh, mm, ss, hh0, mm0, ss0; cin >> hh >> mm >> ss; cin >> hh0 >> mm0 >> ss0; MyTime t1, t2(8, 10, 30); t1.show();t2.show(); t1.Register(hh, mm, ss); t1.add('+', hh0, mm0, ss0); t1.show(); t2.add('-', hh0, mm0, ss0); t2.show(); return 0; }

用例試験結果運転時間占有メモリ提示スコア用例1 2 ms 380 kb 10用例2 ms 380 kb 10で回答を提出今回のスコア/総得点:20.00/20.00点