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

jak krótko napisać taki warunek:

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
1,184 wizyt
pytanie zadane 15 października 2017 w C i C++ przez Corvette 653 Początkujący (400 p.)
if ( d <= 3 || d > 9 && d <= 12 || d > 18 && d <= 21...)

lub:

if ( d == 1 || d == 2 || d == 3 || d == 10 || d == 11 || d == 12 || d ==19 || d == 20 || d == 21 || ... || d == 242 || d == 243 )

pisząc tak zajmie mi to 2 h jak mogę zrobić to szybciej i krócej?

PS.: te dwie pętle są takie same tylko zapisane inaczej
komentarz 15 października 2017 przez Corvette 653 Początkujący (400 p.)
nikt mi nie pomoże???
komentarz 15 października 2017 przez Corvette 653 Początkujący (400 p.)
przecież nie będę siedział 2 h pisząc ten warunek aż do 243...
komentarz 15 października 2017 przez mokrowski Mędrzec (156,320 p.)
Nie pytaj o rozwiązanie tylko podaj problem z którym chcesz sobie poradzić. Próbujesz stosować if do zadania które nie w ten sposób można rozwiązać.

4 odpowiedzi

0 głosów
odpowiedź 15 października 2017 przez ziemjok Gaduła (4,160 p.)
wybrane 15 października 2017 przez Corvette 653
 
Najlepsza
możesz sobie stworzyć tablice wartości dostępnych, potem w pętli for lecieć po kolejnych wartościach tej tablicy i jeśli d == aktualny_element to wtedy wykonujesz kod
komentarz 15 października 2017 przez Corvette 653 Początkujący (400 p.)
nie mogę ponieważ d == konkretny element

a nie

d == t [1] || d == t[2]...

d musi się równać każdej wartości tablicy a nie tylko jednej zmiennej
komentarz 15 października 2017 przez ziemjok Gaduła (4,160 p.)

albo ja czegoś nie rozumiem albo Ty napisałeś źle te ify

z tego co napisałeś to ten kod robi to samo

int tab[ 255 ] = {1,2,3,10,...}

for(int i=0;i<255;i++}
{
  if(d == tab[i]){twoj kod + break na koncu}

}

 

0 głosów
odpowiedź 15 października 2017 przez C☺ndzi Stary wyjadacz (12,100 p.)

A to drugie to nie będzie po prostu:
 

if ( d >0 && d < 244 )

?

komentarz 15 października 2017 przez ziemjok Gaduła (4,160 p.)
ale nie wszystkie wartości d mają być uwzględniane, więc chyba nie może tak być
komentarz 15 października 2017 przez C☺ndzi Stary wyjadacz (12,100 p.)
A co właściwie chcesz zrobić?
komentarz 15 października 2017 przez ziemjok Gaduła (4,160 p.)
ja nie jestem autorem pytania, a co on chce robić to nie mam pojęcia xd
komentarz 15 października 2017 przez C☺ndzi Stary wyjadacz (12,100 p.)
A, pomyliłem się xD.
0 głosów
odpowiedź 15 października 2017 przez niezalogowany
if(d >= 1 && d <= 243) { 
    // instrukcje
}

 

komentarz 15 października 2017 przez C☺ndzi Stary wyjadacz (12,100 p.)
byłem pierwsiejszy o 30s!!11!!1!one :D
1
komentarz 15 października 2017 przez niezalogowany
U ciebie nie ma komentarza. Ha!
komentarz 15 października 2017 przez obl Maniak (51,300 p.)
A jak się postarasz to znajdziesz jeszcze jedną różnicę :)
komentarz 15 października 2017 przez Corvette 653 Początkujący (400 p.)
TUTAJ!!!

ten kod wygląda tak:

for ( int d=0; d<243; d++ )

{
  

if(d == 1 || d == 2 || d == 3 || d == 10 || d == 11 || d == 12...)

cout << 1

if(d == 4 || d == 5 || d == 6 || d == 13 || d == 14 || d == 15...)

cout << 2

if(d == 7 || d == 8 || d == 9 || d == 16 || d == 17 || d == 18...)

cout << 3

} // te d == ileśtam musze poprowadzić aż do 247
komentarz 15 października 2017 przez ziemjok Gaduła (4,160 p.)
taka podpowiedź: sprawdzaj warunki d%9 i wyniki które one dadzą
komentarz 15 października 2017 przez Corvette 653 Początkujący (400 p.)
wyniki co?
komentarz 15 października 2017 przez niezalogowany

A jak się postarasz to znajdziesz jeszcze jedną różnicę :)

