Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
}
Ejemplo n.º 3
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);
}