U E D R , A S I H C RSS

AcceleratedC++/Chapter4

2. Chapter 4 Organizing programs and data

  • –ด–ค ข…ฅ˜˜ ฌธ œ ํ‘‹ค.
  • ‹คฅธ ฒƒ“ค …ฆฝ ด‹ค.
  • ด„„ €€ณ  žˆ–ด• ํ•œ‹ค.

    3žฅŒ€ ดค˜ ฒƒ€ ฒซฒˆงธฒƒงŒ žˆณ , ‚˜จธ€ ฒƒ€ —†‹ค. ํ”„กœทธžจด ž‘„•ŒŠ” „กœ ƒ€—†€งŒ, ปค€ธฐ ‹œž‘ํ•˜ฉด„œ€„ฐ 2,3ฒˆงธ ฒƒด ฒฐ—ฌ˜ฉด, ‚˜ค‘—”  œ–ด€ ถˆ€Šฅํ•ด„‹ค. C++—„œŠ” ‹คฅธ –ธ–ด™€ งˆฐฌ€€กœ ํ•จˆ˜ + žฃŒตฌกฐ  œณตํ•จœกœจ, ํ”„กœทธžจ„ ตฌกฐํ™”‹œํ‚ฌˆ˜ žˆŠ” ฐฉฒ•„  œณตํ•œ‹ค. ˜ํ•œ ํ•จˆ˜ + žฃŒตฌกฐ ฌถ–ด„œ €€ณ  †€ ˆ˜ žˆŠ” classŠ” „ตฌ  œณตํ•ด€‹ค.(Chapter9€„ž„ธํžˆ ‚ดํŽดณธ‹ค.)
    ทธŸฌ€กœ ดฒˆžฅ€„Š” ํ”„กœทธžจ„ ‚˜ˆ „œ, „œกœ ‹คฅธ ํŒŒ—  €žฅ, ปดํŒŒํ•˜Š” ฒ•, ‚˜ค‘— ํ•ฉ˜Š” ฒ• “„ ณต€ํ•  ฒƒด‹ค.

