Here are the basic requirements:
You need to create a 10 x 10 playing field for each player to place their pieces and an additional 10 x 10 playing field to capture their shots at the opposing player.
Each player gets 1 Carrier (5 spaces), 1 Battleship (4 spaces), 1 Frigate (3 spaces), 1 Submarine ( 3 spaces) and 1 Minesweeper (2 spaces)
Each ship is to be placed on the board horizontally or vertically
Board - The board is 10 x 10 organized with A-J identifiers across the top, and 0 - 9 identifiers down the side
A B C D E F G H I J
0
1
2
3
4
5
6
7
8
9
Use appropriate symbols to layout the grids (check out the ASCII symbols), and use the notation CHAR-NUMBER (e.g A-2) to indicate where a shot is to be placed.
Players:
There are two players in this game
Each player gets their turn placing their pieces down on the board
After each player has placed their pieces they take turns "shooting" at the others board
If a player's shot hits an opposing player's ship (a spot on the board where a ship is located) then his marking board displays an X in that spot
If a player's shot misses and opposing player's ships, then a "-" is placed in that spot on his marking board
If a players ship is hit, his board should show what ship was hit and where
The board should be cleared between players so that each player only sees his ships status and his shots status.
VERY IMPORTANT:
Appropriate data structures (arrays) should be used to hold the information
Appropriate functions should be created to initialize the structures, display messages to the players, display the boards, determine if there is a hit or miss, update the datastructures etc. etc.
Be creative, see if you can use color to add to your console program, can you create a computer to play against? Can you make it smart?
I built this exact game in VB a few years back and have been meaning to convert it to C++. I know exactly what you're talking about and can get started right away.