/*讌襤磯悪*/ /* 1. 讌襤磯悪 蠍磯ゼ 2. 讌襤磯 '*' 襦 螻, 讌襤郁 蟆 '.'朱 . 3. レ 覃 讌襤郁 螻褐 豢ロ. 4. 讌襤磯悪 0, 0企 譬襭. 5. C++豐覲伎 殊螳 襦蠏碁 讌蟆企 ..覲願 讌 蟆 る 讌 譯朱 譬蟆.. */ /* 蟆郁骸 讌襤磯悪 : X, Y豢 ロ. X豢: 4 Y豢: 4 讌襤磯ゼ ロ. (讌襤: *, 讌襤郁 蟆: .) *... .... .*.. .... Field #1 * 1 0 0 2 2 1 0 1 * 1 0 1 1 1 0 讌襤磯悪 : X, Y豢 ロ. X豢: 3 Y豢: 3 讌襤磯ゼ ロ. (讌襤: *, 讌襤郁 蟆: .) *** *.* *** Field #2 * * * * 8 * * * * 讌襤磯悪 : X, Y豢 ロ. X豢: 0 Y豢: 0 覓危る 襯企 譬襭. */ #include "stdafx.h" #include <iostream> #include <string> #define Y_SIZE 100 using namespace std; //螳 讌襤 class CCreateMine { private: char* pX; public: CCreateMine(int x); ~CCreateMine(); void InputMineX(int x); char OutputMineX(int x); }; //讌襤 CCreateMine::CCreateMine(int x) { pX = new char[x]; } //覃語 CCreateMine::~CCreateMine() { delete pX; } //讌襤一 void CCreateMine::InputMineX(int x) { for(int i = 0; i < x; i++) { cin >> pX[i]; } } //讌襤一 char CCreateMine::OutputMineX(int x) { return pX[x]; } //螳 襦磯ゼ ロ 企 class CRowStorage { private: int x; int y; CCreateMine* pArray[Y_SIZE]; //Y_SIZE 100 public: CRowStorage(); void InputXY(); void InputMineY(); void OutputMineY(); int returnX(); int returnY(); }; CRowStorage::CRowStorage() { x = 0; y = 0; } //讌襤磯悪 X, Y void CRowStorage::InputXY() { cout << "讌襤磯悪 : X, Y豢 ロ." << endl; cout << "X豢: "; cin >> x; cout << "Y豢: "; cin >> y; if(x > 0 && y > 0) cout << "讌襤磯ゼ ロ. (讌襤: *, 讌襤郁 蟆: .)" << endl; else return; } //螳 襦磯襦 讌襤磯ゼ ル. void CRowStorage::InputMineY() { if(x > 0 && y > 0 && y <= Y_SIZE) //Y_SIZE 100 { for(int i = 0; i < y; i++) { pArray[i] = new CCreateMine(x); pArray[i]->InputMineX(y); } cout << endl; } else { cout << "讌襤磯悪 X, Y 覿 ロ伎 ." << endl; CRowStorage::InputXY(); } } //讌襤一 //讌襤一企 * 覃 , -> [i+1], 譬, -> [i-1] void CRowStorage::OutputMineY() { int num = 0; if(x > 1 && y > 1 && y <= Y_SIZE) //Y_SIZE 100 { for(int i = 0; i < y; i++) { for(int j = 0; j < x; j++) { char ch = pArray[i]->OutputMineX(j); if(ch != '*') //讌襤郁 覃 譯朱 讌襤郁 讌 { for(int i2 = i - 1; i2 <= i + 1; i2++) { for(int j2 = j - 1; j2 <= j + 1; j2++) { if(i2 >= 0 && i2 < y) { if(j2 >= 0 && j2 < x) { if(pArray[i2]->OutputMineX(j2) == '*') num++; } } } } cout << num << " "; } else //讌襤一企 { cout << "*" << " "; } num = 0; if(j == x - 1) cout << endl; } } } else { cout << "讌襤磯悪 X, Y襯 (x, y 覈 1 伎)伎 ." << endl; CRowStorage::InputXY(); } } int CRowStorage::returnX() { return x; } int CRowStorage::returnY() { return y; } int _tmain(int argc, _TCHAR* argv[]) { int i = 1; CRowStorage* rs = new CRowStorage(); do { rs->InputXY(); if(rs->returnX() > 0 && rs->returnY() > 0) { rs->InputMineY(); cout << "Field #" << i << endl; rs->OutputMineY(); cout << endl; } i++; }while(rs->returnX() > 0 || rs->returnY() > 0); delete rs; cout << "覓危る 襯企 譬襭."; cin.ignore(i); cout << endl; return 0; }