6.WilliamWingate從事披薩分析服務。對於每個披薩餅,他都需要記錄下列信息:

披薩餅公司的名稱,可以有多個單詞組成。

披薩餅的直徑

披薩餅的重量

請設計一個能夠存儲這些信息的結構,並編寫一個使用這種結構變量的程序。程序將請求用户輸入上述信息,然後顯示這些信息。請使用cin(或它的方法)和cout

#include<iostream>
using namespace std;

// 1. 定義一個 Pizza 的結構體
struct Pizza {
    char company_name[20]; // 一般來説變量的命名xxx_xxx,結構體或者類的命名xxxXxx
    double diameter;
    double weight;
};

int main() {
    // 2. 請求用户輸入
    Pizza pizza;
    cout << "請輸入披薩餅公司的名稱:";
    cin.getline(pizza.company_name, 20);
    cout << "請輸入披薩餅的直徑:";
    cin >> pizza.diameter;
    cout << "請輸入披薩餅的重量:";
    cin >> pizza.weight;

     cout << "***************" << endl;;
    
    // 3. 輸出
    cout << "披薩餅公司的名稱:" << pizza.company_name << endl;
    cout << "披薩餅的直徑:" << pizza.diameter << endl;
    cout << "披薩餅的重量:" << pizza.weight << endl;
    return 0;
}
xaye@orange:~/code/dev/14$ ./a.out 
請輸入披薩餅公司的名稱:胖東來
請輸入披薩餅的直徑:20
請輸入披薩餅的重量:30
***************
披薩餅公司的名稱:胖東來
披薩餅的直徑:20
披薩餅的重量:30

7.完成編程練習6,但使用new來為結構動態分配內存,而不是聲明一個結構變量。另外,讓程序在請求輸入披薩名稱之前輸入披薩直徑。

#include<iostream>
using namespace std;

// 1. 定義一個 Pizza 的結構體
struct Pizza {
    char company_name[20]; // 一般來説變量的命名xxx_xxx,結構體或者類的命名xxxXxx
    double diameter;
    double weight;
};

int main() {
    // 2. 請求用户輸入
    Pizza* pizza = new Pizza;
    cout << "請輸入披薩餅的直徑:";
    cin >> pizza->diameter;
    
    cout << "請輸入披薩餅公司的名稱:";
    cin.getline(pizza->company_name, 20);

    cout << "請輸入披薩餅的重量:";
    cin >> pizza->weight;

     cout << "***************" << endl;;
    
    // 3. 輸出
    cout << "披薩餅公司的名稱:" << pizza->company_name << endl;
    cout << "披薩餅的直徑:" << pizza->diameter << endl;
    cout << "披薩餅的重量:" << pizza->weight << endl;

    delete pizza; // 一定記得delete(內存泄漏),delete之後不要再去用了(閃退)
    return 0;
}

8.完成編程練習6,但使用new來動態分配數組,而不是聲明一個包含3個元素的CandyBar的數組。

#include<iostream>
using namespace std;
//1.聲明CandyBar結構體
struct CandyBar {
    string brand;
    double weight;//一般情況用double
    unsigned int calorie; //一般情況用int,但是這裏肯定沒有負數,所以就用無符號
};

int main() {
    // 2. 創建一個名為 snack 的 CandyBar 變量,初始化聲明snack時進行
    CandyBar* snacks = new CandyBar[3]; // 數組指針指向的是數組的首地址

    //  snacks[0] 是對象, snacks 是指針?
    // snacks[0]->brand 其實是編譯器不支持這種語法
    snacks[0].brand = "Mocha Munch1"; // 有疑問這裏為什麼?不是snacks[0]->brand="Mocha Munch"
    snacks[0].weight = 2.3;
    snacks[0].calorie = 350;

    snacks[1].brand = "Mocha Munch2";
    snacks[1].weight = 3.3;
    snacks[1].calorie = 450;

    snacks[2].brand = "Mocha Munch3";
    snacks[2].weight = 4.3;
    snacks[2].calorie = 550;
    
    //CandyBar snacks[3] = {{"Mocha Munch1", 2.3, 350},{"Mocha Munch2", 3.3, 450},{"Mocha Munch3", 4.3, 550}};
    

    // 3. 輸出
    cout << "first brand: " << snacks[0].brand << endl;
    cout << "first weight: " << snacks[0].weight << endl;
    cout << "first calorie: " << snacks[0].calorie << endl;

    cout << "***************" << endl;

    cout << "second brand: " << snacks[1].brand << endl;
    cout << "second weight: " << snacks[1].weight << endl;
    cout << "second calorie: " << snacks[1].calorie << endl;

     cout << "***************" << endl;

    cout << "third brand: " << snacks[2].brand << endl;
    cout << "third weight: " << snacks[2].weight << endl;
    cout << "third calorie: " << snacks[2].calorie << endl;

    delete[] snacks;
    return 0;
}
xaye@orange:~/code/dev/14$ ./a.out 
first brand: Mocha Munch1
first weight: 2.3
first calorie: 350
***************
second brand: Mocha Munch2
second weight: 3.3
second calorie: 450
***************
third brand: Mocha Munch3
third weight: 4.3
third calorie: 550

9.編寫一個程序,讓用户輸入三次40碼跑的成績(如果你願意,也可以讓用户輸入40米跑的成績),並顯示次數和平均成績。請使用一個array對象來存儲數

據(如果編譯器不支持array類,請使用數組)。

#include<iostream>
using namespace std;
#include <array>

int main() {
    // 1. 定義接收用户的輸入
    array<double, 3> arrays;
    cout << "請輸入第一次成績:";
    cin >> arrays[0];

    cout << "請輸入第二次成績:";
    cin >> arrays[1];

    cout << "請輸入第三次成績:";
    cin >> arrays[2];

    // 2. 計算平均成績
    int avg = (arrays[0] + arrays[1] + arrays[2]) / 3;

    // 3. 輸出
    cout << "平均成績是:" << avg << endl;

    return 0;
}
xaye@orange:~/code/dev/14$ ./a.out 
請輸入第一次成績:99
請輸入第二次成績:100
請輸入第三次成績:88
平均成績是:95