• 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

Cloud VPS
0 głosów
416 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,480 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ź 279 wizyt
pytanie zadane 1 grudnia 2022 w C i C++ przez Pysa6 Nowicjusz (220 p.)
0 głosów
1 odpowiedź 400 wizyt
pytanie zadane 7 września 2022 w C i C++ przez benny13 Obywatel (1,150 p.)
0 głosów
1 odpowiedź 400 wizyt
pytanie zadane 12 stycznia 2022 w C i C++ przez xmigox Obywatel (1,090 p.)

93,456 zapytań

142,451 odpowiedzi

322,721 komentarzy

62,837 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

Kursy INF.02 i INF.03
...