Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

PS. do tematu "Przeczytany, zamknięty Czy da się bez użycia warunków if"

Ostatnio zmodyfikowano 2011-01-01 14:42
Autor Wiadomość
ison
» 2010-12-27 17:19:43
@jsc nie ma takiej odpowiedzi :p pytałem co jest lepsze z tych dwóch wyżej wymienionych

@Iname przy okazji: czy to prawda że
if( a != 0 );
 jest lepszym rozwiązaniem od
if( a );
?
to samo tyczy się
if( !a );
?
P-25678
DejaVu
» 2010-12-27 17:22:12
WOJNA!!!! :P Już się pokłóciliście? :)
P-25679
Elaine
» 2010-12-27 17:27:46
czy to prawda że
if( a != 0 );
 jest lepszym rozwiązaniem od
if( a );
?
W wynikowym kodzie różnicy żadnej nie ma, w drugiej wersji to porównanie też jest, tylko niejawne ;> Pierwsza wersja jest jednak przez niektórych uważana za czytelniejszą (a przez innych ta druga) ;>

to samo tyczy się
if( !a );
?
Tak, też nie ma różnicy ;>
P-25681
F90M
» 2010-12-27 18:30:10
Po co ta cała szopka jsc? Może i twój kod jest szybszy (ja wcale się nie głowiłem nad tym aby zasuwał jak Ferrari), tylko co z tego skoro wyniki które daje nie zgadzają się z tym
Teraz sytuacja wygląda tak:
Najmniejsza wartość a to 5 i gdy a=5 to b=1 i c=1, ale jak a=6 to b=2 i c=1, a=7 to b=2 i c=2, a=8 to b=3 i c=2, a=9 to b=3 i c=3 itd.

C/C++
#include <iostream>

int main()
{
    int b, c;
   
    std::cout << "F90M:\n";
    for( int a = 0; a < 10; ++a )
    {
        b =( a - a % 2 ) / 2 - 1;
        c =( a + a % 2 ) / 2 - 2;
        std::cout << "a = " << a << ", b = " << b << ", c = " << c << "\n";
    }
   
    std::cout << "\njsc:\n";
    for( int a = 0; a < 10; ++a )
    {
        b = a / 2;
        c = a +(( a % 2 ) == 1 );
        std::cout << "a = " << a << ", b = " << b << ", c = " << c << "\n";
    }
   
}

Wyjście:

F90M:
a = 0, b = -1, c = -2
a = 1, b = -1, c = -1
a = 2, b = 0, c = -1
a = 3, b = 0, c = 0
a = 4, b = 1, c = 0
a = 5, b = 1, c = 1
a = 6, b = 2, c = 1
a = 7, b = 2, c = 2
a = 8, b = 3, c = 2
a = 9, b = 3, c = 3

jsc:
a = 0, b = 0, c = 0
a = 1, b = 0, c = 2
a = 2, b = 1, c = 2
a = 3, b = 1, c = 4
a = 4, b = 2, c = 4
a = 5, b = 2, c = 6
a = 6, b = 3, c = 6
a = 7, b = 3, c = 8
a = 8, b = 4, c = 8
a = 9, b = 4, c = 10
P-25693
jsc
Temat założony przez niniejszego użytkownika
» 2010-12-27 19:25:11
No masz prawdę, ale mój kod poprawiłem na:
for (long int a1=0; a1 < 1000000000; ++a1) //JSC daje 12 sek.
    {
     long int a2, b, c;
     a2 = a1 - 3;
     b = a2/2;
     c = b + (a2%2);
    }
    czas = czas - time (NULL);

Błąd wziął się z tego, że źle przepisałem z tematu głównego. Tam masz wyliczenie, że kod działa.
P-25698
pekfos
» 2010-12-27 19:34:05
WOJNA!!!! :P Już się pokłóciliście? :)
co poradzisz?

ja nie znam implementacji mojego kompilatora więc nie będę dołączał do tej wojny :P
P-25699
Elaine
» 2010-12-27 20:02:47
Za późno, i tak już się dołączyłeś pisząc coś niekoniecznie zgodnego z prawdą. :P
P-25701
pekfos
» 2010-12-27 20:20:19
racja, za późno. nowoczesne kompilatory i tak zoptymalizują kod lepiej od nas..
P-25702
1 2 « 3 » 4 5 6 7 8
Poprzednia strona Strona 3 z 8 Następna strona