F90M |
» 2010-12-28 14:54:16 w treści zadania było powiedziane że a>=5 więc wyniki dla a<5 nie muszą być takie jak podałeś |
Czepiasz się szczegółów, autor pisał że 5 jest najmniejszą wartością dla A, więc teoretycznie nie ma wartości A < 5. Wiemy że są wartości A > 9, ale autor ich nie podał, więc pisząc a = 10, b = 4, c = 3 jaką masz pewność że otrzymasz poprawny wynik? A no taką że pasuje do pewnego schematu, a = 4, b = 1, c = 0 do tego schematu pasuje. A teraz ison napisz mi działanie (bez warunków, żeby nie było) które spełnia te zależności: 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 ale to a = 4, b = 1, c = 0 nie będzie już poprawnym wynikiem. Gdybyś doczytał tamten wątek to byś zobaczył, że ten istotny błąd poprawiłem w przedostanim poście. |
Kto nie doczytał i o jaki błąd chodzi? |
|
ison |
» 2010-12-28 15:01:10 @up jeśli w zadaniu jest założenie a>=5 to nie możesz mówić o wynikach dla a<5. Nie było powiedziane że a<9 więc dla reszty powinniśmy się domyśleć tak jak chciał autor A teraz ison napisz mi działanie (bez warunków, żeby nie było) które spełnia te zależności:
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 ale to
a = 4, b = 1, c = 0 nie będzie już poprawnym wynikiem.
|
np takie gdzie korzystasz ze zmiennej unsigned i w pewnym momencie w obliczeniach odejmujesz 5 - dla a<5 licznik się przekręci :) ale to jest mało istotne, założenie a>=5 jest istotne i powinniśmy się tego trzymać, nie możesz mówić że twój program ma wypisywać to samo dla a<5 co program jsc. |
|
jsc Temat założony przez niniejszego użytkownika |
» 2010-12-28 15:30:12 Dla poprawionego kodu (a co do a = - 3, rzeczywiście powinno być a = a - 3) to wyniki dla a<5 ma takie same.
A co do błędu w programie to pokręciłem b z c. |
|
F90M |
» 2010-12-28 15:44:00 Dla 4 i 3 licznik się nie przekręci :P A wyniki które podałem tyczyły się tego kodu for( int a = 0, b, c; a < 10; ++a ) { b = ; c = ; std::cout << "a = " << a << ", b = " << b << ", c = " << c << "\n"; }
nie ma tu unsigned, działanie miał wstawić w miejsce komentarzy. Poprawiłem wcześniejszy post, ale nadal twierdzę że to jest szczegół, i sam dobrze wiesz że nie o to tutaj chodzi (po prostu wale odruchowo a = 0 w pętli i jadę do 9, tyle). @jsc, czy możesz mi wytłumaczyć dlaczego robisz to a = a - 3 , bo kompletnie nie jest dla mnie zrozumiały Twój upór, wytykałem to dwa razy, a i tak dalej się tego trzymasz. |
|
jsc Temat założony przez niniejszego użytkownika |
» 2010-12-28 15:53:17 Od postu nr. P-25714.
» Napisano 2010-12-28 02:28:14 A to: b = a << 2 - 1; c = b + a % 2 - 1;
Zeszło do 8 sekund.
A to dlatego po optymalizacjach kodu JSC i F90M czasy wynosiły 11 i 13 sekund.
A mój upór przy a = a - 3, wypływa z tego, że broniłem zamieszczonego kodu, który niestety źle wkleił.
Wymyśliłem dlatego, bo nie chciałem kombinować co trzeba zrobić po b<<1 (ups. znalazłem błąd) i b+a%2, takie pójście na łatwiznę. |
|
F90M |
» 2010-12-28 15:56:13 Dobra, to teraz może wkleisz w końcu dobry kod i zamkniemy ten temat. I przeczytaj kurs STC. |
|
jsc Temat założony przez niniejszego użytkownika |
» 2010-12-28 16:03:41 for (long int a=0; a < 10; ++a) //JSC daje 10 sek. { long int a2, b, c; a2 = a - 3; c = a2/2; b = c + (a2%2); cout << "a = " << a << " b = " << b << " c = " << c <<"\n"; } cin >> czas; Nie mogłem znaleźć znaczników od grafik. |
|
F90M |
» 2010-12-28 16:20:20 Ten działa jak należy, chyba można temat zamknąć :) I muszę się jeszcze przyznać do błędu #include <iostream>
int main() { for( int a = 0, b, c; a < 10; ++a ) { b =( a >> 1 ) - 1; c = b +( a & 1 ) - 1; std::cout << "a = " << a << " b = " << b << " c = " << c << "\n"; } std::cout << "\n"; for( int a = 0; a < 10; ++a ) { long int a2, b, c; a2 = a - 3; c = a2 / 2; b = c +( a2 % 2 ); std::cout << "a = " << a << " b = " << b << " c = " << c << "\n"; } }
Wynik 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
a = 0 b = -2 c = -1 a = 1 b = -1 c = -1 a = 2 b = -1 c = 0 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
Wyniki dla a < 3 są różne więc ison miał rację. |
|
1 2 3 4 5 « 6 » 7 8 |