AddressListing
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
struct LISTING
{
char name[31];
char phone[16];
};
const int MAX_SIZE = 53;
void buildList(LISTING phoneList[], int& last);
void searchList(LISTING phoneList[], int last);
bool seqSearch(LISTING list[], int last, char* target, int& locn);
int main()
{
LISTING phoneList[MAX_SIZE];
int last;
cout << "전화번호부 시작" << endl;
last = MAX_SIZE - 1;
buildList(phoneList, last);
searchList(phoneList, last);
cout << "전화번호부 끝" << endl;
return 0;
}
void buildList(LISTING phoneList[], int& last)
{
ifstream fsPhoneNums;
int i;
fsPhoneNums.open("in.txt");
if(!fsPhoneNums)
{
cout << "전화번호 파일을 열 수 없습니다." << endl;
exit(100);
}
i = 0;
while((i <= last) && (!(fsPhoneNums.eof())))
{
fsPhoneNums.getline(phoneList[i].name,
sizeof(phoneList[0].name), ';');
fsPhoneNums.getline(phoneList[i].phone,
sizeof(phoneList[0].phone));
cout << phoneList[i].name << ";" << phoneList[i].phone << endl;
i++;
}
last = i - 1; // 실질 인덱스
fsPhoneNums.close();
}
void searchList(LISTING phoneList[], int last)
{
char srchName[31];
char more;
bool found;
int locn;
do
{
cout << "이름 입력 : ";
cin>>srchName;
found = seqSearch(phoneList, last, srchName, locn);
if(found)
{
cout << phoneList[locn].name << "("<< locn <<")" << phoneList[locn].phone << endl;
}
else
{
cout << srchName << " 은 찾을 수 없는 이름입니다." << endl;
}
cout << "다른 번호도 찾을까요? ( Y/N )";
cin >> more;
}
while(more == 'Y' || more == 'y');
}
bool seqSearch(LISTING list[], int last, char* target, int& locn)
{
int looker = 0;
while(looker < last && strcmp(strupr(target), strupr(list[looker].name)) != 0)
{
looker++;
}
locn = looker;
return(strcmp(strupr(target), strupr(list[looker].name)) == 0);
}
// strupr = 대소문자 변환해서 구분 가능 (소문자)
// strlwr = 대소분자 변환해서 구분 가능 (대문자)
'1. IT Story > Development' 카테고리의 다른 글
circularAry 큐를 사용하여 복사하기 (0) | 2012.03.29 |
---|---|
StackADT를 이용한 중위식구하기 (0) | 2012.03.29 |
배열로 구현한 Stack을 이용한 중위식구하기 (0) | 2012.03.29 |
seqSearch (0) | 2012.03.29 |
링크드리스트ADT를 이용한 학생성적관리 Pro (0) | 2012.03.29 |
insertionSort (0) | 2012.03.28 |
Heap Tree (보기좋게출력) (0) | 2012.03.28 |
하노이타워 (0) | 2012.03.28 |