Witam ,mam spory problem z pętlami - nie wiem czemu program się wysypuje.
wystarczy odpalić ten kod poniżej,wybrać 2 , potem 3 ,wpisać 1 3 7 ,i zobaczyć że pozycja będzie się zmieniać a wartość najmniejsza nie ,i tu moje wołanie o pomoc.
Czy ktoś mógłby mi pomóc i wskazać błędy ?
Przesyłam od razu treść zadania:
Zaproponuj algorytm sprawdzający, czy wyrazy ciągu spełniają zależności ai <=ai+1 /2 (i=1,...,n-1,gdzie n jest liczbą wyrazów ciągu). Narysuj schemat blokowy dla tego algorytmu.Napisz i uruchom program realizujący ten algorytm oraz dodatkowo podający wartość najmniejszego elementu dla zakresu wskazanego przez użytkownika i zamieniający wartość tego elementu na wartość wskazaną przez użytkownika. Program ma umożliwiać a) automatyczne wypisanie ciągu o podanych właściwościach, b) wygenerowanie ciągu liczb losowych z zadanego zakresu c) wpisanie elementów ciągu z klawiatury .Pogrupuj części programu w funkcje.
#include<iostream>
#include<conio.h>
#include<cmath>
#include<ctime>
#include<cstdlib>
using namespace std;
const int N=10000;//stałe
int sprawdzenie()
{int i,n,a[N],spr=0;//zmienne
for(i=1;i<=n;i++)//pętla sprawdzająca
{
if(a[i]>=a[i-1]*2){cout<<a[i]<<endl; spr=spr+1;}
else{cout<<i<<"-ty wyraz nie spelnia zalozen"<<endl;}
}
if(spr==n){cout<<"ciag spelnia warunek"<<endl;}
else{cout<<"ciag nie spelnia warunku"<<endl;}
}
int wyszukaj()
{int a[N],i,n,mini,pozycja;
mini =a[1] ;// zaczynamy porownywanie od pierwszego (zerowego) elementu tablicy
pozycja = 1;
for (i=1;i<=n;i++)
{ if (mini>a[i])
{pozycja = i;
mini = a[i];
cout<<mini<<"mini"<<endl;
cout<<"Próba pętli"<<endl;
}
}
}
int dodatek()
{int i,n,a[N],decyzja,pozycja;
cout<<"Czy chcesz zmienic najmniejsza wartosc elementu w zakresie (0-tak,1=nie)?";
cin>>decyzja;
if(decyzja==0)
{cout<<"Na jaka wartosc chcesz go zmienic?";
cin>>a[pozycja];
}
}
int autom()//ciąg o podanych właściwościach
{int i,n,a[N],min;
cout<<"Wybrales automatyczne wypisanie:\n ilo wyrazowy ciag chcesz?"<<endl;
cin>>n;
for( int i=1; i<=n; i++)
{ a[i]=(a[i-1]*2)+rand()%9+1;}//instrukcja pętli która wypełnia tablice losowymi liczbami
}
int wlasny()//możliwość własnego ciągu
{int i,n,a[N];
cout<<"Ilo elementowy chcesz wpisac ciag?";
cin>>n;
for(i=1;i<=n;i++)//rozpoczynamy od i = 1 ,bo nie ma wzoru ogólnego
{
cout<<"Podaj "<<i<< "-ty wyraz";
cin>>a[i];
}
}
int los()
{
int n,a[N],min,max;
cout<<"Ile elementow wylosowac : "<<endl;
cin>>n;
cout<<"Z zakresu od :";
cin>>min;
cout<<"do";
cin>>max;
srand(time(0));//potrzebna zmienna
for( int i=1; i<=n; i++)
{
a[i]=min+rand()%(max-min+1);//moduł losowania
cout<<a[i]<<endl;
}
}
int main()
{
int wybor=0;//wyzerowana zmienna do sekwencji switch case
cout<<"Menu\n 1.Automatyczne wypisanie ciagu o zadanych wlasciwosciach\n 2.Wpisanie wlasnego ciagu\n 3.Losowy ciag liczb\n";
cin>>wybor;
switch (wybor){
case 1 : autom(); sprawdzenie(); break;
case 2 : wlasny(); wyszukaj(); dodatek(); sprawdzenie(); break;
default: los(); wyszukaj(); dodatek(); sprawdzenie(); break;
}
getch();
}