Zliczanie tych samych wartości

0
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int tab[10]={1,1,2,2,2,3,3,3,3,3};
    int zlicz = 0;
    int tab2[10]={0};
    printf("Liczby w tablicy: \n");

    for(int i=0; i<10; i++){

        printf("%d ", tab[i]);

         tab2[i] = tab[i];

        for(int j=0; j<10; j++)
            if(tab2[j]==tab[j])
                    zlicz= zlicz+1;
    }
    printf("\n\nIle: %d", zlicz);

}

W czym tkwi problem, że nie zlicza

0

int tab2[10]={0}; Tu wychodzisz poza indeks tablicy. Tablice są numerowane od zera, a więc w Twoim przypadku powinno być int tab2[9]={0};

0

nie pomogło :/

0

soa #1. Jakiś błąd, nie kompiluje się czy co?

0

1. Jeśli chcesz zliczyć elementy, to najpierw przekopiowujesz, potem zliczasz. Czyli musisz najpierw wykonać pętlę przekopiowującą, potem zliczającą:

int main()
{
    int tab[10]={1,1,2,2,2,3,3,3,3,3};
    int zlicz = 0;
    int tab2[10]={0};
    printf("Liczby w tablicy: \n");

    for(int i=0; i<10; i++){
        printf("%d ", tab[i]);
         tab2[i] = tab[i];
    }

    for(int j=0; j<10; j++)
        if(tab2[j]==tab[j])
            zlicz= zlicz+1;

    printf("\n\nIle: %d", zlicz);
}

2. Nie rozumiem zupełnie co chciałeś w ogóle osiągnąć? Co masz na myśli mówiąc zliczanie elementów jednakowych?
Dla przykładu, jeśli będziesz liczył elementy jednakowe w obu tablicach (oryginalnej i przekopiowanej: tab i tab2) to siłą rzeczy zawsze wyjdzie Ci 10...
Jeśli będziesz liczył elementy sobie równe, to ile ma być tych elementów dla 2? ` 3, czy 2?

Doprecyzuj pytanie, bo w tej chwili rzuciłeś ludziom kawałek kodu, nie powiedziałeś nic poza Ej, nie działa. i tyle.
Jak przychodzisz do mechanika, to mówisz że coś stuka, skrzypi w prawym kole, czy silnik terkocze na wolnych czy też wysiadasz, rzucasz kluczyki mechanikowi, stwierdzasz lakonicznie, że Nie działa i odchodzisz?

0

Ma zliczać elementy i wypisać ile i jakich jest najwięcej.
zliczając wypisuje wynik 54.

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