• 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:

Object Storage Arubacloud
0 głosów
792 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 (155,460 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,280 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,280 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 514 wizyt
pytanie zadane 21 sierpnia 2016 w C i C++ przez kkiermasz Użytkownik (680 p.)
0 głosów
2 odpowiedzi 954 wizyt
0 głosów
1 odpowiedź 2,341 wizyt

92,552 zapytań

141,399 odpowiedzi

319,534 komentarzy

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

...