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);
 }
Example #2
0
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;
}