All pastes #24086 Raw Edit

Anonymous

public text v1 · immutable
#24086 ·published 2005-09-28 03:36 UTC
rendered paste body
#! bin/sh

BEGIN{
grade_type_count=1	#counter for !lines
#type_arr[]
#max_val_arr[]
#scale_arr[]
#quant_arr[]
#name_arr[]
header="!"

number_of_students=1
#student_names_arr[]
#student_avg[]

#error_grade_type[]
#error_grade_val[]
#error_num_of_grades[]
error=0
}

#line by line
{

if($1 == header)
{
	print "Step 1 start"
	type_arr[grade_type_count]=$2		
	max_val_arr[grade_type_count]=$3
	scale_arr[grade_type_count]=$4
	quant_arr[grade_type_count]=$5
	name_arr[grade_type_count]=$6
		
		grade_type_count++
	print "Step 1 complete"
}

else
{
	
	print "Step 2"
	print NF
	
	#for(i=1; i <= NF; i++)

	i=1
	while(i <= NF)
	{
		print "I should be printed twice at least"
		if(i==1)
		{
			student_names_arr[number_of_students]=$i
			$name=$i
			print $name
			i++
			print i
		}
		
		
		else
		{
			print "Step 2.4"
			j=0
			quantity=1
			num_test_types=grade_type_count
			
			while($i != type_arr[j] && j<= num_test_types)
			{
				j++
			}

			print i, " is the field being worked on"
			
			if($i!= type_arr[j])
			{
				printf "error:  non-matching test type found."
				error_grade_type[i]=1
				error=1
			}
			else
			{
				$test_type=$i
					i++
				if($i > $max_val_arr[j])
				{
					printf "error:  out of range grade value"
					error_grade_val[i]=1
					error=1
				}
				else
				{
					for(m=0; type_arr[m] != $i; i++) 
					{
						$name[num_test_types]+=$i
					}	
				}
			}
		}
		
		print i
	}#end of for loop

	print "Step 2 complete"
}#end of else statement
}#end of line by line

END {
#avg_test_scores_arr[]
format = "%-10 %s\n"

printf format, "Name", "Average", "Grade"		#needs cool spacy things
printf format, "----", "-------", "-----"
	for(n=0; n < number_of_students; n++)
	{
		name=""
		name=student_names_arr[n];
		avg_raw=0
		real_avg=0
		p=0
		letter_grade=""
		
		if(0==error_grade_type[n] && 0==error_grade_val)
		{
			for(p; p<number_of_students; p++)		#redesign
			{
				temp_raw=$name[p]
				avg_raw+=temp_raw*scale_arr[p]
				
			}

			real_avg=avg_raw/total_num_of_grades
			if(real_avg>=95)
				letter_grade="A+"
			else if(real_avg>=92)
				letter_grade="A"
			else if(real_avg>=90)
				letter_grade="A-"
			else if(real_avg>=88)
				letter_grade="B+"
			else if(real_avg>=85)
				letter_grade="B"
			else if(real_avg>=80)
				letter_grade="B-"
			else if(real_avg>=78)
				letter_grade="C+"
			else if(real_avg>=75)
				letter_grade="C"
			else if(real_avg>=70)
				letter_grade="C-"
			else if(real_avg>=60)
				letter_grade="D"
			else
				letter_grade="F"
			printf format, name, real_avg, letter_grade
		}
		
		else
		{
			if(1==error_grade_type[n])
				printf format, name, "** Unknown Grade Type **"
			else
				printf format, name, "** Value greater than Maximun **"
		}		
	}
	
	for(r=0; r<=grade_type_count; r++)
	{
		for(s=1; s<=number_of_students; s++)
		{
			temp_name=student_names_arr[s]
			avg_test_scores_arr[r]+=$temp_name[r]
		}

		avg_test_score_arr[r]=avg_test_score_arr[r] / (number_of_students*quant[r])
	}
	
printf "\n"
printf "Number of Students = " number_of_students		#check logic for variable numofstudents

if(0==error)
{	
	for(t=1; t<=grade_type_count; t++)		#last for loop!!
	{
		printf "Avg type_arr[t] Score = avg_test_scores_arr[t]"
	}

	overall_score=0
	for(u=1; u<=grade_type_count; u++)
	{
		overall_score=+avg_test_scores_arr[u]
	}
		overall_score= overall_score/(grade_type_count+1)
	printf "Avg Overall Score = overall_score"
}
else
{
	printf "CLASS AVERAGES NOT COMPUTED BECAUSE OF ERRORS"
}	

}#end of END statement