리 데...
기 문 string더 include 고 배 char *로 고 #1,#2,#3 strcpy를 고고 ,
"empty"로 기 나 PUSH를 때, 배 모든값 개 값로 변경된다는 다... 그 를 모르고 ..
"empty"로 기 나 PUSH를 때, 배 모든값 개 값로 변경된다는 다... 그 를 모르고 ..
AnswerMe 당 드를 려.#1, #2, #3 를 떻게 바꾸는 모르겠다. 그리고 리 .
~cpp #1 : strcpy(array[i], "empty"); #2 : strcpy(array[0], "empty"); #3 : strcpy(array[tail], "empty");가능다면, 드를 려. 각대로라면, 가능 드를 말는 것 같. --NeoCoin
문 드는 다과 같다. --문명
밤(10 ) 답변드리겠다. 게는 당 기가 될것 같군. 미. 단, 글로 기 든. 변 람들 붙고 물보는 것 방법 될것 같다. 그리고, 교 교, call By Value, call By reference Pointer 관련 부 면 겠다. --NeoCoin
명 복것 같다. 본 --;;
~cpp
#include <iostream>
#include <string>
using namespace std;
const int ASIZE = 5;
// VC++ 7.0 결과, 면 디그 모드 되 다.
// VC++ 6.0 라면, release 모드 되 것다.
void main()
{
std::string a;
char * array[ASIZE]; // Pointer 배다. , 문를 공 닙다.
// char 를 가리 는 를 는 32bit 값들 Pointer들 5개
// 배다.
// 각 Pointer들 미 는 값들로 다.(러 )
int tail = 0, status = 3;
int select, count;
for(int i = 0 ; i < ASIZE ; i++)
strcpy(array[i], "empty"); // Pointer가 가르는 부 근 가능 메모리 공라면
// 덮 다. VC++ 6.0 Debug 모드는 디그 보를
// 드 변 근 가능 공 두기 때문 러가 가는
// 것로 보다. 경 debug 모드는 느 가능
// 로 기값 되 다. Release 모드로 바꾸 보.
do
{
cout << "1. PUSH 2. Pop 3. Stack 4. Queue 5. Show 6. Exit" << endl;
cin >> select;
switch(select)
{
case 1 :
cout << "력 : ";
if (tail == ASIZE)
{
cout << " 로 다." << endl;
break;
}
cin >> array[tail]; // array[tail] 까 미는 메모리 가리는
// 나 Pointer다. 그 로 문를 는 것므로
// 보 다. 근 가능 메모리 라면, 력 만
// 덮 다.
tail++;
break;
case 2 :
if(status == 4) //
{
strcpy(array[0], "empty");
tail--;
for(count = 0 ; count < tail ; count++)
array[count] = array[count+1]; // string 경 달리, Pointer 값만 복됩다.
// string 라면, call by value 로 class
// 복가 루 다. 같 값 되는 는
// 드 때문다. 배 모든 char 가 결국 같 곳 가리게 됩다.
// 그래 반는 곳 바꾸면 모두가 바뀝다.
}
else //
{
tail--;
strcpy(array[tail], "empty"); // 로, 미는 대 복 다.
}
break;
case 3 :
status = 3;
break;
case 4 :
status = 4;
break;
case 5 :
for(count = 0 ; count < tail ; count++)
{
cout << array[count] << "] "; // , 미는 가리는 Pointer를 력려는
// 다. , empty+null 라는 값 메모리 로
// 기 때문, 값 력 될 다.
}
cout << endl;
break;
case 6 :
break;
default :
cout << " 1부 6까 를 력 " << endl;
}
}while(select != 6);
}
력 관련 명, cin
~cpp std:string 력과, char* 력 cin string 력 는 드는
string 배 드는 다과 미가 같다.
~cpp C:\Program Files\Microsoft Visual Studio\VC98\Include\istream 되 다. 궁면, Debug 모드로 따라가 보.string 배 드는 다과 미가 같다.
~cpp string element; cin >> element드 >> 는, string 된 드를 뜯 보면, 단 다과 같 드를 다. 부 발다.
~cpp
... 략 ...
if (_Ok) // 력 료되나? 기본로 enter, space 기 료
{ // state okay, extract characters
...략...
_Str.erase(); // string 공 기 element
_TRY_IO_BEGIN // 리
/// 력 문 길 내고, 공
_Mysizt _Size = 0 < _Istr.width()
&& (_Mysizt)_Istr.width() < _Str.max_size()
? (_Mysizt)_Istr.width() : _Str.max_size();
...략...
/// 면, 문를 string 더는
for (; 0 < _Size; --_Size, _Meta = _Istr.rdbuf()->snextc())
...략...
_Str.append(1, _Traits::to_char_type(_Meta)); // 문를 나 더다. 때, string 객가
// 로 메모리를 당다.
...략...
그러나, 다과 같 드~cpp char* element; cin >> element;는 단 력값 는 드가 다과 같다. 동 과 다.
~cpp
...략...
*_Str++ = _Traits::to_char_type(_Meta); // _Str char* element 다. , 문를 는 공 당는 드가 다.
// 그래, element가 가리는 는 곳 값 려고 다.
// 만 그공 OS 보래 로그램 근 는 라면,
// 로그램 다.
...략...
리 떻게 는 모르겠..곳 고 를 로 만들 나?
그리고 방법나, 들 말 기로 따라가 보면 다. 그러나 단발 게 많 들 는 보 두드러기가 날 모르겠군. ^^;; 는 그 링 다. --NeoCoin
그리고 방법나, 들 말 기로 따라가 보면 다. 그러나 단발 게 많 들 는 보 두드러기가 날 모르겠군. ^^;; 는 그 링 다. --NeoCoin
ps. 반 데블 를 대 ZeroWiki 방법 대 부던것 같다. 만, 가 기가 될 것 같다.
~cpp
#include <iostream>
#include <string>
using namespace std;
const int ASIZE = 5;
void main()
{
string array[ASIZE];
int tail = 0, status = 3;
int select, count;
for(int i = 0 ; i < ASIZE ; i++)
array[i] = "empty"; //#1
do
{
cout << "1. PUSH 2. Pop 3. Stack 4. Queue 5. Show 6. Exit" << endl;
cin >> select;
switch(select)
{
case 1 :
cout << "력 : ";
if (tail == ASIZE)
{
cout << " 로 다." << endl;
break;
}
cin >> array[tail];
tail++;
break;
case 2 :
if(status == 4) //
{
array[0] = "empty"; //#2
tail--;
for(count = 0 ; count < tail ; count++)
array[count] = array[count+1];
}
else //
{
tail--;
array[tail] = "empty"; //#3
}
break;
case 3 :
status = 3;
break;
case 4 :
status = 4;
break;
case 5 :
for(count = 0 ; count < tail ; count++)
{
cout << array[count] << "]\t";
}
cout << endl;
break;
case 6 :
break;
default :
cout << " 1부 6까 를 력 " << endl;
}
}while(select != 6);
}










