int P[200][320];
ifstream file("dane.txt");
int main()
{
Nawet nie wiesz jak mnie to boli :(. Zmienne globalne to zło.
A teraz do rzeczy.
while (j < 319 && P[i][j] == P[i][j + 1])
Albo ja czegoś nie rozumiem w treści, albo ten dobry wynik to mega przypadek.
Po pierwsze tak jak piszesz - Twój program sprawdza tylko początki wierszy. Jeśli ciąg będzie w środku to do niego nie dojdziesz. A po drugie Twój program sprawdza wiersze, a miał kolumny. Musisz więc przeiterować po kolumnach. Czyli w takiej kolejności:
P[0][0]
P[1][0]
P[2][0]
...
P[199][0]
P[0][1]
P[1][1]
...
Problem z szukaniem rozwiąż zmienną obecnaWartość. Przed każdym obiegiem pętli wewnętrznej przypisz jej nieosiągnalną wartość np -1. W pętli wewnętrznej jeśli P[i][j] równe obecnej wartosci to licznikPowtórzen++, jesli nie to sprawdzasz czy pobliśmy dotychczasowy rekord i jeśli tak to go zapisujemy a potem do licznika powtórzen przypisujemy 1 i podmieniamy obecnaWartosc na nową.
Jak sobie nie poradzisz to pisz w komentarzach, bo sam nie wiem czy czytelnie to wytłumaczyłem, a tak prostego gotowca też nie chce dawać. Tym bardziej, że mi nie wolno, bo tak mówi regulamin :P