| 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 ); ? | 
|  | 
| DejaVu | » 2010-12-27 17:22:12 WOJNA!!!! :P Już się pokłóciliście? :) | 
|  | 
| 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 ;> | 
|  | 
| 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.
 | 
 #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
 
 | 
|  | 
| 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.
 | 
|  | 
| 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 | 
|  | 
| 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 | 
|  | 
| pekfos | » 2010-12-27 20:20:19 racja, za późno. nowoczesne kompilatory i tak zoptymalizują kod lepiej od nas.. | 
|  | 
| 1 2 « 3 »  4 5 6 7 8 |