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

Anagramy cyfrowe

Object Storage Arubacloud
0 głosów
1,655 wizyt
pytanie zadane 14 marca 2018 w C i C++ przez Nic_Nie_Wiem Nowicjusz (120 p.)
Witam, mam problem ze zrozumieniem kodu zadania maturalnego: http://itslo.vot.pl/matura/181-matura-2015-anagramy-cyfrowe?showall=&start=1 Chciałbym bardzo zrozumieć jak on działa i co robią konkretne linijki kodu.

3 odpowiedzi

0 głosów
odpowiedź 14 marca 2018 przez Dominik Kulis Użytkownik (720 p.)
Napisz konkretniej, której części kodu nie rozumiesz. Inaczej ciężko będzie CI pomóc.

Pozdrawiam
komentarz 14 marca 2018 przez Nic_Nie_Wiem Nowicjusz (120 p.)
Dziękuję za komentarz. Nie rozumiem od: map<int, int> anagramy; Jestem początkujący, ale zależy mi na zrozumieniu dokładnie tego kodu.
0 głosów
odpowiedź 15 marca 2018 przez Bondrusiek Maniak (61,370 p.)

Witam,

Chciałbym bardzo zrozumieć jak on działa i co robią konkretne linijki kodu.

Najprościej w takim przypadku stworzyć strumień wyjścia np. std::cout lub printf(), wtedy możesz przejrzeć "jak" działa kod i sprawdzić wartość interesujących Cie zmiennych. Np

#include <algorithm>
#include <fstream>
#include <iostream>
#include <map>

/**
 * zamiana dodatniej liczby calkowitej k na najwiekszy jej anagram cyfrowy
 */
int najwiekszy_anagram(int k){
    int cyfry[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    while (k != 0)
    {
        int cyfra = k % 10;
        cyfry[cyfra]++;
        k = k / 10;
        std::cout << "k : " << k << " cyfry[cyfra] : " << cyfry[cyfra] << std::endl;
    }
    int wynik = 0;
    for (int i = 9; i >= 0; i--)
        for (int j = 0; j < cyfry[i]; j++)
        {
            wynik = wynik * 10 + i;
            std::cout << "wynik " << wynik << std::endl;
        }
    std::cout << std::endl;
    return wynik;
}

std::map<int, int> anagramy;
int wiersze_z_anagramami;
int maksimum;

int main() {
    int u, v;
    std::ifstream liczba("anagramy.txt");
    while (liczba >> u >> v)
    {
        int anagram_u = najwiekszy_anagram(u);
        int anagram_v = najwiekszy_anagram(v);
        if (anagram_u == anagram_v)
            wiersze_z_anagramami++;
        anagramy[anagram_u]++;
        anagramy[anagram_v]++;
        maksimum = std::max(maksimum, anagramy[anagram_u]);
        maksimum = std::max(maksimum, anagramy[anagram_v]);
    }
    std::cout << "wiersze z anagramami: " << wiersze_z_anagramami <<
        std::endl;
    std::cout << "maksimum anagramow: " << maksimum << std::endl;
    return 0;
}

 

komentarz 16 marca 2018 przez Martix Nowicjusz (100 p.)
Czy ktoś mógłby mi wyjaśnić krok po kroku co robi każda pętla w tym kodzie powyżej, krok po kroku cały ten program. Będę bardzo wdzięczny. Muszę ogarnąć ten program przez weekend.
0 głosów
odpowiedź 16 marca 2018 przez Beginer Pasjonat (22,110 p.)
Przez weekend spoko napiszesz samodzielnie kod od początku. To nie jest trudne zadanie.

Zacznij od wczytywania liczb parami.

Podobne pytania

0 głosów
2 odpowiedzi 476 wizyt
pytanie zadane 3 września 2017 w SPOJ przez chucksqll Stary wyjadacz (12,930 p.)
0 głosów
2 odpowiedzi 620 wizyt
pytanie zadane 26 czerwca 2015 w Offtop przez Anonim Mądrala (6,000 p.)
0 głosów
3 odpowiedzi 1,775 wizyt
pytanie zadane 18 maja 2015 w C i C++ przez MrLoyt Nowicjusz (120 p.)

92,573 zapytań

141,423 odpowiedzi

319,648 komentarzy

61,959 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!

...