728x90
프로그램을 실행하면 화면에 프롬포트($)를 출력하고 사용자의 명령을 기다린다.
1. 새로운 사람을 추가한다.
$ add John 01079799898
John was added successfully.
2. 이름으로 전화번호를 검사한다.
$ find Henry
No person named 'Henry' exists.
$ find David
0517778888
3. 전화번호부에 등록된 모든 사람을 출력한다.
$ status
John 01076769898
David 0517778888
Total 2 persons.
4. 전화번호부에서 삭제한다.
$ delete Jim
No person named 'Jim' exists.
$ delete John
John was deleted successfully.
5. 프로그램을 종료한다.
$ exit
[코드]
// 전화번호부 v1.0
#include <stdio.h>
#include <string.h>
#define MAX 100
#define BUFFER_SIZE 100
char* names[MAX];
char* numbers[MAX];
int n = 0;
void add();
void find();
void status();
void remove();
int main() {
char com[BUFFER_SIZE];
while (1) {
printf("$");
scanf("%s", com);
if (strcmp(com, "add") == 0) add();
else if (strcmp(com, "find") == 0) find();
else if (strcmp(com, "status") == 0) status();
else if (strcmp(com, "delete") == 0) remove();
else if (strcmp(com, "exit") == 0) break;
}
return 0;
}
void add() {
char buf1[BUFFER_SIZE], buf2[BUFFER_SIZE];
scanf("%s", buf1);
scanf("%s", buf2);
names[n] = strdup(buf1);
numbers[n] = strdup(buf2);
n++;
printf("%s was added successfully.\n", buf1);
}
void find() {
char buf[BUFFER_SIZE];
scanf("%s", buf);
for (int i = 0; i < BUFFER_SIZE; i++) {
if (strcmp(buf, names[i]) == 0) {
printf("%s", numbers[i]);
return;
}
}
printf("No person named '%s' exists.\n", buf);
}
void status() {
for (int i = 0; i < n; i++)
printf("%s %s", names[i], numbers[i]);
printf("Total %d persons.\n", n);
}
void remove() {
char buf[BUFFER_SIZE];
scanf("%s", buf);
for (int i = 0; i < BUFFER_SIZE; i++) {
if (strcmp(buf, names[i]) == 0) {
names[i] = names[n - 1]; // 마지막 사람을 삭제된 자리로 옮김.
numbers[i] = numbers[n - 1];
n--;
printf("%s was deleted successfully. \n", buf);
return;
}
}
printf("No person named '%s' exists.\n", buf);
}
728x90
'CS > 자료구조' 카테고리의 다른 글
[자료구조] 전화번호부 v3.0 (0) | 2022.09.19 |
---|---|
[자료구조] 전화번호부 v2.0 (0) | 2022.09.18 |
[자료구조] 문자열 읽고 쓰기 (0) | 2022.09.18 |
[자료구조] Graph(그래프) - 최단 경로 알고리즘(벨만 포드, 다익스트라, 플로이드) (0) | 2022.06.20 |
[자료구조] Graph(그래프) - DAG (0) | 2022.06.02 |