std::vector<int> QElement::expandNode(){ std::vector<bool> already(getNodeCount(),false); std::vector<int> retVal; for(int i = 0; i < (int) visited.size(); ++i){ already[visited[i]] = true; } for(int i = 0; i < getNodeCount(); ++i){ if (!already[i]) retVal.push_back(i); } return retVal; }
void add(){ fp=fopen("emp1.txt","ab+"); fseek(fp,0,SEEK_END); another = 'y'; while(another == 'y') { printf("Enter employee id:\n"); scanf("%d",&t); if(already(t) == 0){ printf("\nThe employee id already exists\n\n"); mainmenu(); } e.emp_id=t; printf("Enter name:\n"); scanf("%s",e.name); printf("Enter age:\n"); scanf("%d", &e.age); printf("Enter address:\n"); scanf("%s",e.address); printf("Enter basic salary:\n"); scanf("%f", &e.salary); printf("Enter year of experience:\n"); scanf("%d",&e.year_of_experience); printf("Enter Employee post:\n"); scanf("%s",e.post); /*printf("Enter Date of birth:\n"); scanf("%d",&e.DOB); printf("Enter Blood Group:\n"); scanf("%s",e.blood_group);*/ fwrite(&e,recsize,1,fp); printf("You can also perform another operation:\n "); scanf("%c",&another); } }
selunit() { char fnam[20], s[50]; static char dobuff[50]; char posslev[20][20]; int diff[20], i, k, m, n, best, alts; FILE *f; char zb[200]; static char saved[20]; while (ask) { printf("What lesson? "); fflush(stdout); gets(dobuff); if (strcmp(dobuff, "bye") == 0) wrapup(0); level = todo = dobuff; sprintf(s, "../../%s/L%s", sname, dobuff); if (access(s, 04) == 0) return; printf("no such lesson\n"); } alts = 0; retry: f=scrin; if (f==NULL) { sprintf(fnam, "../../%s/L%s", sname, level); f = fopen(fnam, "r"); if (f==NULL) { fprintf(stderr, "No script for lesson %s.\n", level); wrapup(1); } while (fgets(zb, 200, f)) { trim(zb); if (strcmp(zb, "#next")==0) break; } } if (feof(f)) { printf("Congratulations; you have finished this sequence.\n"); fflush(stdout); todo = 0; return; } for(i=0; fgets(s, 50, f); i++) { sscanf(s, "%s %d", posslev[i], &diff[i]); } best = -1; /* cycle through lessons from random start */ /* first try the current place, failing that back up to last place there are untried alternatives (but only one backup) */ n = grand()%i; for(k=0; k<i; k++) { m = (n+k)%i; if (already(posslev[m],0)) continue; if (best<0) best=m; /* real alternatives */ alts++; if (abs(diff[m]-speed) < abs(diff[best]-speed)) best=m; } if (best < 0 && nsave) { nsave--; strcpy(level, saved); goto retry; } if (best <0) { /* lessons exhausted or missing */ printf("Sorry, there are no alternative lessons at this stage.\n"); printf("See someone for help.\n"); fflush(stdout); todo = 0; return; } strcpy (dobuff, posslev[best]); if (alts>1) { nsave=1; strcpy (saved, level); } todo = dobuff; fclose(f); }
operator bool() const { return already(); }