Ale jest ona drobna i raczej wynika z tego, jak komu wygodniej zapisywać tego typu wyrażenia. Dla mnie d >= 1 jest bardziej czytelne od d > 0. (-:

@Corvette 653

Nie wiem, jak ten program ma działać, ale nie lepiej zrobić coś takiego?

for(int d = 0; d < 243; ++d) {
	d > 0 ? cout << "1" : continue;
	d > 3 ? cout << "2" : continue;
	d > 6 ? cout << "3" : continue;
}

Jesteś pewien, że kiedy d będzie miało wartość, na przykład, 10 (tj. d >= 7), to wszystkie trzy warunki mają się spełnić? Jeśli nie, to użyj else if:

for(int d = 0; d < 243; ++d) {
	if(d > 6)	  cout << "3";
	else if(d > 3) cout << "2";
	else if(d > 0) cout << "1";
}
komentarz 15 października 2017 przez obl Maniak (51,300 p.)
if( d - 1 % 9 < 3)
    cout << 1;
else if(d - 1 % 9 < 6)
    cout << 2;
else if(d - 1 % 9 < 9)
   cout << 3;

Mniej więcej tak według koncepcji @ziemjok

komentarz 15 października 2017 przez ziemjok Gaduła (4,160 p.)

już chciałem żebys sam spróbował napisać ale łątwiej będzie podać kod

for(int d = 0; d<243; d++}
{
   if(d%9 == 1 || d%9 == 2 || d%9 == 3) cout<<1
   if(d%9 == 4 || d%9 == 5 || d%9 == 6) cout<<2

   if(d%9 == 7 || d%9 == 8 || d%9 == 0) cout<<3

}

 

komentarz 15 października 2017 przez Corvette 653 Początkujący (400 p.)
właśnie o to mi chodziło ale domyśliłem się przed przeczytaniem tego kodu :) wielkie dzięki
0 głosów
odpowiedź 15 października 2017 przez Corvette 653 Początkujący (400 p.)

wielkie dzięki (: :)

pomysł z resztą dzielenia przez 9-genialny

jednak mimo poprawności kodu ( przynajmniej według mnie ) wyjście programu jest złe oto cały kod i początek wyjścia programu:
 

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main ()
{
    for ( int d = 1; d < 243; d++ )
    {
        if ( d < 81 )
        {
            cout << 1;
        }
        if ( d > 81 && d <= 162 )
        {
            cout << 2;
        }
        if ( d > 162 )
        {
            cout << 3;
        }


        if ( d <= 27 || d > 81 && d <= 108 || d > 162 && d <= 189 )
        {
            cout << 1;
        }
        if ( d > 27 && d <= 54 || d > 108 && d <= 135 || d > 189 && d <= 216 )
        {
            cout << 2;
        }
        if ( d > 54 && d <= 81 || d > 135 && d <= 162 || d > 216 )
        {
            cout << 3;
        }


        if ( d <= 9 || d > 27 && d <= 36 || d > 54 && d <= 63 || d > 81 && d <= 90 || d > 108 && d <= 117 || d > 135 && d <= 144 || d > 162 && d <= 171 || d > 189 && d <= 198 || d > 216 && d <= 225 )
        {
            cout << 1;
        }
        if ( d > 9 && d <= 18 || d > 36 && d <= 45 || d > 63 && d <= 72 || d > 90 && d <= 99 || d > 117 && d <= 126 || d > 144 && d <= 153 || d > 171 && d <= 180 || d > 198 && d <= 207 || d > 225 && d <= 234 )
        {
            cout << 2;
        }
        if ( d > 18 && d <= 27 || d > 45 && d <= 54 || d > 72 && d <= 81 || d > 99 && d <= 108 || d > 126 && d <= 135 || d > 153 && d <= 162 || d > 180 && d <= 189 || d > 207 && d <= 216 || d > 234 )
        {
            cout << 3;
        }


        if ( d % 9 == 1 || d % 9 == 2 || d % 9 == 3 )
        {
            cout << 1;
        }
        if ( d % 9 == 4 || d % 9 == 5 || d % 9 == 6 )
        {
            cout << 2;
        }
        if ( d % 9 == 7 || d % 9 == 8 || d % 9 == 0 )
        {
            cout << 3;
        }


        if ( d % 3 == 1 )
        {
            cout << 1 << endl;
        }
        if ( d % 3 == 2 )
        {
            cout << endl << 2 << endl;
        }
        if ( d % 3 == 0 )
        {
            cout << 3 << endl;
        }
    }
    return 0;
}

Oto program natomiast tutaj początek jego wyjścia:

11313

11321

1132

2

11323

11331

1133

2

11333

12111

1211

2

 

wyjście !!!miało!!! wyglądać tak:

11111

11112

11113

11121

11122

11123

11131

11132

11133

11211

...

 

Pytanie jest oczywiste :

dlaczego program jest "zły"

komentarz 15 października 2017 przez Corvette 653 Początkujący (400 p.)
1. jak pewnie zauważyliście program zaczyna się od 11313 zamiast od 11111

2. Co 3 cyfrę pisze się enter którego w kodzie nie ma ( chyba )

Podobne pytania

0 głosów
3 odpowiedzi 844 wizyt
pytanie zadane 21 sierpnia 2016 w C i C++ przez kkiermasz Użytkownik (680 p.)
0 głosów
2 odpowiedzi 1,177 wizyt
0 głosów
1 odpowiedź 2,806 wizyt

93,176 zapytań

142,186 odpowiedzi

321,980 komentarzy

62,507 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1637p. - dia-Chann
  2. 1614p. - Łukasz Piwowar
  3. 1599p. - CC PL
  4. 1597p. - Łukasz Eckert
  5. 1572p. - Tomasz Bielak
  6. 1537p. - Łukasz Siedlecki
  7. 1531p. - rucin93
  8. 1509p. - rafalszastok
  9. 1356p. - ssynowiec
  10. 1341p. - Mikbac
  11. 1328p. - Michal Drewniak
  12. 1273p. - Adrian Wieprzkowicz
  13. 1169p. - Grzegorz Aleksander Klementowski
  14. 1155p. - Piotr Aleksandrowicz
  15. 1149p. - Michał Telesz
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!

...