Changes

Jump to navigation Jump to search
4,150 bytes added ,  01:37, 17 May 2009
no edit summary
Line 79: Line 79:  
'''Creating Database:''' <br>
 
'''Creating Database:''' <br>
 
[[image:ScreenCreateDB.png]]
 
[[image:ScreenCreateDB.png]]
 +
 +
== Code ==
 +
 +
<pre>
 +
BEGIN{
 +
printf("%-11s%-8s%-11s%-8s%-11s%-8s%-11s%-8s%-11s\n", "Student", "Only +", "Contains", "Only -", "Contains -", "Only *", "Contains *", "Only /", "Contains /")
 +
}
 +
 +
{
 +
#*****Field Reference *************
 +
 +
#MAC=$1
 +
#NAME=$2
 +
#OPERATION=$3
 +
#SUCCESS=$4
 +
 +
#************************************
 +
 +
#Because in the end statement we will have to loop through one of the arrays, which will be localized according
 +
#to specific aritmetic operations (- + / *). We need to account for the fact that some students may not answer a
 +
#question with one of these operations, and if we looped through that particular operation, we would not represent
 +
#that student in any of the logic containted within that loop in the END{} statment. Therefore an associative array
 +
#which absolutely, accounts for any student, contained in the .dat, the CLASS[] array.
 +
CLASS[$2]
 +
 
 +
#any line that has division, but not necessarily just. 
 +
if ( match($3, /\//) )
 +
{
 +
#How many division problem student $2 encounters = divison[$2]
 +
division[$2]++
 +
 +
if ( $4 == "1" )
 +
{
 +
division_correct[$2]++
 +
}
 +
}
 +
 +
#any line with multiplication but not  neccearily just multiplication
 +
if ( match($3, /\*/) )
 +
{
 +
#How many multiplication problem student $2 encounters = multiplication[$2]
 +
multiplication[$2]++
 +
 +
if ( $4 == "1" )
 +
{
 +
multiplication_correct[$2]++
 +
}
 +
 +
}
 +
 +
#any line with addition but not necessarily just addition
 +
if ( match($3, /\+/) )
 +
{
 +
#How many addition problem student $2 encounters = addition[$2]
 +
addition[$2]++
 +
 +
if ( $4 == "1" )
 +
{
 +
addition_correct[$2]++
 +
}
 +
}
 +
 +
#contains subtractions, excludes negative numbers, as it only matches expressions with a "-" sandwiched b/w two digits
 +
if ( match($3, /[0-9]\-[0-9]/) ) 
 +
{
 +
#How many subtraction problem student $2 encounters = subtraction[$2]
 +
subtraction[$2]++
 +
 +
if ( $4 == "1" )
 +
{
 +
subtraction_correct[$2]++
 +
}
 +
}
 +
 +
 +
 +
# Matches operations with ONLY DIVISION
 +
if ( match($3, /\//) && !match($3, /[0-9]\-[0-9]/) && !match($3, /\+/) && !match($3, /\*/) )
 +
{
 +
 +
#How many ONLY division problem student $2 encounters = 0_divison[$2]
 +
o_division[$2]++
 +
 +
if ( $4 == "1" )
 +
{
 +
o_division_correct[$2]++
 +
}
 +
 +
 +
}
 +
 +
# Matches operations with ONLY SUBTRACTION
 +
if (  !match($3, /\//) && match($3, /[0-9]\-[0-9]/) && !match($3, /\+/) && !match($3, /\*/) )
 +
{
 +
#How many ONLY subtraction problem student $2 encounters = o_subtraction[$2]
 +
o_subtraction[$2]++
 +
 +
if ( $4 == "1" )
 +
{
 +
o_subtraction_correct[$2]++
 +
}
 +
 +
}
 +
 +
# Matches operations with ONLY ADDITION
 +
if (  !match($3, /\//) && !match($3, /[0-9]\-[0-9]/) && match($3, /\+/) && !match($3, /\*/) )
 +
{
 +
#How many ONLY Addition problem student $2 encounters = o_addition[$2]
 +
o_addition[$2]++
 +
 +
if ( $4 == "1" )
 +
{
 +
o_addition_correct[$2]++
 +
}
 +
 +
}
 +
 +
# Matches operations with ONLY MULTIPLICATION
 +
if (  !match($3, /\//) && !match($3, /[0-9]\-[0-9]/) && !match($3, /\+/) && match($3, /\*/) )
 +
{
 +
#How many ONLY MULTIPLICATION problem student $2 encounters = o_multiplication[$2]
 +
o_multiplication[$2]++
 +
 +
if ( $4 == "1" )
 +
{
 +
o_multiplication_correct[$2]++
 +
}
 +
 +
}
 +
 +
#How many problems an individual student faced: for classwide statistics we simply use the built-in var NR
 +
numproblems[$2]++
 +
 +
 +
if ( $4 == "1" )
 +
{correct[$2]++}
 +
 +
}#end of AWK_MAIN
 +
END{
 +
 +
#BEGIN printf header order: student, operation, success
 +
 +
#loops through all of the elements in the array CLASS[]
 +
#Here We will print out the students
 +
for (student in CLASS)
 +
{
 +
#need to address divide by 0 issue
 +
printf("%-11s%-8s%-11s%-8s%-11s%-8s%-11s%-8s%-11s\n", student, int(o_addition_correct[student]*100/o_addition[student]), int(addition_correct[student]*100/addition[student]), int(o_subtraction_correct[student]*100/o_addition[student]), int(subtraction_correct[student]*100/subtraction[student]), int(o_multiplication_correct[student]*100/o_multiplication[student]), int(multiplication_correct[student]*100/multiplication[student]), int(o_division_correct[student]*100/o_division[student]), int(division_correct[student]*100/division[student])) 
 +
 +
}
 +
 +
} #end of AWK_END
 +
 +
 +
</pre>
236

edits

Navigation menu