Since this thread is in 'Gen 3', I will personally discount any details relating to any Generation past 4. No disrespect.
Gyarados is the first one to analyze, purely because it's older than Sharpedo, so he won the toss. Before I begin, I'll draw attention to Magikarp, which is heavily underrated. On the Magikarp Issue, you either have to; A) Be neutral and raise whoever you want. B) Or acknowledge Magikarp's usefulness and go through the trouble of leveling it. To me, Gyarados is one of the most powerful out there, and I consider it a Legendary Level Pokemon. (As close to Legendary as you can get without being one.) Dragon Rage was (lol) all the rage back in the day. (/lol) If you don't have a Water Move for Gyarados, Dragon Rage would be an effective slayer of Rocks and Steels. Although I prefer attack moves, Rain Dance has strategic value, especially with Lightnings in reserve (or double battles).
I Rate Gyarados 9.5/10, simply because its only weakness is lightning.
Sharpedo, I can only describe in very few words. I'm a fan, it has fewer weaknesses than Gyarados, rating a full-blown 10/10. The Rough Skin ability more than makes up for the inability to survive Fighting Moves, I usually use Lightning or Grass Moves against one. (Remembering the ruckus I caused against Team Aqua.) It's fierce, I love it's image, it's a favourite.
If it comes down to which one I prefer, it would be both. Tie game. Why can't there be more than 1 winner?