2.1. 4.1 Organizing computations

  • 3žฅŒ€˜ ํ”„กœทธžจ„ ณดฉด “ธ‰„ ฉ”ธฐŠ” €„ด žˆ‹ค. ด €„„ ํ•จˆ˜กœ ถ”ถœํ•ดณดž. ํ•จˆ˜กœ ถ”ถœํ•จœกœจ, ‚˜ค‘— ˜‘ฐ™€ ‚ดšฉ„ ˜ ฝ””ฉํ•  ํ•„š”€ —†ณ , •Œ•„ณดธฐ„ ‰ฌ›Œ„‹ค. ˜ํ•œ “ธ‰ ฉ”ธฐŠ” ฐฉฒ•„ ฐ”€•Œ ทธ ํ•จˆ˜ €„—งŒ ฌธ œ ํ•œ •€„ ˆ˜€ žˆ‹ค. ˜ํ•œ ํ•จˆ˜— ด„„ €–ดคŒœกœจ, ”š ถ”ƒํ™”‹œํ‚ฌˆ˜€ žˆฒŒ œ‹ค.
  • •žžฅ—„œ “ธ‰„ ถœ ฅํ•˜Š” €„„ ‚ดํŽดณดฉด,
    ~cpp 
    	cout << "Your final grade is " << setprecision(3)
    		<< 0.2 * midterm + 0.4 * final + 0.4 * median
    		<< setprecision(prec) << endl;
     
    ด ‡ฒŒ ƒ‹ค. ‘˜งธ„˜ “ธ‰ „‚ฐํ•˜Š” €„„ ‹คŒ ฐ™ด ํ•จˆ˜กœ ฝ‘•„‚ ˆ˜€ žˆ‹ค.
    ~cpp 
    double grade(double midterm, double final, double homework)
    {
        return 0.2 * midterm + 0.4 * final + 0.4 * homework;
    }
    /* ... */
    int main() 
    {
    /* ... */
    	cout << "Your final grade is " << setprecision(3)
    		<< grade(midterm, final, sum / count)
    		<< setprecision(prec) << endl;
    
    	return 0;
    }
    
     

  • ํ•จˆ˜ งŒ“œŠ” ฒ•„ š”•ฝํ•ดณดžฉด
    ~cpp 
    return_type function_name(parameter lists...) { ํ•จˆ˜ ‚ด—„œ ํ•  “ค }
     
    ด ‡ฒŒ ํ•˜ฉด œ‹ค.

  • ํ•จˆ˜ ํ˜ธถœํ• •Œ—Š” ํ•จˆ˜ งŒ“ค•Œ –ดกŒ˜ parameter lists ถฉ‹œํ‚คŠ” ฐ’“ค„ „–ดค˜• ํ•œ‹ค. ก  ˆœ„œ„ งžถฐค˜• ํ•œ‹ค. argumentsณ „ ํ•œ‹ค. argumentsŠ” ‹ด  ˆ˜„ žˆ‹ค. ทธ ’ค— ํ•จˆ˜กœ „˜–ด„ parameter“ค€ ํ•จˆ˜ ‚ด—„œ €—ญ €ˆ˜(ํ•จˆ˜€ ‚˜ฉด †Œฉธ˜Š”)ฒ˜Ÿ ž‘™ํ•˜ฒŒ œ‹ค. ฆ‰ ทธ ฐ’“ค„ ณต‚ฌํ•˜ฒŒ ˜Š” ฒƒด‹ค. ด call by value ํ•œ‹ค.

  • 2.1.1. 4.1.1. Finding medians

  • •ž—„œ šฐฆฌŠ” vector— “ค–ด€ žˆŠ” ฐ’—„œ ค‘„ฐ’ ฐพŠ” ธ ํ–ˆ—ˆ‹ค. Chapter8—„œŠ” vector— “ค–ด€ žˆŠ” type— €„—†ด ž‘™ํ•˜ฒŒ ํ•˜Š” ฒ•„ ฐฐšธ ฒƒด‹ค. €ธˆ€ vector<double>กœงŒ ํ•œ •ง“ž. median ตฌํ•˜Š” ฃจํ‹ด„ ํ•จˆ˜กœ ณดž.
    ~cpp 
    double median(vector<double> vec)
    {
    	typedef vector<double>::size_type vec_sz;
    
    	vec_sz size = vec.size();
    	if (size == 0)
    		throw domain_error("median of an empty vector.");
    	
    	sort(vec.begin(), vec.end());
    	vec_sz mid = size/2;
    
    	return size % 2 == 0 ? (vec[mid] + vec[mid-1]) / 2 : vec[mid];
    }
     
  • —ฌธฐ„œ ‚ดํŽด ฒŒ ช‡€€ žˆ‹ค. €‚œฒˆ—Š” vector˜ ํฌธฐ€ 0ดฉด ทธƒฅ ํ”„กœทธžจ„ ข…ฃŒ‹œœ„ ธ€งŒ, —ฌธฐ„œŠ” ˜ˆ™ธฒ˜ฆฌŠ” ‹ ธฐˆ „ ‚ฌšฉํ–ˆ‹ค. ด ฐฉฒ•€ —ฌธฐ„œ ‚ด€ •Šณ  ‹คŒ €„œกœ „˜–ด„‹ค. <stdexcept> ํฌํ•จ‹œœ ฉด œ‹ค.
  • ˜ํ•œ, •„Œ ํ•จˆ˜ ํ˜ธถœํ•˜ฉด„œ parameterกœ „˜ฒจ„•Œ—Š” ทธ ฐ’„ ณต‚ฌ ํ•œ‹คณ  ํ–ˆ‹ค.  € ‡ฒŒ ํ•จˆ˜ ํ˜ธถœํ•จœกœจ, ›ž˜ vector †ƒ‹œํ‚ค€ •Šณ , ณต‚ฌณธ vector—„œ sort ํ•ด„œ ž‘—…„ ฒ˜ฆฌํ•ด „ˆ˜€ žˆ‹ค. „ก ‹œ„ด € ” ฆฌธด ํ•˜€งŒ..

  • 2.1.2. 4.1.2 Reimplementing out grading policy

  • ด™€„œ ํ•จˆ˜˜ œ šฉํ•จ„ •Œ•˜‹คฉด, šฐฆฌ˜ „  งคธฐŠ” ฐฉฒ•„ ”ฐกœ ํ•จˆ˜กœ ฝ‘•„‚ดณ  ‹ถ„ ฒƒด‹ค. ‹คŒ ˜ˆ œ ณดž.
    ~cpp 
    double grade(double midterm, double final, const vector<double>& hw)
    {
    	if(hw.empty())		// …—„œŠ” hw.size()==0 ดณ  ˜–ด žˆ€งŒ 
    				// empty()ฉ”†Œ“œ ํ˜ธถœํ•˜Š” ฒƒด ” ํšจœจ ดณ  ํ•˜”ตฐš”.
    		throw domain_error("student has done no homework");
    	return grade(midterm, final, median(hw));
    }
     
  • —ฌธฐ„œ ˆˆ—ฌฒจ „€€ ‚ฌํ•ญด žˆ‹ค.
    • const vector<double>& hw : ดฒƒ„ šฐฆฌŠ” doubleํ˜• const vectorกœ˜ ฐธกฐณ  €ฅธ‹ค. referenceŠ” ฒƒ€ –ด– ํ•œ ฐฒด˜ ˜‹คฅธ ด„„ งํ•œ‹ค. ˜ํ•œ const ”€œกœจ,  € ฐฒด €ฒฝํ•˜€ •ŠŠ”‹คŠ” ฒƒ„ ณดžฅํ•ด€‹ค. ˜ํ•œ šฐฆฌŠ” reference ”€œกœจ, ทธ parameter ณต‚ฌํ•˜€ •ŠŠ”‹ค. ฆ‰ parameter€ ปค‹คž€ ฐฒด•Œ, ทธฒƒ„ ณต‚ฌํ•จœกœจ ƒธฐŠ” overhead —†•จˆ˜ žˆŠ” ฒƒด‹ค.

  • ~cpp 
    vector<double> homework;
    vector<double>& hw = homework;
    // hwŠ” homework™€ ฐ™‹ค. ฆ‰, ด„€ ‹คฅด€งŒ, hw ณ ˜ฉด homework„ ฐ™ด ณ ณ„‹ค. ™œƒ? ฐ™œ‹ˆŒ
     
    • grade() function : šฐฆฌŠ” •„Œ gradeŠ” ํ•จˆ˜ งŒ“ค—ˆ—ˆ‹ค. ทธŸฐฐ ดฒˆ— ด„€ ฐ™œฉด„œ parameterŠ” กฐธˆ ‹คฅธ grade() ˜ งŒ“ค—ˆ‹ค. ดŸฐฒŒ €Šฅํ•œ€? €Šฅํ•˜‹ค. ดŸฌํ•œ ฒƒ„ ํ•จˆ˜˜ overloadingดณ  ํ•œ‹ค. ํ•จˆ˜ ํ˜ธถœํ• •Œ –ด–คฒŒ ํ˜ธถœ ŒŠ” ”ฐ€Š” parameter lists— ˜ํ•ด ฒฐ •œ‹ค.
    • exception : ‚ฌšฉž—ฒŒ ฌด—‡ด ž˜ชป˜—ˆŠ”€ •Œ คŠ” exception„ ˜ ธ€‹ค.

    2.1.3. 4.1.3 Reading homework grades

  • ด œ šฐฆฌ€ ํ’€–ด• ํ•  ฌธ œŠ”, ˆ™ œ˜ “ธ‰„ vectorกœ ฝ–ด“คดŠ” ฒƒด‹ค. —ฌธฐ—Š” ‘€€˜ ฌธ œ ด žˆ‹ค. ฐ”กœ ฆฌํ„ฐ’ด ‘ฐœ—ฌ• ํ•œ‹คŠ”  ด‹ค. ํ•˜‚˜Š” ฝ–ด“คธ “ธ‰“คดณ , ˜ ‹คฅธ ํ•˜‚˜Š” ทธฒƒด „ณตํ–ˆ‚˜ ํ•˜Š”€ด‹ค. ํ•˜‚˜˜ Œ€•ˆด žˆ‹ค. ฐ”กœ ฆฌํ„ดํ•˜ณ ž ํ•˜Š” ฐ’„ ฆฌํ„ดํ•˜€ งณ , ทธฒƒ„ referenceกœ „˜ฒจ„œ €ฒฝํ•ดŠ” ฒ•ด‹ค. const ถ™ด€ •Š€ referenceŠ” ํ”ํžˆ ทธ ฐ’„ €ฒฝํ• •Œ “ฐธ‹ค. referenceกœ „˜–ด€Š” ฐ’„ €ฒฝํ•ด• ํ•˜€กœ –ด–ค ‹(expression)ด referenceกœ „˜–ด€ฉด •ˆœ‹ค.(lvalue€ •„‹ˆณ „ ํ•œ‹ค. lvaluež€ ž„‹œ ธ ฐฒด€ •„‹Œ ฐฒด งํ•œ‹ค.)
    ~cpp 
    istream& read_hw(istream& in, vector<double>& hw)
    {
    	double x;
    	while(in >> x)				// ฐจฐจ ‚ดํŽดํ…Œ€งŒ ดž˜ชป˜—ˆ‹ค.
    		hw.push_back(x);
    }
    
    read_hw(cin, homework);	// ํ˜ธถœ
     
  • œ„—„œ ž˜ชปœ €„„ ฐพ•„ณดž.
    • hw€ „˜–ด˜คฉด„œ hw•ˆ— •„ฌดฒƒ„ —†‹คŠ” ฒƒ„ ณดžฅํ• ˆ˜ žˆฒ Š”€?  €ฒˆ— “ฐ˜ ํ•™ƒ“ค˜  ˆ˜€ “ค–ดžˆ„€„ ชจฅธ‹ค. ํ™•‹คํ•˜ฒŒ —†• ธฐ œ„ํ•ด hw.clear() ํ•ดž.
    •  € while ฃจํ”„€ –ธ œ ฉˆถœ€ •Œˆ˜ žˆŠ”€? ํŒŒ˜ — „‹ฌํ–ˆ‚˜, ž… ฅฐ›€ฒŒ “ธ‰ด •„‹•Œ ฒƒด‹ค.
      • ํŒŒ˜ — „‹ฌํ–ˆ‹คŠ” ฒƒ = ฝธฐ ‹คํŒจ
      • ž… ฅฐ›€ฒŒ “ธ‰ด •„‹•Œ( ˆ˜ ž… ฅํ•ด• ˜Š”ฐ ดƒํ•œ ฒƒ„ ž… ฅํ–ˆ„•Œ) istream ฐฒด in€ ‹คํŒจ ƒํƒœ€ œ‹ค. ˜ํ•œ ทธฒƒ„ ฝ€ •ŠŠ”‹ค. ํŒŒ˜ — „‹ฌํ•œฒƒ ฒ˜Ÿ...
    • ด ƒํ™ฉ„ ํ•ดฒฐํ•˜ธฐ œ„ํ•ด, ทธƒฅ inฐฒด˜ ƒํƒœ ดˆธฐํ™”ํ•ดค˜„ฆฌž. in.clear() ชจ“  —Ÿฌ ƒํƒœ ฆฌ…‹‹œœ€‹ค.

  • ~cpp 
    istream& read_hw(istream& in, vector<double>& hw)
    {
    	if(in)
    	{
    		hw.clear();
    		double x;
    		while(in >> x)
    			hw.push_back(x);
    		in.clear();
    	}
    	return in;
    }
     
    DeleteMe) ‘ฒˆงธ€ ž˜ ดํ•ด€ •ˆ€„ค.. ˆ„€ ž˜ •„‹œŠ” „€ ช…พŒํ•œ „ช… €ํƒ“œฆฝ‹ˆ‹ค.

    2.1.4. 4.1.4 Three kinds of function parameters

  • €ธˆŒ€ งŒ“  „ฐœ˜ ํ•จˆ˜ median, grade, read_hw ‚ดํŽดณดž.
    • median ํ•จˆ˜ ณดฉด, vector<double> ํŒŒฉ”ํ„€ ฐธกฐกœ „˜–ด€€ •ŠŠ”‹ค. ํ•™ƒˆ˜€ งŽ•„งˆˆ˜ก งคšฐ ํฐ ฐฒด€  ํ…ฐ ‚ญ„€ •„‹Œ€? ํ•˜ณ  ƒฐํ• ˆ˜„ žˆ€งŒ, –ดฉ”ˆ˜ —†‹ค. ํ•จˆ˜ ‚ด€—„œ †ŒํŒ…„ ํ•ด„ฆฌธฐ •Œฌธ— ฐธกฐกœ „˜ธฐฉด, ปจํ…Œด„ˆ˜ ƒํƒœ€ €ํ•ด„ฆฐ‹ค.
    • grade ํ•จˆ˜ ณดฉด, vectorŠ” const ฐธกฐกœ „˜ธฐณ , double€ ทธ ‡€ •Š‹ค. int‚˜ doubleฐ™€ ธฐณธํ˜•€ ํฌธฐ€ ž‘ธฐ •Œฌธ—, ทธƒฅ ณต‚ฌกœ „˜ฒจ„ ถฉ„ํžˆ  ฅด‹ค. ญ ฐ’„ €ฒฝํ•ด• ํ• •Œฉด ฐธกฐกœ „˜ฒจ•ฒ €งŒ... const ฐธกฐŠ” €žฅ ฐ˜ ธ  „‹ฌฐฉ‹ด‹ค.
    • read_hw ํ•จˆ˜ ณดฉด, ณต‚ฌŠ” ํ•˜€ •Šณ , ทธ ฐ’„ €ฒฝํ•˜ธฐ œ„ํ•ด ฐธกฐงŒ ‹ค.
  • const€ •„‹Œ ฐธกฐํ˜• ํŒŒฉ”ํ„Š” lvalue—ฌ•งŒ ํ•œ‹ค.

  • 2.1.5. 4.1.5 Using functions to calculate a student's grade

  • †ŒŠค ณดฉด ƒˆกœšดฒŒ ˆˆ— ˆ‹ค. ฐ”กœ tryด‹ค. ‹คŒ ฐ™ด “ด‹ค.
    ~cpp 
    	try {
    		// ํ•˜‹ค€ ˜ˆ™ธ ฐœƒํ•˜ฉด, ค‘‹จํ•˜ณ 
    	}
    	catch(domain_error) {
    		// ดฆฌกœ ˜จ‹ค. งŒ•ฝ— try •ˆ—„œ ˜ˆ™ธ •ˆ œจฉด catch •ˆ€ ˆ˜ํ–‰•ˆํ•œ‹ค.
    	}
     

  • —ฌธฐŒ€ ตœข…†ŒŠค

    ~cpp 
    #include <ios>
    #include <iomanip>
    #include <iostream>
    #include <string>
    #include <vector>
    #include <algorithm>
    #include <stdexcept>
    
    using namespace std;
    
    double grade(double midterm, double final, double homework);
    double grade(double midterm, double final, const vector<double>& hw);
    double median(vector<double> vec);
    istream& read_hw(istream& in, vector<double>& hw);
    
    int main()
    {
    	cout << "Please enter your first name: ";
    	string name;
    	cin >> name;
    	cout << "Hello, " << name << "!";
    
    	cout << "Please enter your midterm and final exam grades: ";
    	double midterm, final;
    	cin >> midterm >> final;
    
    	cout << "Enter all your homework grades, "
    			"follewd by end-of-file: ";
    
    	vector<double> homework;
    
    	read_hw(cin, homework);
    
    	try
    	{
    		double final_grade = grade(midterm, final, homework);
    
    		streamsize prec = cout.precision();
    		cout << "Your final grade is " << setprecision(3)
    			<< final_grade << setprecision(prec) << endl;
    	}
    	catch(domain_error)
    	{
    		cout << endl << "You must enter your grades. "
    			"Please try again." << endl;
    		return 1;
    	}
    
    	return 0;
    }
    
    double grade(double midterm, double final, double homework)
    {
    	return 0.2 * midterm + 0.4 * final + 0.4 * homework;
    }
    
    double grade(double midterm, double final, const vector<double>& hw)
    {
    	if(hw.size() == 0)
    		throw domain_error("Student has done no homework");
    
    	return grade(midterm, final, median(hw));
    }
    
    double median(vector<double> vec)
    {
    	typedef vector<double>::size_type vec_sz; 
    
    	vec_sz size = vec.size();
    
    	if(size == 0)
    		throw domain_error("median of an empty vector");
    
    	sort(vec.begin(),vec.end());
    
    	vec_sz mid = size / 2;
    
    	return size % 2 == 0 ? (vec[mid] + vec[mid-1]) / 2 : vec[mid];
    }
    
    istream& read_hw(istream& in, vector<double>& hw)
    {
    	if(in)
    	{
    		hw.clear();
    
    		double x;
    		while(in >> x)
    			hw.push_back(x);
    
    		in.clear();
    	}
    	return in;
    }
    

    2.2. 4.2 Organizing data

    • —ฌํƒœŒ€Š” ํ•œ ํ•™ƒ˜ ฐดํ„งŒ €€ณ  †€•˜‹ค. ํ•˜€งŒ „  ฒ˜ฆฌ ํ”„กœทธžจ€, ชจ“  ํ•™ƒ˜ ฐดํ„ Œ€ƒœกœ ํ•œ‹ค. ด— ‹ค‹œ ฒด„ ธ ฐดํ„ตฌกฐ€ ํ•„š”ํ•˜‹ค.

    2.2.1. 4.2.1 Keeping all of a student's data together

  • ํ•™ƒ˜ ฐดํ„ ฌถ–ด ณดž. —ฌธฐ„œ structž€ ƒˆกœšด ตฌฌธด ‚˜˜จ‹ค. {}•ˆ— ฉค„กœ „ณ  ‹ถ€ €ˆ˜“ค„ ซ™ จฉด œ‹ค.  ‘ํ• ฉด . จณ  €ˆ˜ “ฐฉด œ‹ค.
    ~cpp 
    struct Student_info {
    	string name;
    	double midterm, final;
    	vector<double> homework;
    };
     
  • ฐดํ„ตฌกฐ€ ฐ”€Œ—ˆœ‹ˆ, šฐฆฌ˜ ํ”„กœทธžจ„ •ฝ„ €ฒฝ„ ํ•ด•ํ•  ฒƒด‹ค.  € read
    ~cpp 
    istream& read(istream& is, Student_info& s)
    {
    	is >> s.name >> s.midterm >> s.final;
    	read_hw(is, s.homework);
    	return is;
    }
     
    • is >> „ ณดฉด, string„ ฝ—ˆ‹ค€ double„ ฝธฐ„ ํ•œ‹ค. ดฒŒ €Šฅํ•œ ดœ Š” ˜ค„กœ”ฉ •Œฌธด‹ค.
    • Student_infoํ˜• €ˆ˜ s˜ ฐ’„ €ฒฝ‹œํ‚คธฐ œ„ํ•ด ฐธกฐกœ „˜ฒจคฌ‹ค.
  • ‹คŒ—” grade. ˜›‚  „ € ธžกœ midterm, final, homework“„ ฐ›•˜€งŒ, ˜ค„กœ”ฉ„ ดšฉํ•ด„œ, Student_info ํ•˜‚˜งŒ„ ฐ›„ก ํ•ดณดž.
    ~cpp 
    double grade(const Student_info& s)
    {
    	return grade(s.midterm, s.final, s.homework);
    }
     
  • งˆ€ง‰œกœ sort. šฐฆฌŠ” ‹คŒ ฐ™ด ํ–ˆ—ˆ‹ค.
    ~cpp 
    sort(vec.begin(), vec.end());
     
    •  € vec€ doubleํ˜• ฐ’„ ‹ดณ  žˆ—ˆธฐ 떄ฌธ—, ˆœ„œŒ€กœ sortํ•˜ฉด ˜—ˆ—ˆ‹ค. ํ•˜€งŒ šฐฆฌ€ งŒ“  Student_infoŠ” –ด–ปฒŒ sort ํ• Œ?

  • ~cpp 
    sort(students.begin(), students.end());       // —ฐ? #!$%#@^#@$#
     
    • ฌด—‡„ ธฐ€œกœ sort ํ• ฒƒธ€? ด„? midterm? final? •Œˆ˜€ —†‹ค. ”ฐ„œ šฐฆฌŠ” predicateŠ” ฒƒ„  •˜ํ•ด –ด• ํ•œ‹ค. ‹คŒ ฐ™ด ํ•ดฉด œ‹ค.

    ~cpp 
    bool compare(const Student_info& x, const Student_info& y)
    {
    	return x.name < y.name;
    }
    
    sort(students.begin(), students.end(), compare);
     

    2.2.2. 4.2.3. Generating the report

  • max(ฐ™€ ํƒ€ž…˜ ํŒŒฉ”ํ„‘ฐœ) : ญ ํฐฐ’„ ฆฌํ„ดํ•ด ฒ €
  • string(ธธด,'ฌธž') : ธธดงŒํ˜ 'ฌธž' ƒ„ํ•ด€‹ค.
  • catch(domain_error e) ํ•œ ‹คŒ— ฌดŠจ ˜ˆ™ธ ‚ฌŠ”€ •Œณ  ‹ถœฉด e.what()„ ํ•ด€‹ค.

  • 2.3. 4.3. Putting it all together

  • „ฆฌ ปดํŒŒดž‘ ํ—ค” ํŒŒ ด•ธฐ ‚˜˜จ‹ค. ทธƒฅ „˜–ด€ž.
  • ํ—ค” ํŒŒ—„œŠ” using namespace ดŸฐ“ฐ€ งณ  ทธƒฅ ํ’€ „ž„ จž. std:vector ด ‡ฒŒ...
  • ‘ฒˆ ดƒ ํฌํ•จ˜Š” ฒƒ„ ฐฉ€ ํ•˜ธฐ œ„ํ•ด, #ifndef, #define, #endif ดŸฐฐ ํ•ดž. ทธŸฌฉด„œ  „ฒ˜ฆฌธฐ ด•ธฐ€ ‚˜˜จ‹ค.
    ~cpp 
    #ifndef GURAD
    #define GUARD
    /* ...
       ...
       ... */
    #endif
     

  • 2.4. 4.4. Partitioning the grading program

  • ทธƒฅ ฐœŠ” ‹ค.

  • 2.5. 4.5. The revised grading program

  • ทธƒฅ ณดธฐ ข‹•„กŒ‹คŠ” –˜ธฐํ•˜ณ  žˆ‹ค.


  • Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2021-02-07 05:22:25
    Processing time 0.0945 sec