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> |