Hej :)
Mam program, który ma wczytywać ciąg znaków i wypisać ten, który powtarza się najczęściej, tylko coś jest nie tak. Niezależnie od wprowadzonego ciągu znaków, wyświetla taki sam wynik. Dodam, że wyświetla znak, który nawet nie jest zawarty w tym ciągu. Mógłby ktoś na to rzucić okiem i podpowiedzieć co jest źle?
#include <stdio.h>
#include <stdlib.h>
/*Wczytuje ci¹g znaków i pisze znak, który powtarza siê najczêœciej (bez sortowania).*/
int main()
{
int i, n;
n=100;
char *tekst = (char* ) malloc(n * sizeof(char));
printf("Podaj ciag znakow: \n");
while( scanf("%c", &tekst[i]) == 1 )
{
if( tekst[i]=='\n' )
break;
++i;
}
int max, indeks;
int *tab = (int*) malloc(n * sizeof(int));
int najwiekszy_licznik, najczestszy_znak, licznik, j;
najwiekszy_licznik=0;
for(i=0; i<n; i++)
{
licznik=0;
for (j=0; j<n; j++)
{
if(tekst[i]==tekst[j])
{
licznik++;
if(licznik>najwiekszy_licznik)
{
najwiekszy_licznik=licznik;
najczestszy_znak=tekst[i];
}
}
}
}
printf("Najczesciej wystepujacy znak to '%c'. Wystepuje on '%d' razy.", najczestszy_znak, najwiekszy_licznik);
free(tekst);
free(tab);
return 0;
}