Tja, med två loopar kan du ju stega igenom intervallet och för varje steg kolla igenom vektorn efter samma tal.. i sin enklaste och kanske slösaktigaste form:
loop 2..200 do
loop 0..vect_size
if range_index equals vect_index then do something
Jo så kan man göra. Det är iofs inte särskilt effektivt vid stora arrays, men det kan ju duga. Ifall det är sorterade arrays kan du ju precisera sökningen och bara söka av ett litet intervall i arrayen.
du kan ju alltid fylla en lista av ngt slag med 2-200 sedan går du igenom vectorn, för varje index i vectorn tar du bort den siffran i från listan...
Kanske inte den bästa lösningen men dock en lösning!
Om jag jämför vec[1] med 1,2,3,4,5,6,7,8,9 så kommer 8 siffror att vara != från vec[1]. Jag vill veta vilka siffror som saknas.
Det måste gå att lösa!!!**
Visst går det att lösa. Till att börja med blir det till att låta yttre och inre loop byta plats och sen kastar vi in lite fler villkor. Vet inte om du menar intervallet som ska kontrolleras ligger mellan 2 till 20 eller mellan högsta och minsta värde i arrayen. Båda alternativen kan dock lösas med nedan exempel:
int lookahead;
int higher = 200;
int vect[xxx] = {x...x};
for(int i=0;i<VECTSIZE;i++)
for(int j=vect[i];j<=higher;j++){
if(i+1<VECTSIZE)
lookahead = vect[i+1];
//ta bort nedan två rader ifall intervallet är inom minsta/högsta i arrayen
//är det inom din limit upp till 200 som gäller ska de vara kvar
else
lookahead = higher+1;
if(lookahead<=j)
break;
if(vect[i]<j)
cout << "följande tal saknades " << j << endl;
}
Vi har en array och vi har ett intervall av naturliga tal. Vi behöver veta om nästa tal i arrayen är lika eller är nästa tal i ordningen av de naturliga talen. Är det lika så är allt okej och vi gör ingenting utan vi stegar till nästa position och utför samma koll en gång till. Om det skulle vara ett glapp skriver vi ut glappet (eller gör vad som helst med det talet) och stegar till nästa. Ifall vi når slutet av arrayen men har mer att hämta från vårt intervall sätter vi kontrollen (lookahead) till ovanför intervallet och därmed skrivs resterande tal i intervallet ut. Ifall man inte vill ha det så utan bara vill ha talen inom arrayens intervall är det bara att låta bli att sätta kontrollen till steget ovanför intervallet.
Btw.. sätt gärna mitt svar som svaret accepterat ;)
För det första så har du då inte samma intervall och sen skriver du inte ut glapp större än ett, även om du noterar dem, detta pga av du endast loopar arrayen inte ett intervall av naturliga tal. För det andra måste du ha en koll på indexeringen av arrayen, som det är ovan blir det utanför index vid det sista elementet.