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

Porównywanie elementów dwuwymiarowej tablicy z jednowymiarową tablicą

Object Storage Arubacloud
+1 głos
147 wizyt
pytanie zadane 16 marca 2021 w C i C++ przez Fluxik Nowicjusz (240 p.)

Mam tablice dwuwymiarową gdzie ilość wierszy jest podawana przez użytkownika natomiast ilość kolumn to stałe 6. Oraz sześcioelementową tablice wypełnianą liczbami losowymi. Chcę stworzyć funkcję, która wyliczy ile jest elementów powtarzających się w tych tablicach osobno dla każdego wiersza tablicy dwuwymiarowej.

void porownywanie(int tablicz[][6], int wylosowane[6], const int lliczbakuponow)
{
    int wynik=0, p=0;
    for(int i=0;i<lkuponow;i++)
    {
p=wylosowane[i];
        for (int j=0;j<6;j++)
        {
            if(tablicz[i][j]==p)
            {
                wynik++;
            }

        }
    }
    cout<<endl;
    cout<< wynik;
}

Cały program to gra w totolotka tylko z utrudnieniem, że użytkownik może wypełnić dowolną ilość kuponów. A efektem końcowym ma być liczba przedstawiająca ile razy udało mu się trafić. Tylko, że liczba ta ma być oddzielna dla każdego kuponu .

1 odpowiedź

+2 głosów
odpowiedź 17 marca 2021 przez TOM_CPP Pasjonat (22,640 p.)

Jeżeli nie musisz, to nie używaj tablic w stylu C++98 z poprzedniego tysiąclecia. Do tego celu można wykorzystać std::vector<int>. Zobacz przykład:

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

using table2D = vector<vector<int>>;
using table1D = vector<int>;

auto check_hits( const table2D& coupons , const table1D& draws )
{
    table1D result;

    for( const auto& coupon : coupons )
    {
        int finds {0};
        for( const auto& number : coupon )
        {
            if( find( cbegin(draws) , cend(draws) , number ) != cend(draws) ) ++finds;
        }
        result.push_back(finds);
    }

    return result;
}

int main()
{
    table2D coupons = {
                        {  4 ,  7 ,  4 , 25 ,  3 , 12 } ,
                        { 21 ,  5 , 24 , 15 ,  3 , 12 } ,
                        { 1  ,  2 ,  3 ,  4 ,  5 ,  6 } ,
                        { 31 , 21 ,  3 ,  4 ,  5 ,  6 } ,
                        { 1  ,  7 ,  2 , 12 , 13 , 31 }
                      };

    table1D draws = { 1 , 7 , 2 , 12 , 13 , 14 };

    for( const auto& match : check_hits( coupons , draws ) )
    {
        cout << match << endl;
    }
}

 

Podobne pytania

0 głosów
1 odpowiedź 1,279 wizyt
0 głosów
1 odpowiedź 279 wizyt
pytanie zadane 8 grudnia 2020 w C i C++ przez Antytalent Początkujący (470 p.)

92,632 zapytań

141,500 odpowiedzi

319,879 komentarzy

62,013 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!

...