使用者工具

網站工具


cpp:homework:hw2-old

目錄表

國立屏東商業技術學院 資訊工程系 物件導向程式設計

作業2


turnin code cpp.hw2

due date: 23:59, March 27

第1題

考慮以下兩個C++標頭檔:

#define LenFN 20
#define LenLN 10
 
#ifndef STRUCT_NAME
#define STRUCT_NAME
 
struct Name
{
  char firstname[LenFN+1];
  char lastname[LenLN+1];
};
 
Name *setName(const char *name);
 
#endif

#include "name.h"
 
char *initial(Name *n);

以及下面這個main1.cpp程式:

using namespace std; 
#include <iostream>  
#include <cstring>   
#include "name.h"
#include "initial.h"
 
int main()
{
  Name *someone = new Name;
  char *name = new char[LenFN+LenLN+1];
 
  cout << "Please input your name: ";
  for(int i=0;i<(LenFN+LenLN);i++)
    cout << "_";
  for(int i=0;i<(LenFN+LenLN);i++)
    cout << "\b";
 
  cin.getline(name, LenFN+LenLN);
 
  someone = setName(name);
 
  cout << "Your first name is " << someone->firstname << "." << endl;
  cout << "Your last name is " << someone->lastname << "." << endl;
  cout << "The initial of your name is " << initial(someone) << endl;
 
  return 0;
}

  • 設計一個檔名為name.cpp的程式,完成函式「setName()」的實作
    • 此函式接收一個華人的名字為參數
      • 其型式可為「Firstname Lastname」或「Lastname, Firstname」,例如:
        • 該字串內容可為「Yo-Yo Ma」或「Ma, Yo-Yo」
        • 該字串內容可為「Jun Wu」或「Wu, Jun」
      • 動態建立一個Name結構體,將使用者所輸入的名字的姓氏與名字分別放入該結構體的lastname與firstname欄位中
      • 完成後將該結構體傳回
    • 此函式之實作可以參考以下的程式:

using namespace std;
#include <iostream>
#include <cstring>
#include "name.h"
 
Name *setName(const char *name)
{
  Name *somebody = new Name;
 
   ...
 
  return somebody;
}

  • 設計一個檔名為initial.cpp的程式,完成函式「initial()」的實作
    • 此函式接收一個Name結構體,並將其姓名的縮寫以字串型式傳回
    • 縮寫格式為姓氏在前,名字在後的格式:
      • 例如「Yo-Yo Ma」傳回「Ma, Y.-Y.」
      • 例如「Jun Wu」傳回「Wu, J.」
    • 此函式之實作可以參考以下的程式:

using namespace std;
#include <iostream>
#include <cstring>
#include "name.h"
 
char *initial(Name *n)
{
  char *name = new char[LenFN+LenLN+1];
 
  ....
 
 
  return name;
}

注意:你只須turnin 「name.cpp」與「initial.cpp」這兩個程式!我們會使用以下的方式,編譯你的程式:

g++ -c name.cpp
g++ -c initial.cpp 
g++ main1.cpp name.o initial.o

  1. 程式執行結果參考:

[02:16 junwu@ws hw2]$ ./a.out 
Please input your name: Yo-Yo Ma______________________
Your first name is Yo-Yo.
Your last name is Ma.
The initial of your name is Ma, Y.-Y.
[02:16 junwu@ws hw2]$ 

本題所需之檔案,可至ws.csie.npic.edu.tw上取得,其所在目錄為/home/stu/public/cpp/2014SCPPHW2 。

參考解答

第2題

  1. 設計一個C++程式名為member.cpp
  2. 設計一個結構體以儲存管理會員資料,包含
    1. 姓名,使用上一題所設計的Name結構體
    2. 行動電話號碼,字串
    3. 會員等級,宣告一個enum,其值可以為「Gold」與「Silver」
    4. 會員優惠(benefit),請以union設計
      • Gold會員有每個月月費的折扣(浮點數)
      • Silver會員有每個月免費的分鐘數(整數)
  3. 程式執行時,使用「<」將測試檔「members.dat」導入五筆會員資料
  4. 所取得的資料,必須以動態的結構體陣列方式儲存(可假設會員數不超過5人)
  5. 讓使用者輸入會員的姓氏,在陣列中尋找符合的會員,並將其資料輸出
  6. 反覆執行前一步驟,直到使用者輸入「Quit」為止。
  7. 注意!本題所有輸入皆不須在執行時手動輸入,全部輸入皆位於「members.dat」檔案中。
  8. 你僅須turnin「member.cpp」,我們會使用以下的方式,編譯你的程式:

g++ -c name.cpp
g++ member.cpp name.o

  • 程式執行結果參考:

[02:16 junwu@ws hw2]$ ./a.out < members.dat
Input: Wu
Jun (0912345678) G/0.8
 
Input: Lin
Member not found!
 
Input: Liu
Ming-Chung (0988123456) S/100
 
Input: Kuo
Cho-Ming (0999999999) S/80
Ping (0955333222) G/0.9
 
Input: Quit
Bye
[02:16 junwu@ws hw2]$ 

本題所需之檔案,可至ws.csie.npic.edu.tw上取得,其所在目錄為/home/stu/public/cpp/2014SCPPHW2 。

參考解答

cpp/homework/hw2-old.txt · 上一次變更: 2019/07/02 15:01 由 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki