• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zadanie w C 'histogram' wskaźniki

Object Storage Arubacloud
0 głosów
234 wizyt
pytanie zadane 8 grudnia 2022 w C i C++ przez Pysa6 Nowicjusz (220 p.)

 

Mam za zadanie stworzyć tablice 'histogram', która na każdym indeksie będzie mieć taka wartość, ile razy wartość danego indeksu występuje w drugiej (podanej) tablicy. Mam kod, działa, ale nie o to chodzi w zadaniu. Powinna być wykorzystana ewentualnie tylko jedna pętla, i powinno się wykorzystać wskaźniki. Ktoś ma pomysł? Mój kod:

void hist(unsigned char x[], int r, unsigned int h[])
{
    for(int j=0; j<40; j++)
    {
       for(int i = 0; i<14; i++)
       {
           if(x[i]==j)
           {
               h[j]++;
           }
       }
    }
    
    for(int i=0; i<40; i++)
    {
        printf("%d ", h[i]);
    }
}

int main()
{
    unsigned char x[14] = {4, 2, 33, 29, 32, 11, 43, 1, 4, 10, 12, 12, 32, 4};
    unsigned int h[40]={0};
    hist(x, 14, h);

    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 8 grudnia 2022 przez TOWaD Mądrala (6,000 p.)
edycja 9 grudnia 2022 przez TOWaD

?

 void hist1(unsigned char x[], int r, unsigned int h[],usigned int rozmiar_tab_h)
{
     //  for(int i = 0; i<14; i++)if(x[i]<rozmiar_tab_h) h[x[i]]++;
       for(int i = 0; i<14; i++)if(x[i]<rozmiar_tab_h)(*(h +(x[i])))++;
    ......

Edit: rzeczywiście błędnie ifa zabrakło w c++ to mniejwięcej tak:

#include <iostream>

using namespace std;
void hist(unsigned int  x[], int r, unsigned int h[])
{
   unsigned int *begin=x;
   unsigned int *end=(x+r);
    for(begin=x;begin!=end; begin++)
    if(*begin<40) (*(h+*begin))++; // <-tego ifa 
   
  
}
void print (unsigned h[], int n){
for(int i=0; i<n; i++)cout<<h[i]<<",";
   cout<<endl;
    
}
 
int main()
{
    unsigned int x[14] = {4, 2, 33, 29, 32, 11, 43, 1, 4, 10, 12, 12, 32, 4};
    unsigned int h[40]={0};
    hist(x, 14, h);
    print(h, 40);
 
    return 0;
}

 

Podobne pytania

0 głosów
1 odpowiedź 209 wizyt
pytanie zadane 1 grudnia 2022 w C i C++ przez Pysa6 Nowicjusz (220 p.)
0 głosów
1 odpowiedź 271 wizyt
pytanie zadane 7 września 2022 w C i C++ przez benny13 Obywatel (1,150 p.)
0 głosów
1 odpowiedź 297 wizyt
pytanie zadane 12 stycznia 2022 w C i C++ przez xmigox Obywatel (1,090 p.)

92,655 zapytań

141,545 odpowiedzi

319,979 komentarzy

62,024 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...