Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<string.h>
- struct record{
- char name[21];
- int resign;
- int retire;
- };
- struct record lili[101];
- int nameDoesntExist(char name[21]){
- int notFound=1;
- int i=0;
- for(i=0; lili[i].name[0]!=0 ; i++){
- if(lili[i].retire==1)continue;
- if(lili[i].resign==1)continue;
- if(strcmp( lili[i].name, name)==0){
- notFound = 0;
- return 0; //same name found
- break;
- }
- }
- if(notFound)return 1; //same name not found
- }
- void add(char name[21]){
- // printf("Adding new record %s\n",name);
- if( nameDoesntExist(name) ){
- // printf("--> %s doesn't Exist, adding new record...\n",name);
- for(int i=0;; i++ ){
- if( (lili[i].name[0]==0) || ((lili[i].resign==1)&&(lili[i].retire==0))
- ){
- // printf("--> empty element/retired found on [%d]! Record added to [%d]\n", i+1, i+1);
- strcpy(lili[i].name,name);
- lili[i].resign=0;
- lili[i].retire=0;
- break;
- }
- }
- }else{
- // printf("%s Exists, skipping this one.\n",name);
- }
- }
- void swap(int a, int b){
- // printf("Swapping record [%d] with [%d]\n", a+1,b+1);
- if( (lili[a].resign==0) && (lili[b].resign==0)
- && (lili[a].retire==0) && (lili[b].retire==0)
- && (lili[a].name[0]!=0) && (lili[b].name[0]!=0)){
- char temp[21];
- strcpy(temp, lili[a].name);
- strcpy(lili[a].name, lili[b].name);
- strcpy(lili[b].name, temp);
- int temp2 = lili[a].resign;
- lili[a].resign = lili[b].resign;
- lili[b].resign = temp2;
- // printf("--> Swapped!\n");
- } else {
- // printf("--> error:one of the position has resigned\n");
- }
- }
- void resign(int a){
- // printf("Marking record [%d] as resigned\n",a+1);
- if(lili[a].retire==0){
- lili[a].resign = 1;
- }
- }
- void retire(int a){
- // printf("Marking record [%d] as retired\n",a+1);
- if(lili[a].resign==0){
- lili[a].retire = 1;
- }
- }
- void display(){
- for(int i=0; lili[i].name[0] != 0; i++){
- printf("[%d] %s | %d | %d\n",i+1,lili[i].name,lili[i].resign,lili[i].retire);
- }
- }
- int main(){
- int input=0;
- scanf("%d", &input);
- for(int i=0;i<input;i++){
- int process;
- // printf("input #%d: ",i);
- scanf("%d", &process);
- if(process==1){
- char a[21],b[21],c[21];
- scanf("%s %s %s",a,b,c);
- add(a);
- } if(process==2){
- int a,b;
- scanf("%d %d",&a,&b);
- swap(a-1,b-1);
- } if(process==3){
- int a;
- scanf("%d", &a);
- resign(a-1);
- } if(process==4){
- int a;
- scanf("%d", &a);
- retire(a-1);
- }
- }
- for(int i=0; lili[i].name[0]!=0 ;i++){
- if( lili[i].resign == 1)continue;
- if( lili[i].retire == 1)continue;
- printf("%s\n",lili[i].name);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement