Jak koledzy wspomnieli, jest taka strona z wieloma zadaniami o różnym stopniu trudności do rozwiązania, czyli SPOJ
http://pl.spoj.com Ja osobiście SPOJ-a prawie w ogóle nie użyłem, bo nie lubię zadań typu długi wstęp, a następnie rozwiązanie jakiegoś suchego problemu. Jak jeszcze Patrycjerz wspomniał, najlepiej rozwijać się poprzez wymyślanie i spełnianie własnych projektów. Nie dość, że nauczysz się wielu rzeczy, to jeszcze będziesz miał z tego większą frajdę niż za zrobienie zadania ze SPOJ-a, a do tego skoro pomysł jest twój, to na pewno powinien ci się spodobać twój własny program ;) Będziesz go ulepszał aż do twojego ideału, a w miarę poznawania nowych rzeczy z C++, będziesz dodawał coraz to nowsze funkcje. Zrób sobie jakiś programik kodujący zdania z pliku (bardzo prosty programik (zależy jakiego kodowania użyjesz), a jak cieszy :)), może symulator rzucania monety 100 razy, a może coś pozakonsolowego, jakąś grę może ;)
Pozdrawiam i życzę miłego ćwiczenia!