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

Nie umiem napisać fragmentu kodu

Object Storage Arubacloud
+1 głos
378 wizyt
pytanie zadane 6 stycznia 2022 w C i C++ przez BListwan Nowicjusz (150 p.)
edycja 6 stycznia 2022 przez BListwan
Potrzebuję napisać pętlę w kodzie, której wynikiem będzie wyświetlenie liczb złożonych najwyżej z dwóch różnych cyfr, jednak nie wiem nawet od czego w tym temacie trzeba zacząć

Trudnością jest to, że zakres liczb jest od 0-1000
komentarz 6 stycznia 2022 przez VBService Ekspert (253,340 p.)

najwyżej z dwóch różnych cyfr

rozumiem, że odpadają liczby

11, 22, 33, 44, 55, 66, 77, 88, 99


ale czy ...

12-21, 13-31, 14-41, 15-51, 16-61, 17-71, 18-81, 19-91
23-32, 24-42, 25-52, 26-62, 27-72, 28-82, 29-92
34-43, 35-53, 36-63, 37-73, 38-83, 39-93
45-54, 46-64, 47-74, 48-84, 49-94
56-65, 57-75, 58-85, 59-95
67-76, 68-86, 69-96
78-87, 79-97
89-98

komentarz 6 stycznia 2022 przez BListwan Nowicjusz (150 p.)
92 jak i 29 składają się z dwóch różnych cyfr, więc mogą być
komentarz 6 stycznia 2022 przez VBService Ekspert (253,340 p.)
Liczba 29 i 92 składa się z cyfr 2 i 9 więc chyba jednak są takie same, chyba że chodzi o miejsce cyfry w zapisie liczby.
komentarz 6 stycznia 2022 przez BListwan Nowicjusz (150 p.)
Program losuje liczby ale w efekcie ma wykazać, które są złożone najwyższej z dwóch różnych cyfr
komentarz 6 stycznia 2022 przez VBService Ekspert (253,340 p.)

Co w przypadku gdy przedział sięga od 0-1000?

Liczby mają być losowane z przedziału od 0 -1000, ile ma być tych liczb losowanych?

komentarz 6 stycznia 2022 przez BListwan Nowicjusz (150 p.)
edycja 6 stycznia 2022 przez BListwan
Program losuje 100 liczb

3 odpowiedzi

+2 głosów
odpowiedź 6 stycznia 2022 przez TOM_CPP Pasjonat (22,640 p.)
edycja 7 stycznia 2022 przez TOM_CPP
for( int i {10} ; i < 99 ; ++i ) if( i%11 ) cout << i << ' ';

 

[Update]

Jeżeli program ma losować 100 liczb z zakresu [0,1000] i wyświetlać tylko mające co najwyżej dwie różne cyfry, to można użyć std::set.

#include <iostream>
#include <set>

using namespace std; 

bool checkDigits( int number )
{
    auto s_number = to_string( number );
    set<char> result( begin(s_number) , end(s_number) );
    return result.size() <= 2;
}

int main()
{
    for( int i {0} ; i<100 ; ++i ) 
    {
        auto number = rand()%1000;
        if( checkDigits(number) ) cout << number << endl;
    }
}

https://godbolt.org/z/feYWG4nzo

komentarz 6 stycznia 2022 przez BListwan Nowicjusz (150 p.)
Co w przypadku gdy przedział sięga od 0-1000?
komentarz 7 stycznia 2022 przez VBService Ekspert (253,340 p.)

@TOM_CPP,  chyba nie do końca działa prawidłowo

 

 

P.S.

[ on-line ]

#include <iostream>
#include <set>

using namespace std; 

bool checkDigits( int number )
{
    auto s_number = to_string( number );
    set<char> result( begin(s_number) , end(s_number) );
    return result.size() <= 2;
}

int main()
{
    int foo [] = { 11, 111, 22, 222, 55, 555, 88, 999, 112, 121, 221, 12, 1, 2, 123, 456 };
    for( int i=0 ; i<16 ; ++i ) 
        if( checkDigits(foo[i]) ) cout << foo[i] << " ";
}

 

