// CS227 - Intro to Programming // Section G1 // Homework assignment #11 // http://www.cs.iastate.edu/~cs227/Assign/hw11/hw11.html // // Author: // Kevin Godby // // Play around with anachronistic C-strings #include "thing.h" #include using namespace std; void show (thing T) { // POST: the thing displayed (in any readable format) // output cursor at start of new line cout << "W: [" << T.W << "] Nums: "; cout << T.Nums[0]; for (int i = 1; i < T.nsz; i++) { cout << ", " << T.Nums[i]; } cout << endl; } void mix (thing& T, const char S[]) { // TODO: Test maximums -- i.e., try to break me. // TODO: Optimize unsigned int Tpos = 0, Spos = 0; char newString[81]; int i = 0; size_t size = sizeof (S) / sizeof (S[0]); cerr << "DEBUG: S = '" << S << "'" << endl; cerr << "DEBUG: sizeof(S) = " << size << endl; while (Tpos < sizeof(T.W) && Spos < sizeof(S)) { newString[i] = T.W[Tpos]; Tpos++; newString[++i] = S[Spos]; Spos++; i++; } // Exhausted one or both, append remainder while (Tpos < sizeof(T.W)) { newString[i] = T.W[Tpos]; Tpos++; i++; } while (Spos < sizeof(S)) { newString[i] = S[Spos]; Spos++; i++; } int max = sizeof(newString); if (max > 40) max = 40; for (i = 0; i <= max; i++) { T.W[i] = newString[i]; } T.W[i+1] = '\0'; } void addNums (thing& T, int K[], int ksz) { // PRE: T.nsz set to size of T.Nums; ksz size of K // POST: K added to end of Nums, up to 30 } thing getCombined (thing T1, thing T2) { // PRE: T1, T2 set-up properly // POST: return value has T1+T2 (added to end) truncated as needed }