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

[Informatyka, C++] Zadanie maturalne 2006

Ostatnio zmodyfikowano 2013-10-15 18:02
Autor Wiadomość
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ś:
C/C++
#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ć?
P-93587
ison
» 2013-10-13 01:03:20
D(n) dla n > 1 parzystego to nie n/4+1 tylko D(n/4)+1
P-93588
OverMorda
Temat założony przez niniejszego użytkownika
» 2013-10-13 01:08:12
No tak, ale jak to zapisać w c++ ?
P-93589
ison
» 2013-10-13 01:11:13
Frazy, które należy wpisać w wyszukiwarkę google:
P-93590
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...
P-93591
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.
P-93613
OverMorda
Temat założony przez niniejszego użytkownika
» 2013-10-15 12:40:36
Po wielu próbach wyszło mi takie coś:
C/C++
#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ć?
P-93730
pekfos
» 2013-10-15 18:02:11
Działa?
P-93745
« 1 »
  Strona 1 z 1