[Informatyka, C++] Zadanie maturalne 2006
Ostatnio zmodyfikowano 2013-10-15 18:02
OverMorda Temat założony przez niniejszego użytkownika |
[Informatyka, C++] Zadanie maturalne 2006 » 2013-10-13 00:51:39 Witam, oglądałem sobie zadania maturalne z infy i jedno zadanie mnie zainteresowało ale nie mogę go zrobić ;P
Zadanie nr. 3 http://www.staszic.ostrowiec.pl/Matura%20z%20informatyki/2006/2006%20grudzien%20probna/ARKUSZ_CZ_I.pdf
Robiąc to wyszło mi takie coś:
#include<iostream>
using namespace std;
int main() { int n; cout << "Podaj liczbe: " << endl; cin >> n; if( n >= 0 && n <= 1 ) { n = 1; cout << "Wynik to: " << n << endl; } else if( n > 1 && n % 2 == 0 ) { n =( n / 4 ) + 1; cout << "Wynik to: " << n << endl; } else if( n > 1 && n % 2 != 0 ) { n =( 3 * n + 1 ) + 1; cout << "Wynik to: " << n << endl; } main(); }
Nie działa dla liczb nieparzystych i jakoś nie mogę dojść czemu. Wie ktoś co tu zmienić? |
|
ison |
» 2013-10-13 01:03:20 D(n) dla n > 1 parzystego to nie n/4+1 tylko D(n/4)+1 |
|
OverMorda Temat założony przez niniejszego użytkownika |
» 2013-10-13 01:08:12 No tak, ale jak to zapisać w c++ ? |
|
ison |
» 2013-10-13 01:11:13 |
|
OverMorda Temat założony przez niniejszego użytkownika |
» 2013-10-13 01:46:27 Nie wiem czego tutaj nie łapie ale co bym nie zmienił zawsze to samo wychodzi... |
|
Monika90 |
» 2013-10-13 13:52:50 W C++ nie można wywoływać main(). Na dodatek w zadaniu jest napisane, że algorytm ma być nierekurencyjny. |
|
OverMorda Temat założony przez niniejszego użytkownika |
» 2013-10-15 12:40:36 Po wielu próbach wyszło mi takie coś: #include<iostream> using namespace std;
int main() { int n; int a = 0; int wynik; cout << "Podaj liczbe: " << endl; cin >> n; if( n == 0 || n == 1 ) { wynik = 1; } else { while( n != 0 && n != 1 ) { while( n > 1 && n % 2 == 0 ) { n =( n / 4 ); a++; } while( n > 1 && n % 2 != 0 ) { n =( 3 * n + 1 ); a++; } } wynik = 1 + a; } cout << "Wynik = " << wynik << endl; return 0; }
Czy jest tak jak powinien być? |
|
pekfos |
» 2013-10-15 18:02:11 Działa? |
|
« 1 » |