Zliczanie cyfr w tablicy w C

Odpowiedz Nowy wątek
2014-12-13 16:40
Jan Orzechowski
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?

Pozostało 580 znaków

2014-12-13 16:59
0

Tutaj jest błąd:

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

Zamiast a[i] powinno być samo i.

Pozostało 580 znaków

2014-12-13 19:58
Jan Orzechowski
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

Pozostało 580 znaków

2014-12-13 19:59
Jan Orzechowski
0

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

Pozostało 580 znaków

2014-12-14 03:08
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]);

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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