Pomoc w sprawdzeniu programu zaliczeniowego

0

Witam! jestem studentem informatyki i potrzebuje waszej pomocy odnosnie programu zaliczeniowego.Było by miło gdyby ktoś mógł zerknąć czy wszystko dobrze zrobiłem,oraz pomógł mi w poprawieniu funkcji wypisującej ostatni nieparzysty element ciagu (nie zawsze działa).Z góry uprzedzam że programowanie nie jest moją najmocniejsza strona oraz dziękuje za ewentualną pomoc.

Poleceni brzmi: http://postimg.org/image/d5i9f1awn/

#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;


const int N=1000;


int automatycznie(int a[],int n);
int losuj(int a[], int n);
int wczytaj_z_klawiatury(int a[], int n);
int sprawdzaj(int a[],int n);
void ostatni(int a[], int n);

int main()
{
    int a[N],n,x; 

        cout<<"podaj liczbe elementow n (n<="<<N<<") ciag liczb: " ;cin>>n;
        char decyzja;
        cout<<"podaj sposob generowania danych (a-automatycznie , b- losowo, c-z klaw):";cin>>decyzja;
        switch(decyzja)
        {
            case 'a':   automatycznie(a,n);
                        break;

            case 'b':   losuj(a,n);
                        break;

            case 'c':   wczytaj_z_klawiatury(a,n);
                        break;
            default:    cout<<"zly wybor (a,b,c)"; break;


        }
     if(sprawdzaj(a,n))
        {
            cout<<"Ciag liczb spelnia warunek"<<endl;
        }
     else{cout<<"Ciag liczb nie spelnia warunku"<<endl;}
     ostatni(a,n);
}









//Funkcja automatycznie generujaca ciag o podanych wlasciwosciach
int automatycznie(int a[],int n)
{
    int x=0;
    cout<<"Automatycznie wypelniony ciag o szukanych wlasciowosciach!"<<endl;
    srand(unsigned(time(0)));
    a[0]=rand()%N;
    a[1]=rand()%N;
    for(int i=2;i<=n-1;i++)
    {
        a[i]=a[i-1]+a[i-2];
    }
    for(int i=0;i<n;i++)
    {
        x=x+1;
        cout<<"a["<<x<<"]="<<a[i]<<endl;

    }
}


//Funkcja losujaca podany ciag
int losuj(int a[], int n)
{
    srand(unsigned(time(0)));
    for(int i=0;i<n;i++)
    {
        a[i]=rand()%N;
        cout<<endl<<"a["<<i<<"]="<<a[i]<<endl;
    }
}


//Wczytywanie z klawiatury
int wczytaj_z_klawiatury(int a[], int n)
{
    for(int i=0;i<n;i++)
    {
        cout<<"podaj a["<<i<<"]=";
        cin>>a[i];
    }
}

//Sprawdzanie zaleznosci
int sprawdzaj(int a[],int n)
{

    for(int i=2;i<=n;i++)
    {
        if(a[i]>=a[i-1]+a[i-2])
        {
            return 1;
        }
        else{return 0;}
    }

}


//Ostatni nieparzysty element
void ostatni(int a[], int n)
{
    int ostatni=0;
    for(int i=0;i<=n;i++)
        {
            if(a[i]%2!=0)
            {
                ostatni=i;

            }

        }
    cout<<endl<<"ostatni nieparzysty element to: a["<<ostatni<<"]";

}
 
1

Przy automatycznym generowaniu ciągu wypisujesz od a[i + 1], potem w funkcji void ostatni - ostatni element wypisujesz z indeksem a[i]. Funkcja ostatni jest dobrze. Popraw tylko dla wszystkich parzystych - bo wyświetla Ci się, że ostatni element nieparzysty jest to a[0], co jest nieprawdą.

0

Dziękuje bardzo za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1