int main( int argc, char *argv[] ) { Stock stocks[STKS] = { Stock("NanoSmart", 12, 20.0), Stock("Boffo Objects", 200, 2.0), Stock("Monolithic Obelisks", 130, 3.25), Stock("Fleep Enterprises", 60, 6.5) }; std::cout << "Stock holdings:\n"; int st; for ( st = 0; st < STKS; st++ ) stocks[st].show(); const Stock * top = &stocks[0]; for ( st = 1; st < STKS; st++ ) top = &top->topval(stocks[st]); std::cout << "\nMost valuable holding:\n"; top->show(); return 0; }
int main() { // create an array of initialized objects Stock stocks[STKS] = { Stock("NanoSmart", 12, 20.0), Stock("Boffo Objects", 200, 2.0), Stock("Monolithic Obelisks", 130, 3.25), Stock("Fleep Enterprises", 60, 6.5) }; std::cout << "Stock holdings:\n"; int st; for (st = 0; st < STKS; st++) std::cout << stocks[st]; // set pointer to first element const Stock * top = &stocks[0]; for (st = 1; st < STKS; st++) top = &top->topval(stocks[st]); // now top points to the most valuable holding std::cout << "\nMost valuable holding:\n"; std::cout << *top; return 0; }
/* * Loads the Warehouse table * Loads Stock, District as Warehouses are created */ void LoadWare(void) { long w_id; char w_name[11]; char w_street_1[21]; char w_street_2[21]; char w_city[21]; char w_state[3]; char w_zip[10]; float w_tax; float w_ytd; DB *dbp; char *name = WAREHOUSE_INDEX_NAME; char *stock_name = STOCK_INDEX_NAME; char *district_name = DISTRICT_INDEX_NAME; int err; if(create_db(db_env, &dbp, DB_WH_PAGE_SIZE, 0) || open_db(dbp, name, 0)) return; if(create_db(db_env, &dbp_stock, DB_COMMON_PAGE_SIZE, 0) || open_db(dbp_stock, stock_name, 0)) goto done; if(create_db(db_env, &dbp_district, DB_DS_PAGE_SIZE, 0)) goto done; if((err = dbp_district->set_bt_compare(dbp_district, district_comparison_func))) { db_error("DB->set_bt_compare", err); goto done; } if(open_db(dbp_district, district_name, 0)) { goto done; } printf("Loading Warehouse \n"); for (w_id=1L; w_id<=count_ware; w_id++) { DBT key, data; WAREHOUSE_PRIMARY_KEY w_key; WAREHOUSE_PRIMARY_DATA w_data; memset(&w_key, 0, sizeof(WAREHOUSE_PRIMARY_KEY)); memset(&w_data, 0, sizeof(WAREHOUSE_PRIMARY_DATA)); /* Generate Warehouse Data */ MakeAlphaString( 6, 10, w_name); MakeAddress( w_street_1, w_street_2, w_city, w_state, w_zip ); w_tax=((float)random1(10L,20L))/100.0; w_ytd=3000000.00; w_key.W_ID = w_id; memcpy(&w_data.W_NAME, &w_name, 11); memcpy(&w_data.W_STREET_1, &w_street_1, 21); memcpy(&w_data.W_STREET_2, &w_street_2, 21); memcpy(&w_data.W_CITY, &w_city, 21); memcpy(&w_data.W_STATE, &w_state, 3); memcpy(&w_data.W_ZIP, &w_zip, 10); w_data.W_TAX = w_tax; w_data.W_YTD = w_ytd; /* Initialize the key */ memset(&key, 0, sizeof(key)); key.data = &w_key; key.size = sizeof(WAREHOUSE_PRIMARY_KEY); /* Initialize the data */ memset(&data, 0, sizeof(data)); data.data = &w_data; data.size = sizeof(WAREHOUSE_PRIMARY_DATA); if ( option_debug ) printf( "WID = %ld, Name= %16s, Tax = %5.2f\n", w_id, w_name, w_tax ); if((err=dbp->put(dbp, 0, &key, &data, 0))) { db_error("DB->put", err); goto done; } /** Make Rows associated with Warehouse **/ if(Stock(w_id) || District(w_id)) { goto done; } } done: if(dbp) dbp->close(dbp, 0); if(dbp_stock) dbp_stock->close(dbp_stock, 0); if(dbp_district) dbp_district->close(dbp_district, 0); }