Hi everyone, I've posted codes for C++ in the past but am now trying to learn c. I successfully converted the following program into C from c++. It was a pretty easy conversion, the only problem I had were with the warnings. I could not figure out (using only the book) why I kept receiving the warnings. The message runs successfully but I just wanted to understand the program a little bit better and see how I could change it to remove those warnings. All 8 warnings state

warning C4244: '=' : conversion from 'double ' to 'float ', possible loss of data

If you can steer me in the right direction I would greatly appreciate it..especially since I'm used to programming in C++ and C although is basically the same, confuses me every once in a while.

Thanks

Code:
    //

//This program will assist 
//in calculating the costs of 4 major vacation packages


#include<iostream.h>
#include <stdio.h>


//The data structures

struct Package1				  //Climbing package
{
	int Num;					  //Number in party 
	int Beginners;				  //Those needing instructions 
	int Advanced;				  //Those not needing instructions 
	int NeedEquip;				  //Those renting camping equipments 
	float BaseCharges;		      //Base charges 
	float Charges;				  //Total charges 
	float Instruction;		      //Cost of instruction 
	float Equipment;			  //Cost of equipment rental 
	float Discount;			      //Discount
	float Deposit;				  //Required deposit 
};

struct Package2				  //Scuba package 
{
	int Num;					  //Number in party 
	int Beginners;				  //Those needing instructions 
	int Advanced;				  //Those not needing instructions 
	float BaseCharges;		      //Base charges 
	float Charges;				  //Total charges 
	float Instruction;		      //Cost of instruction 
	float Discount;			      //Discount 
	float Deposit;				  //Required deposit
};

struct Package3				  //Sky Diving Package 
{
	int Num;					  //Number in party 
	int Lodge1;					  //Number at 1st lodging choice 
	int Lodge2;					  //Number at 2nd lodging choice 
	float BaseCharges;		      //Base charges 
	float Charges;				  //Total charges 
	float Discount;			      //Discount 
	float Lodging;				  //Cost of lodging 
	float Deposit;				  //Required deposit 
};

struct Package4				  //Spelunking Package 
{
	int Num;					  //Number in party 
	int NeedEquip;				  //Those renting camping equipments 
	float BaseCharges;		      //Base charges
	float Charges;				  //Total charges 
	float Equipment;			  //Cost of equipment rental 
	float Discount;			      //Discount 
	float Deposit;				  //Required deposit 
};

union Pack						  //Combines all four structs 
{
  struct Package1 Climb;
  struct Package2 Scuba;
  struct Package3 Sky;
  struct Package4 Spel;
};

struct Reservation
{
	int PackNum;				   //Indicates which package is stored 
    union Pack Packs;
};

//Constants for the charges 
const float ClimbRate = 350.0;			//Base rate - Devil's Courthouse 
const float ScubaRate = 1000.0;			//Base Rate - Bahamas 
const float SkyDiveRate = 400.0;		//Base Rate - Sky diving 
const float CaveRate = 700.0;			//Base Rate - Spelunking 
const float ClimbInstruct = 100.0;		//Climbing instructions 
const float ScubaInstruct = 100.0;		//Scuba instructions 
const float DailyCampRental = 40.0;		//Daily camping equip. rental 
const float DayLodge1 = 65.0;			//Lodging option (sky diving)
const float DayLodge2 = 120.0;			//Lodging option (sky diving)

//Function prototypes 
void Climbing(struct Reservation*);
void Scuba(struct Reservation*);
void SkyDive(struct Reservation*);
void Spelunk(struct Reservation*);
int Menu(void);
void DisplayInfo(const struct Reservation*);
void DisplayPack1(const struct Reservation*);
void DisplayPack2(const struct Reservation*);
void DisplayPack3(const struct Reservation*);
void DisplayPack4(const struct Reservation*);


