Zliczanie cyfr w tablicy w C

0

Mam taki program w C

 // zliczanie tablicy.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream"

int count(int size, int a[], int szuk)
{
	int x, wynik = 0;
	
	
	for (x = 0; x <= size - 1; x++)
	{
		if (a[x] == szuk)
			wynik++;
	}
	
	return wynik;
}
int _tmain(int argc, _TCHAR* argv[])
{
	int a[5] = { 1, 2, 3, 5, 2 };
	int i;
	int wynik=0;
	for (i = 0; i <= 127; i++)
	{
		count(5, a, i);
		printf("liczba %d razy %d\n", a[i], wynik);
	}
	return 0;
}

Z zamierzenia ten program ma liczyć ile razy dana liczba z przedziału [0, 127] wystąpiła w tablicy (rozmiaru N, tablica jest po prostu wpisana w kodzie programu) i wypisywać to na ekran. Ale niestety nie działa to prawidłowo. Po kompilacji wychodzi że np"liczba 90585656 wystąpiła 0 razy" itd. Co w tym można poprawić, żeby działało?

0

Tutaj jest błąd:

 printf("liczba %d razy %d\n", a[i], wynik);

Zamiast a[i] powinno być samo i.

0

Dzięki, ale teraz liczby pojawiają się poprawnie, co widać na załączonym obrazku ale ich ilość w tablicy już nie. Tzn. jak mogę pobrać wynik funkcji tak, żeby wyświetlił się on na ekranie?
187966c9b5.png

0

Udało mi się poprawić, problem rozwiązany, dziękuje wszystkim

0

Rozwiązałeś to zadanie w czasie O(RozmiarTablicy*ZakresDanych) zaś da się rozwiązać w czasie O(RozmiarTablicy+ZakresDanych)

    int a[5]={ 1, 2, 3, 5, 2 };
    int i,count[128]={0};
    for(i=0;i<sizeof(a)/sizeof(*a);++i) if((0<=a[i])&&(a[i]<=127)) ++count[a[i]];
    for(i=0;i<=127;++i) if(a[i])  printf("liczba %d razy %d\n",i,a[i]);

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