std::pair<double, double> PCR::theta_moments()const{ double mean(0), var(0), n(0); for_each(subjects().begin(), subjects().end(), boost::bind(&PCR::increment_theta_moments, this, _1, boost::ref(mean), boost::ref(var), boost::ref(n))); if(n>0) mean/=n; var -= n*mean*mean; if(n>1) var/= n-1; return std::make_pair(mean, var); }
int main() { clrscr(); printf("Welcome to CarrotCore!\n"); printf("Pikachu School District, Dummer County, Wyoming\n\n"); printf("Registered users for Leroy Jenkins Elementary:\n"); char *teachk = "*****@*****.**"; char *teach1 = "*****@*****.**"; char *teach2 = "*****@*****.**"; char *teach3 = "*****@*****.**"; char *teach4 = "*****@*****.**"; char *teach5 = "*****@*****.**"; printf("Sienna Spencer (Kindergarten) <%s>\n", teachk); printf("Joel Chapman (First Grade) <%s>\n", teach1); printf("Niamh Parker (Second Grade) <%s>\n", teach2); printf("Hannah Lyons (Third Grade) <%s>\n", teach3); printf("Christopher Law (Fourth Grade) <%s>\n", teach4); printf("Mitchell Davis (Fifth Grade) <%s>\n\n", teach5); char *user=(char*) malloc(35); char *pass=(char*) malloc(sizeof(char)*100); int i1; do { printf("Username: "******"%u\n",sizeof(user)); fgets(user, sizeof(user), stdin); printf("%s\n", user); user[strlen(user)-1]='\0'; for (i1=0; i1<35; i1++) { user[i1]=tolower(user[i1]); }//function "tolower" used to make all input lowercase printf("%s\n", user); printf("Password: "******"Invalid username. Please login with a certified Pikachu School District email.\n"); } } while(strcmp(user, teachk)!=0 && strcmp(user, teach1)!=0 && strcmp(user, teach2)!=0 && strcmp(user, teach3)!=0 && strcmp(user, teach4)!=0 && strcmp(user, teach5)!=0); FILE *class; teacher teach; switch (user[0])//first letter of username input decides teacher profile and class roster { case 's': class=fopen("kindergarten2.txt", "r"); teach.fname="Sienna"; teach.lname="Spencer"; teach.birthday="5/31/1985"; teach.grade="Kindergarten"; teach.email=teachk; teach.title="Mrs."; break; case 'j': class=fopen("firstgrade2.txt", "r"); teach.fname="Joel"; teach.lname="Chapman"; teach.birthday="1/28/1975"; teach.grade="First Grade"; teach.email=teach1; teach.title="Mr."; break; case 'n': class=fopen("secondgrade2.txt", "r"); teach.fname="Niamh"; teach.lname="Parker"; teach.birthday="10/10/1961"; teach.grade="Second Grade"; teach.email=teach2; teach.title="Mrs."; break; case 'h': class=fopen("thirdgrade2.txt", "r"); teach.fname="Hannah"; teach.lname="Lyons"; teach.birthday="12/14/1955"; teach.grade="Third Grade"; teach.email=teach3; teach.title="Mrs."; break; case 'c': class=fopen("fourthgrade2.txt", "r"); teach.fname="Christopher"; teach.lname="Law"; teach.birthday="3/2/1969"; teach.grade="Fourth Grade"; teach.email=teach4; teach.title="Mr."; break; case 'm': class=fopen("fifthgrade2.txt", "r"); teach.fname="Mitchell"; teach.lname="Davis"; teach.birthday="12/22/1977"; teach.grade="Fifth Grade"; teach.email=teach5; teach.title="Mr."; break; } int num; fscanf(class,"%d", &num);//first line of each file is number of students student stud[num]; int i; fgetc(class); char *wholeName=(char*)malloc(sizeof(char)*100); char *address=(char*)malloc(sizeof(char)*100); char *birthday=(char*)malloc(sizeof(char)*12); int lnamelength=0, fnamelength=0, bdaylength=0, addlength=0; for (i=0; i<num; i++)//initializes data to structure array { fgets(wholeName, 100, class); wholeName[strlen(wholeName)-1]='\0'; stud[i].fname=wholeName; stud[i].lname=splitString(wholeName, ' '); fnamelength+=strlen(stud[i].fname); *stud[i].lname='\0'; stud[i].lname++; lnamelength+=strlen(stud[i].lname); fgets(address, 100, class); address[strlen(address)-1]='\0'; stud[i].address=address; addlength+=strlen(stud[i].address); fgets(birthday, 12, class); birthday[strlen(birthday)-1]='\0'; stud[i].birthday=birthday; bdaylength+=strlen(stud[i].birthday); } clrscr(); printf("Welcome, %s %s!\n", teach.title, teach.lname); int choice; do{//main menu printf("Please select an option below. (Enter the numeric value.)\n"); help(); if (scanf("%d", &choice)==0){ clrscr(); printf("Invalid input. Please input a number.\n"); while(getchar()!='\n'); } }while(choice!=1&&choice!=2&&choice!=3&&choice!=4&&choice!=5); //the following pointers to pointers are needed for roster char **lname=(char**)malloc(lnamelength); char **fname=(char**)malloc(fnamelength); char **bdays=(char**)malloc(bdaylength); char **addresses=(char**)malloc(addlength); int i5; for (i5=0;i5<num;i5++) { lname[i5]=stud[i5].lname; fname[i5]=stud[i5].fname; bdays[i5]=stud[i5].birthday; addresses[i5]=stud[i5].address; } int subcho; int asscho; float weight; int i7, i8; int denom, correct; int *assignments=(int*)malloc(400); switch (choice) { case 1: roster (lname, fname, bdays, addresses, num); break; case 2: do{//choose subject, choose assignment type, input grades for each student based on correct/total questions printf("What subject are you inputting grades for?\n"); subjects(); if (scanf("%d", &subcho)==0){ clrscr(); printf("Invalid input. Please input a number.\n"); while(getchar()!='\n'); } }while(subcho!=1&&subcho!=2&&subcho!=3&&subcho!=4&&subcho!=5); do{ printf("What type of assignment is this grade for?\n"); assigntype(); if(scanf("%d", &asscho)==0){ clrscr(); printf("Invalid input. Please input a number.\n"); while(getchar()!='\n'); } }while(asscho!=1&&asscho!=2&&asscho!=3&&asscho!=4); do{ printf("How many questions did the assignment have?\n"); if (scanf("%d", &denom)==0){ clrscr(); printf("Invalid input.Please input a number.\n"); while(getchar()!='\n'); } }while(denom!=0); switch (asscho) { case 1: weight=0.4; break; case 2: weight=0.3; break; case 3: weight=0.2; break; case 4: weight=0.1; break; } *assignments=asscho; assignments++; switch (subcho) { case 1: for (i7=0;i7<num;i7++) { printf("How many did %s get right?", stud[i7].fname); scanf("%d", &correct); *stud[i7].grad.gradesMath=100*weight*(correct/denom); stud[i7].grad.gradesMath++; } break; case 2: for (i7=0;i7<num;i7++) { printf("How many did %s get right?", stud[i7].fname); scanf("%d", &correct); *stud[i7].grad.gradesEng=100*weight*(correct/denom); stud[i7].grad.gradesEng++; } break; case 3: for (i7=0;i7<num;i7++) { printf("How many did %s get right?", stud[i7].fname); scanf("%d", &correct); *stud[i7].grad.gradesSci=100*weight*(correct/denom); stud[i7].grad.gradesSci++; } break; case 4: for (i7=0;i7<num;i7++) { printf("How many did %s get right?", stud[i7].fname); scanf("%d", &correct); *stud[i7].grad.gradesHist=100*weight*(correct/denom); stud[i7].grad.gradesEng++; } break; case 5: for (i7=0;i7<num;i7++) { printf("How many did %s get right?", stud[i7].fname); scanf("%d", &correct); *stud[i7].grad.gradesSpan=100*weight*(correct/denom); stud[i7].grad.gradesSpan++; } break; } } free(lname); free(user); free(pass); free(fname); free(bdays); free(addresses); free(wholeName); free(address); free(birthday); fclose(class); return 0; }