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ść
F90M
» 2010-12-28 01:13:39
Błąd wziął się z tego, że źle przepisałem z tematu głównego
Taa, nadal wychodzą złe wyniki, poza tym nie wiem co uczepiłeś się tak tego odejmowania 3 od zmiennej a.
a1 = a2 - 3
 Jaki to ma sens w tym programie? Szczególnie biorąc pod uwagę szybkość działania na którą tak bardzo się tutaj uwziąłeś.

C/C++
b =( a >> 1 ) - 1;
c = b +( a & 1 ) - 1;
Wystarczająco szybkie? Co z tego skoro po włączeniu optymalizacji nie zauważę różnicy w porównaniu do tego:
C/C++
b =( a - a % 2 ) / 2 - 1;
c =( a + a % 2 ) / 2 - 2;
czy tego:
C/C++
b = a / 2 - 1;
c = b + a % 2 - 1;
P-25713
jsc
Temat założony przez niniejszego użytkownika
» 2010-12-28 02:18:46
Jak to zrobiłem to zjechało mi połowę czasu.
P-25714
jsc
Temat założony przez niniejszego użytkownika
» 2010-12-28 02:28:14
A to:
b = a << 2 - 1;
c = b + a % 2 - 1;

Zeszło do 8 sekund.
P-25715
F90M
» 2010-12-28 03:35:42
Możesz z łaski swojej, chociaż raz napisać kod dający poprawny wynik, zanim pochwalisz się szybkością jego wykonywania?
P-25716
pekfos
» 2010-12-28 10:56:02
operator << i >> ma chyba najniższy priorytet operatorów. najpierw dodawanie, potem przesunięcia
P-25719
jsc
Temat założony przez niniejszego użytkownika
» 2010-12-28 11:03:58
Może pokażesz błąd w moim rozumowaniu?

Policzmy:

int a = 5 //a = 5
a =- 3 //a=2
b = floor (a/2) // (2/2) = 1, czyli b=1
c = b + ((a%2) == 1)
/*
2%2 = 0
0 == 1 daje 0,
więc
1 + 0 = 1
c=1
*/

int a = 6 //a=6
a =- 3 //a=3
b = floor (a/2) // (3/2) = 1,5, floor (1,5) = 1, czyli b=1
c = b + ((a%1) == 1)
/*
2%2 = 1
1 == 1 daje 1,
więc
1 + 1 = 2
c=1
*/
P-25720
pekfos
» 2010-12-28 11:41:22
a = - 3
 przypisuje wartość -3. już sam początek jest zły
P-25724
ison
» 2010-12-28 11:42:07
Może pokażesz błąd w moim rozumowaniu?
C/C++
int a = 5 //a = 5
a =- 3 //a=2
jak a=2? a = -3 to podstawienie pod a liczby -3 a nie odjęcie od niej 3

C/C++
int a = 6 //a=6
a =- 3 //a=3
...jak wyżej...

C/C++
c = b +(( a % 1 ) == 1 )
a%1?

C/C++
2 % 2 = 1
raczej nie ;p

C/C++
1 + 1 = 2
c = 1
wyszło ci 2 to dlaczego zatem c=1?
P-25725
1 2 3 « 4 » 5 6 7 8
Poprzednia strona Strona 4 z 8 Następna strona