題目要求,運(yùn)行結(jié)果是這樣的
下面是該程序的運(yùn)行情況:
Enter name of wine: Gully Wash
Enter number of years: 4
Enter Gully Wash data for 4 year(s):
Enter year: 1988
Enter bottles for that year: 42
Enter year: 1994
Enter bottles for that year: 58
Enter year: 1998
Enter bottles for that year: 122
Enter year: 2001
Enter bottles for that year: 144
Wine: Gully Wash
Year Bottles
1988 42
1994 58
1998 122
2001 144
Wine: Gushing Grape Red
Year Bottles
1993 48
1995 60
1998 72
Total bottle for Gushing Grape Red: 180
Bye
但是我運(yùn)行之后,是這樣
Wine: Gully Wash
Year Bottles
0 0
0 0
0 0
0 0
應(yīng)該是 GetBottles()
沒把數(shù)據(jù)存進(jìn)去,但是我不知道該怎么辦
搜了幾個(gè)答案,寫的都不一樣,一晚上也沒搞清楚哪里不對(duì),所以請(qǐng)教各位
代碼如下
//Winec.h
#pragma once
#ifndef WINEC_H_
#define WINEC_H_
#include<iostream>
#include<string>
#include<valarray>
template<typename Type1, typename Type2>
class Pair
{
private:
Type1 x;
Type2 y;
public:
Pair() :x(0), y(0) {}
Pair(const Type1 x1, const Type2 x2) :x(x1), y(x2) {}
~Pair() {}
Type1 first() const { return x; }
Type2 second() const { return y; }
void setFirst(Type1 x1);
void setSecond(Type2 x2);
};
template<typename Type1, typename Type2>
void Pair<Type1, Type2>::setFirst(Type1 x1)
{
x = x1;
}
template<typename Type1, typename Type2>
void Pair<Type1, Type2>::setSecond(Type2 x2)
{
y = x2;
}
// ===================================
class Wine
{
private:
typedef std::valarray<int> ArrayInt;
typedef Pair<ArrayInt,ArrayInt> PairArray;
std::string label;
int years;
PairArray data;
public:
Wine():label("none"),years(0),data(ArrayInt(),ArrayInt()) {};
Wine(const char* l, int y, const int yr[], const int bot[]);
Wine(const char* l, const ArrayInt & yr, const ArrayInt & bot);
Wine(const char * l, const PairArray & yr_bot);
Wine(const char * l, int y);
void GetBottles();
void Show() const;
const std::string& Label() {return label;}
int sum() const {return data.second().sum();}
};
#endif // !WINEC_H_
#include <iostream>
#include "Winec.h"
using std::cin;
using std::cout;
using std::cerr;
using std::endl;
Wine::Wine(const char * l, int y, const int yr[], const int bot[])
: label(l), years(y), data(ArrayInt(yr,y),ArrayInt(bot,y) )
{
}
Wine::Wine(const char * l, const ArrayInt & yr, const ArrayInt & bot)
: label(l), years(yr.size()), data(ArrayInt(yr), ArrayInt(yr))
{
if (yr.size() != bot.size())
{
cerr << "Year data, bottle data mismatch, array set to 0 size.\n";
years = 0;
data = PairArray(ArrayInt(),ArrayInt());
}
else
{
data.first() = yr;
data.second() = bot;
}
}
Wine::Wine(const char * l, const PairArray & yr_bot)
: label(l), years(yr_bot.first().size()), data(yr_bot) { }
Wine::Wine(const char * l, int y) : label(l), years(y),
data(ArrayInt(0,y),ArrayInt(0,y))
{}
void Wine::GetBottles()
{
if (years < 1)
{
cout << "No space allocated for data\n";
return;
}
cout << "Enter " << label <<
" data for " << years << " year(s):\n";
for (int i = 0; i < years; i++)
{
cout << "Enter year: ";
cin >> data.first()[i];
cout << "Enter bottles for that year: ";
cin >> data.second()[i];
}
}
void Wine::Show() const
{
cout << "Wine: " << label << endl;
cout << "\tYear\tBottles\n";
for (int i = 0; i < years; i++)
cout << '\t' << data.first()[i]
<< '\t' << data.second()[i] << endl;
}
#include <iostream>
#include "Winec.h"
int main ( void )
{
using std::cin;
using std::cout;
using std::endl;
cout << "Enter name of wine: ";
char lab[50];
cin.getline(lab, 50);
cout << "Enter number of years: ";
int yrs;
cin >> yrs;
Wine holding(lab, yrs); // store label, years, give arrays yrs elements
holding.GetBottles(); // solicit input for year, bottle count
holding.Show(); // display object contents
const int YRS = 3;
int y[YRS] = {1993, 1995, 1998};
int b[YRS] = { 48, 60, 72};
// create new object, initialize using data in arrays y and b
Wine more("Gushing Grape Red",YRS, y, b);
more.Show();
cout << "Total bottles for " << more.Label() // use Label() method
<< ": " << more.sum() << endl; // use sum() method
cout << "Bye\n";
return 0;
}
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問,美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。