Mój problem polega na tym, że program nie działa dla każdego n mniejszego od 6. W momencie kiedy wpisuję do niego liczbę większą na przykład 10 nic się nie wyświetla.
Oto program, bardzo proszę o pomoc.
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
int n,i=0,x=0,min=0,max=0,a=0,b=0,pomoc=0,tab[n]={0};
srand(time(NULL));
cin>>n;
if(n<=1)
{
cout<<"Podano zle wartosci!";
exit(0);
}
for(int i=0; n>i; i++)
{
x=1+rand()%(200-1+1);
tab[i]=x;
if(i==0)
{
a=x;
}
else if(i==1)
{
b=x;
if(b>a)
{
max=b;
min=a;
}
else if(a>b)
{
max=a;
min=b;
}
}
else if(x>max)
{
max=x;
}
else if(x<min)
{
min=x;
}
else if(x==max||x==min)
{
pomoc++;
}
else if(x<max&&x>min)
{
for(int p=0; p<i; p++)
{
if(tab[p]==tab[i])
pomoc++;
}
}
cout<<x<<" ";
}
cout<<" - numery obrazow, ktore zostaly";
cout<<endl;
cout<<max<<" to jest maksymalny numer.";
cout<<endl;
cout<<min<<" to jest minimalny.";
cout<<endl<<endl;
cout<<max-min+1;
cout<<" - to ilosc numerow z przedzialu obrazow (liczac razem z tymi skradzionymi).";
cout<<endl;
cout<<(max-min+1)-n+pomoc;
cout<<" - wowczas skradziono przynajmniej tyle obrazow";
return 0;
}
Oto treść zadania:
W Galerii Sztuki miało miejsce włamanie i kradzież pewnej ilości obrazów. Wszystkie obrazy
w kolekcji były oczywiście skatalogowane: opatrzono je kolejnymi numerami począwszy od pewnej
liczby całkowitej x. To znaczy dla przykładu, ze jeśli x = 4, a w galerii było 5 obrazów, to miały one
numery 4, 5, 6, 7 oraz 8.
Po włamaniu w galerii pozostało n obrazów o numerach a1, a2, . . . , an. Twoim zadaniem jest
obliczenie najmniejszej możliwej liczby skradzionych obrazów. Niestety personel galerii nie pamięta
ani wartości początkowego numeru x, ani liczby obrazów w galerii przed włamaniem.
Dane wejściowe
• n – ilość obrazów w galerii po włamaniu podaje użytkownik (dodatnia liczba naturalna n
<1, 100>
• a1 .... an - numery pozostawionych obrazów (liczby losowe <1, 200>
Program powinien wypisać minimalna liczbę skradzionych obrazów.
Przykład
Dla danych wejściowych
4
10 13 12 8
prawidłowym wynikiem jest:
2
(Skradziono obrazy 9 i 11.)