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

Nie umiem napisać fragmentu kodu

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+1 głos
676 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 (256,320 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 (256,320 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 (256,320 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 (256,320 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 (256,320 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 (89,030 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 (256,320 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 (89,030 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 (89,030 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 367 wizyt
pytanie zadane 9 stycznia 2016 w C i C++ przez Magda Rieger Nowicjusz (190 p.)
0 głosów
0 odpowiedzi 686 wizyt
pytanie zadane 21 sierpnia 2020 w SPOJ przez magda_19 Gaduła (3,080 p.)
0 głosów
1 odpowiedź 371 wizyt

93,184 zapytań

142,197 odpowiedzi

322,002 komentarzy

62,514 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - rucin93
  6. 2005p. - Łukasz Siedlecki
  7. 1964p. - CC PL
  8. 1835p. - Adrian Wieprzkowicz
  9. 1785p. - Michal Drewniak
  10. 1744p. - rafalszastok
  11. 1684p. - Mikbac
  12. 1624p. - Anonim 3619784
  13. 1520p. - Marcin Putra
  14. 1480p. - ssynowiec
  15. 1365p. - Dawid128
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...