how do you make the top of a cylinder round and the bottom a hexagon
Start by creating a cylinder (Shift + a while in Object Mode). Expand its Add Cylinder popup in the bottom left of the 3D View to give it only 6 sides. Change the Cap Fill Type to Nothing.

Next go to Edit Mode and use Ctrl + r and then float your cursor near the center of a vertical edge to preview a single edge loop at the center. Left-click to commit to the one edge loop, and then right-click to cancel the tool.

Hold Shift and select the entire bottom-most edge loop and press s to scale it, dragging the mouse out until you have a decent sized base. Left-click to commit to the new shape.

While still in Edit Mode, press a to Select All, then right-click anywhere on the mesh and from the context menu that appears, choose Subdivide.

Immediately afterwards, hit Shift + r to repeat the Subdivide command several times. You want a mesh density sufficient to create the round spout.

Tab into Object Mode and create a new Cylinder. This cylinder should appear in the same space as the first one, unless you inadvertently moved the 3D cursor between creating the first cylinder and the second. It's important that the two are in the same space.
In the new cylinder's Add Cylinder pop up, to the bottom left of the 3D View, change its number of sides to something considerably higher than the current value of 6. I chose 128.

Select the original, wide-based mesh in Object Mode and tab into Edit Mode. Select an orthographic camera front view with Numpad 1. Press 1 to go into Vertex Selection mode, then press Ctrl + b for box select mode, and drag a box around only the vertices which will end up forming the round spout. Don't include any vertices from any part of the wide flat faces making up the base. Only the vertices making up the edge loops of the spout. You will probably need to go into Wireframe mode (z key to toggle it) in order to make the needed vertices easier to see.

Next, while still in Edit Mode, go to the Object Data tab (1) of the Properties Panel, make sure the Vertex Group section (2) is expanded, click the '+' icon (3) to create a new vertex group, then press the Assign button (4) to add the currently selected vertices to this vertex group.

Tab into Object Mode. Your original, wider-based cylinder should still be selected. Click on the Modifers tab in the Properties Panel and select Add Modifier. Choose Shrinkwrap from the list of available modifiers.

In the Shrinkwrap Modifier settings, choose your newer, smoother cylinder as the Target, and choose the vertex group you created for Vertex Group. Choosing a vertex group allows you to limit the effect of the shrinkwrap to only the vertices in that group, which is helpful for our situation.

While still in Object Mode, hide the smoother version of the cylinder by selecting it alone, and pressing h. If you find that the transition between the flat sides and the round sides is a bit weird, you may have to adjust some things. I had to scale the smooth version of the cylinder down slightly. I gave it a scale value of
0.934 along both the X and the Y axis, but left the Z axis unchanged.

Finally, put a Subdivision Surface modifier on the original mesh. A handy shortcut for this is to select the mesh, and then press Ctrl + 3, where &quot;3&quot; is the number of subdivision levels to choose. Choose a different number for a different subdivision level. Bear in mind that this shortcut only affects the viewport subdivision level, not the rendering one.

Hope this helps.