//Main function 
main()
{
	int Selection;
	struct Reservation Group;
 do
	{
		Selection = Menu();
		switch (Selection)
		{
		case 1: Climbing(& Group);
				break;
		case 2: Scuba(& Group);
				break;
		case 3: SkyDive(& Group);
				break;
		case 4: Spelunk(& Group);
				break;
      case 5: printf("Exiting program.\n\n");  //(cout had been changed to printf for c conversion)
		}

		if (Selection <5)
        DisplayInfo(& Group);
	} while (Selection != 5);

	return 0;
}

//Definition of function Menu.
//Displays the main menu and asks the user to select an option.
//Returns an integer in the range 1 - 5. 

int Menu(void)
{
	int Choice;
	do
	{
      printf("\nHigh Adventure Travel Agency\n");
      printf("------------------------------\n");
      printf("1) Devil's Courthouse Adventure Weekend\n");
      printf("2) Scuba Bahama\n");
      printf("3) Sky Dive Colorado\n");
      printf("4) Barron Cliff Spelunk\n");
      printf("5) Exit program\n\n");
      printf("Enter 1, 2, 3, 4, or 5: ");
		scanf("%d", &Choice);                   //(cin has been changed to scanf for c conversion)

		if (Choice < 1 || Choice > 5)           //If choice is less than 1 or greater than 5
      printf("Invalid Selection\n");            //Cout/printf "Invalid Selection

	} while (Choice < 1 || Choice > 5);          //?????????????

	return Choice;
}

//Definition of Climbing function.
// Uses a Reservation reference parameter to hold the vacation
// package information. This function calculates the charges for
// the Devil's Courthouse Adventure Weekend package.  

void Climbing(struct Reservation *Group)
{
   (*Group).PackNum = 1;

   printf("\nDevil's Courthouse Adventure Weekend\n");
	printf("--------------------------------------\n");
	printf("How many will be going who need an instructor? ");
	scanf("%d", &(*Group).Packs.Climb.Beginners);
	printf("How many advanced climbers will be going? ");
	scanf("%d", &(*Group).Packs.Climb.Advanced);

   (*Group).Packs.Climb.Num =(*Group).Packs.Climb.Beginners + (*Group).Packs.Climb.Advanced;

	printf("How many will be rent camping equipment? ");
   scanf("%d", &(*Group).Packs.Climb.NeedEquip);

	//Calculate base charges 
	 (*Group).Packs.Climb.BaseCharges = (*Group).Packs.Climb.Num * ClimbRate;
	 (*Group).Packs.Climb.Charges = (*Group).Packs.Climb.BaseCharges;

	//Calculate 10% discount for 5 or more 
	if ((*Group).Packs.Climb.Num > 4)
	{
		 (*Group).Packs.Climb.Discount = (*Group).Packs.Climb.Charges * .10;
		 (*Group).Packs.Climb.Charges -= (*Group).Packs.Climb.Discount;
	}
	else
		 (*Group).Packs.Climb.Discount = 0;

	//Add cost of instruction 
	 (*Group).Packs.Climb.Instruction = (*Group).Packs.Climb.Beginners * ClimbInstruct;
	 (*Group).Packs.Climb.Charges += (*Group).Packs.Climb.Instruction;

	//Add cost of camping equipment rental 
	 (*Group).Packs.Climb.Equipment = (*Group).Packs.Climb.NeedEquip * DailyCampRental * 4;
	 (*Group).Packs.Climb.Charges += (*Group).Packs.Climb.Equipment;

	//Calculate required deposit 
	 (*Group).Packs.Climb.Deposit = (*Group).Packs.Climb.Charges / 2.0;
}

//Definition of Scuba function.
//Uses a Reservation reference parameter to hold
//the vacation package information.
//This function calculates the charges for the Scuba Bahama package. 