1
komentarz 7 stycznia 2022 przez TOM_CPP Pasjonat (22,640 p.)

@VBService  

mające co najwyżej dwie różne cyfry

Stąd

  • 777 - 1 różna cyfra  [OK]
  • 787 - 2 różne cyfry  [OK]
  • 785 - 3 różne cyfry  [WRONG]

Gdyby zadanie wymagało dokładnie dwóch różnych cyfr to wystarczy zmienić na

return result.size() == 2;

 

komentarz 7 stycznia 2022 przez VBService Ekspert (253,340 p.)

@TOM_CPP,

wyświetlenie liczb złożonych najwyżej z dwóch różnych cyfr

no tak, masz rację, umknęło Mi to. wink

0 głosów
odpowiedź 6 stycznia 2022 przez SzkolnyAdmin Szeryf (86,360 p.)
Po kolei. Zakładam, że chcesz mieć liczby dziesiętne z przedziału 10-99

1. Tworzysz pętlę ze zmienna sterującą, która jest liczbą dziesiątek, np. d. Zakres zmiennej to 1-9.

2. Wewnątrz tworzysz pętlę ze zmienna sterującą, która jest liczbą jedności, np. j. Zakres zmiennej to 0-9.

3. W pętli wewnętrznej sprawdzasz warunek, czy d jest rożne od j. Jeśli tak to wypisujesz liczbę 10*d+j.
0 głosów
odpowiedź 6 stycznia 2022 przez VBService Ekspert (253,340 p.)

Pozbierajmy treść zadania:

  • będzie wyświetlenie liczb złożonych najwyżej z dwóch różnych cyfr
  • przedział sięga od 0-1000?
  • Program losuje 100 liczb
  1. Tworzysz pętlę, która wykona się 100 razy np. for (int i=0; i<100; i++)
  2. Wewnątrz pętli w pierwszej kolejności losujesz liczbę z przedziału 0 - 1000 np.
    Random number c++ in some range
    Generating random number in a range
  3. W drugiej kolejności sprawdzasz czy wylosowana liczba jest dwu cyfrowa np.
    if (random_number >= 10 && random_number <= 99)
  4. Następnie do wypisania tylko tych co są dwoma różnymi cyframi możesz użyć zapisu podanego przez @TOM_CPP,  if (random_number % 11)
komentarz 6 stycznia 2022 przez BListwan Nowicjusz (150 p.)
Tylko gdy program wylosuje liczbę 323 lub 772 ta również powinna być przez niego uznana jako złożona z dwóch różnych cyfr
2
komentarz 6 stycznia 2022 przez SzkolnyAdmin Szeryf (86,360 p.)
Jakbyś podał od razu treść zadnia, nie byłoby błądzenia we mgle i zgadywania o co ci chodzi. Obejrzyj sobie rozwiązanie TOM_CPP i dopasuj do swojego zadania. Losuj z przedziału 10-998, bo taki spełnia warunek 2 różnych cyfr w liczbie. Wśród liczb dwucyfrowych odrzuć podzielne przez 11, a wśród trzycyfrowych te, których dwie ostatnie pozycje są podzielne przez 11 (reszta z dzielenia liczby przez 100) i dodatkowo wynik dzielenia dwóch ostatnich pozycji przez 11 nie jest równy cyfrze setek.
komentarz 7 stycznia 2022 przez SzkolnyAdmin Szeryf (86,360 p.)
Tak na boku, co za inteligentny inaczej wali minusy w wątku? Co się nie podoba?

Podobne pytania

0 głosów
2 odpowiedzi 262 wizyt
pytanie zadane 9 stycznia 2016 w C i C++ przez Magda Rieger Nowicjusz (190 p.)
0 głosów
0 odpowiedzi 460 wizyt
pytanie zadane 21 sierpnia 2020 w SPOJ przez magda_19 Gaduła (3,080 p.)
0 głosów
1 odpowiedź 345 wizyt

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

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

...