【CS139 C 项目】CS139 C Programming Project
November 24, 2020
The objective of this project is to practice the implementation of structures and functions in C.
The submission of the project requires the source code and a readme.pdf describing it.
Pokémon Database
Part 1 - Structure (4 points)
Implement a structure named pokemon, which contains the following elements
- id (int)
- name (char*)
- height (float)
- type (char*)
It is suggested to use an array of the designed structure as the database, for example:
struct pokemon pkdb[100]; or
struct pokemon *pkdb[100];
However, other forms such as linked list are also acceptable.
Part 2 - Basic Functions (4 points)
The following functions should be realized. - int insert(int id, char name, float height, char type);
Add a new pokemon into the database. Return 0 if successful. Return 1 if the max size of the
database is exceeded. - int delete_id(int id);
Delete the pokemon of given id from the database. Return 0 if successful. Return 1 if the
pokemon of given id doesn’t exist in the database.
Then print a sentence to describe the situation according to the return value.
Part 3 - Extended Functions (8 points)
The following functions should be realized. - void find_height(int param);
param ∈ {1, 2}. Find the pokemons with maximum height (param=1) or minimum height
1
(param=2). Print the name of the found pokemons.
Make sure to print all the pokemons if they have the same maximum or minimum height. - void sort_id(); Sort the database with id-ascending order. Print all pokemon names in order.
- void sort_id_plus(int param);
param ∈ {1, 2}. Sort the database with id-ascending order (param=1) or id-descending order
(param=2). Print all pokemon names in order.
Use pointer to function (such as the functions below) instead of duplicating the sort process.
int ascending (int a, int b) { return bint descending (int a, int b) { return b>a; } - void group(char* type);
Print the name of all the pokemons belonging to the given type.
Part 4 - Free Design (4 points)
Design and implement a feature for the database. Feel free to add any element in the structure and
add any function. Explain this feature in detail in readme file.
For example, it could be a great idea to implement the evolutionary chains of pokemons. For pokemon
Eevee, the function could find its evolution Vaporeon, etc.
Input and Output
The main function firstly reads the information of several pokemons, then reads a set of instructions
and prints corresponding output.
The first line of input is an integer n ≤ 50, indicating the number of pokemons in the following lines.
For each pokemon, there are 4 lines containing its id, name, height and type respectively. Remark
that each pokemon may have at least 1 type and at most 2 types. Types are separated with a single
comma.
Then there’s an integer m ≤ 20, indicating the number of instructions. Each line contains 1 instruction,
which is consisted of a number and a parameter, separated by a blank. The number is the
enumeration of corresponding function: 2 delete_id, 3 find_height, 4 sort_id, 5 sort_id_plus, 6 group.
The parameter is passed into the function as argument.
There’s a sample of input and output in the appendix. Each instruction and its output is aligned. It
could be used to validate the functions.
Remark that the format of the output is not important. Do not bother with order of print (except
for sort_id or sort_id_plus), or number of blanks.
Charmander Charizard Pikachu Nidoran Lapras
Lapras
Pikachu Nidoran
Deleted successfully !
Pokemon of id 29 doesn’t exist in the database.
Charmander Charizard Pikachu Lapras
Lapras Pikachu Charizard Charmander
Charizard Charmander
Lapras
推荐阅读
- C语言|学习C语言编程,推荐你看这6本书
- c|关于指针,我对初学C语言的同窗们真的有话要说!4
- c|《C陷阱与缺陷》第二章阅读笔记
- C语言(蓝桥杯--等差素数列)
- C/C++|C++中简单的string类的实现
- RBE104TC 开发
- C|c语言面试题每日一练
- c/c++|c++泛型编程——模板
- c/c++|函数栈帧的创建和销毁(程序员必了解内容)