void Scuba(struct Reservation *Group)
{
	(*Group).PackNum = 2;

   printf("\nScuba Bahama\n");
	printf("--------------\n");
	printf("How many will be going who need an instructor? ");
	scanf("%d", &(*Group).Packs.Scuba.Beginners);
	printf("How many advanced scuba divers will be going? ");
	scanf("%d", &(*Group).Packs.Scuba.Advanced);

	(*Group).Packs.Scuba.Num = (*Group).Packs.Scuba.Beginners + (*Group).Packs.Scuba.Advanced;

	//Calculate base charges 
	(*Group).Packs.Scuba.BaseCharges = (*Group).Packs.Scuba.Num * ScubaRate;
	(*Group).Packs.Scuba.Charges = (*Group).Packs.Scuba.BaseCharges;

	//Calculate 10% discount for 5 or more 
	if ((*Group).Packs.Scuba.Num > 4)
	{
		(*Group).Packs.Scuba.Discount = (*Group).Packs.Scuba.Charges * .10;
		(*Group).Packs.Scuba.Charges -= (*Group).Packs.Scuba.Discount;
	}
	else
		(*Group).Packs.Scuba.Discount = 0;

	//Add cost of instruction 
	(*Group).Packs.Scuba.Instruction = (*Group).Packs.Scuba.Beginners * ScubaInstruct;
	(*Group).Packs.Scuba.Charges += (*Group).Packs.Scuba.Instruction;

	//Calculate required deposit 
	(*Group).Packs.Scuba.Deposit = (*Group).Packs.Scuba.Charges / 2.0;
}

//Definition of Sky Dive function.
//Uses a Reservation reference parameter to hold
//the vacation package information.
//This function calculates the charges for the Sky Dive Colorado package. */

void SkyDive(struct Reservation *Group)
{
	(*Group).PackNum = 3;

   printf("\nSky Dive Colorado\n");
	printf("-------------------\n");
	printf("How many will be going? ");
	scanf("%d", &(*Group).Packs.Sky.Num);

	//Calculate base charges 
	(*Group).Packs.Sky.BaseCharges = (*Group).Packs.Sky.Num * SkyDiveRate;
	(*Group).Packs.Sky.Charges = (*Group).Packs.Sky.BaseCharges;

	//Calculate 10% discount for 5 or more 
	if ((*Group).Packs.Sky.Num > 4)
	{
		(*Group).Packs.Sky.Discount = (*Group).Packs.Sky.Charges * .10;
		(*Group).Packs.Sky.Charges -= (*Group).Packs.Sky.Discount;
	}
	else
		(*Group).Packs.Sky.Discount = 0;

	//Calculate lodging costs 
   printf("How many will stay at Wilderness Lodge? ");
	scanf("%d", &(*Group).Packs.Sky.Lodge1);
	printf("How many will stay at Luxury Inn? ");
	scanf("%d", &(*Group).Packs.Sky.Lodge2);

   (*Group).Packs.Sky.Lodging = ((*Group).Packs.Sky.Lodge1 * DayLodge1) + ((*Group).Packs.Sky.Lodge2 * DayLodge2);

	//Calculate required deposit 
	(*Group).Packs.Sky.Deposit = (*Group).Packs.Sky.Charges / 2.0;
}

//Definition of Spelunk function.
//Uses a Reservation reference parameter to hold
//the vacation package information.
//This function calculates the charges for the Barron Cliff Spelunk package. 

void Spelunk(struct Reservation *Group)
{
	(*Group).PackNum = 4;

   printf("\nBarron Cliff Spelunk Weekend\n");
	printf("----------------------\n");
	printf("How many will be going? ");
	scanf("%d", &(*Group).Packs.Spel.Num);
	printf("How many will rent camping equipment? ");
	scanf("%d", &(*Group).Packs.Spel.NeedEquip);

	//Calculate base charges 
	(*Group).Packs.Spel.BaseCharges = (*Group).Packs.Spel.Num * CaveRate;
	(*Group).Packs.Spel.Charges = (*Group).Packs.Spel.BaseCharges;

	//Calculate 10% discount for 5 or more */
	if ((*Group).Packs.Spel.Num > 4)
	{
		(*Group).Packs.Spel.Discount = (*Group).Packs.Spel.Charges * .10;
		(*Group).Packs.Spel.Charges -= (*Group).Packs.Spel.Discount;
	}
	else
		(*Group).Packs.Spel.Discount = 0;

	//Add cost of camping equipment rental */
	(*Group).Packs.Spel.Equipment = (*Group).Packs.Spel.NeedEquip * DailyCampRental * 4;
	(*Group).Packs.Spel.Charges += (*Group).Packs.Spel.Equipment;

	//Calculate required deposit 
	(*Group).Packs.Spel.Deposit = (*Group).Packs.Spel.Charges / 2.0;
}

