Szukanie wartości w tablicy dwuwymiarowej

0

Chcę napisać który pobiera od użytkownika tablicę o wymiarze 15x15, a na wyjściu wypisze tablice 15x15 gdzie w miejsca liczb z poprzedniej wpisze ile razy wystąpiły. Mój program nie działa za dobrze testowałem go na mniejszych tablicach bo na 15x15 wcale nie działa, a tak pokazuje złe wartości.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
   int tab[14][14] = {}, i, j,k,h,f;
   for (i = 0; i <= 14; i++)
   {
   for (j = 0; j <= 14; j++)
   {
   scanf("%d",&tab[i][j]);
   }
   }
   for(h=0;h<=14;h++)
   {
   for(k=0;k<=14;k++)
   {f=1;
   for (i = 0; i <= 14; i++)
   {
   for (j = 0; j <= 14; j++)
   {
   if(tab[k][h]==tab[i][j])
   f++;
   tab[k][h]=f;
   }
   }
   }
   }
   for (i = 0; i <= 14; i++)
   {
   printf("\n\t");
   for (j = 0; j <= 14; j++)
   {
   printf("%d",tab[i][j]);
   }
   }
   return 0;
}
1

Przede wszystkim rób wcięcia, zobacz jak czytelniejszy jest poniższy kod:

int main(void)
{
	int tab[14][14] = {}, i, j, k, h, f;

	for (i = 0; i <= 14; i++)
	{
		for (j = 0; j <= 14; j++)
		{
			scanf("%d", &tab[i][j]);
		}
	}

	for (h = 0; h <= 14; h++)
	{
		for (k = 0; k <= 14; k++)
		{
			f = 1;
			for (i = 0; i <= 14; i++)
			{
				for (j = 0; j <= 14; j++)
				{
					if (tab[k][h] == tab[i][j])
						f++;
					tab[k][h] = f;
				}
			}
		}
	}
	for (i = 0; i <= 14; i++)
	{
		printf("\n\t");
		for (j = 0; j <= 14; j++)
		{
			printf("%d", tab[i][j]);
		}
	}
	return 0;
}

Jeżeli masz tablicę np.

int tab[5];

To możesz mieć w niej 5 elementów, gdzie pierwszy element to indeks 0, drugi 1, trzeci 2 itd. Więc w pętlach warunek musi być

for (i = 0; i < [rozmiar]; i++) { ... }
// a nie:
for(i = 0; i <= [rozmiar]; i++) { ... }

Mógłbyś również podać przykład z wejściem i wyjściem (nawet dla 3x3 lub 4x4)? Niezbyt rozumiem jak ma to liczenie wystąpień działać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1