//Definition of function DisplayInfo.
//Uses a constant Reservation reference parameter to hold the vacation package information.
//This function looks in the Group.Packnum member to determine which
//function to call to display the vacation package information.

void DisplayInfo(const struct  Reservation *Group)
{
	switch ((*Group).PackNum)
	{
		case 1: DisplayPack1(& (*Group));
				break;
		case 2: DisplayPack2(& (*Group));
				break;
		case 3: DisplayPack3(& (*Group));
				break;
		case 4: DisplayPack4(& (*Group));
				break;
   default: printf("ERROR: Invalid package number.\n");
	}
}

//Definition of function DisplayPack1.
//Uses a constant Reservation reference parameter to hold the vacation package information.
//This function displays the information stored for vacation package 1.

void DisplayPack1(const struct Reservation *Group)
{
   printf("Number in party: %d\n", (*Group).Packs.Climb.Num);
	printf("Base charges: $%.2f\n", (*Group).Packs.Climb.BaseCharges);
	printf("Instruction Cost: $%.2f\n", (*Group).Packs.Climb.Instruction);
	printf("Equipment Rental: $%.2f\n", (*Group).Packs.Climb.Equipment);
	printf("Discount: $%.2f\n", (*Group).Packs.Climb.Discount);
	printf("Total Charges: $%.2f\n", (*Group).Packs.Climb.Charges);
	printf("Required Deposit: $%.2f\n", (*Group).Packs.Climb.Deposit);
}

//Definition of function DisplayPack2.
//Uses a constant Reservation reference parameter to hold the 
//vacation package information.This function displays the information 
//stored for vacation package 2. 

void DisplayPack2(const struct Reservation *Group)
{
   printf("Number in party: %d\n", (*Group).Packs.Scuba.Num);
	printf("Base charges: $%.2f\n", (*Group).Packs.Scuba.BaseCharges);
	printf("Instruction Cost: $%.2f\n", (*Group).Packs.Scuba.Instruction);
	printf("Discount: $%.2f\n", (*Group).Packs.Scuba.Discount);
	printf("Total Charges: $%.2f\n", (*Group).Packs.Scuba.Charges);
	printf("Required Deposit: $%.2f\n", (*Group).Packs.Scuba.Deposit);
}

//Definition of function DisplayPack3.
//Uses a constant Reservation reference parameter to hold the 
//vacation package information.This function displays the information 
//stored for vacation package 3.

void DisplayPack3(const struct Reservation *Group)
{
   printf("Number in party: %d\n", (*Group).Packs.Sky.Num);
	printf("Base charges: $%.2f\n", (*Group).Packs.Sky.BaseCharges);
	printf("Lodging: $%.2f\n", (*Group).Packs.Sky.Lodging);
	printf("Discount: $%.2f\n", (*Group).Packs.Sky.Discount);
	printf("Total Charges: $%.2f\n", (*Group).Packs.Sky.Charges);
	printf("Required Deposit: $%.2f\n", (*Group).Packs.Sky.Deposit);
}

//Definition of function DisplayPack4.
//Uses a constant Reservation reference parameter to hold the 
//vacation package information.This function displays the information 
//stored for vacation package 4. 

void DisplayPack4(const struct Reservation *Group)
{
   printf("Number in party: %d\n", (*Group).Packs.Spel.Num);
	printf("Base charges: $%.2f\n", (*Group).Packs.Spel.BaseCharges);
	printf("Equipment Rental: $%.2f\n", (*Group).Packs.Spel.Equipment);
	printf("Discount: $%.2f\n", (*Group).Packs.Spel.Discount);
	printf("Total Charges: $%.2f\n", (*Group).Packs.Spel.Charges);
	printf("Required Deposit: $%.2f\n", (*Group).Packs.Spel.Deposit);
}