Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem c++ problém s kódem

Dobrý den, mám kód na vyhledání společných násobku v určitém rozmezí , ale když dám třeba od 100 a po 200, s 2 děliteli(např 2;9),tak mi to vypíše všechny násobky a k tomu to přidá asi 10 mnohonásobně větší čísla mimo rozmezí a crashne to.V rozmezí třeba 1 a 100 to nedělá... nic mě nenapadá čím by to mohlo být. Raději přiložím kód:
#include <iostream>
#include <windows.h>
using namespace std;

void cistka()
{
system("CLS");
}

int main()
{
int Odk,dok;
int kod;
cout <<" Od kolika: "<< ' ';
cin >> Odk; // tady se určuje minimální hranice
cout <<" Do kolika: "<< ' ';
cin >> dok; // tady se určuje maximalní hranice
cout <<" Kolik delitelu: " <<' ';
cin >> kod; // tady se určuje počet dělitelů
int *delitele = new(nothrow) int[kod];
for(int tt = 0;tt < kod;++tt) // v tomhle cyklu se určují dělitele
{
cout << " " << tt+1 << ". delitel:" <<' ';
cin >> delitele[tt];
}
int rozdil = dok - Odk; // tady se určuje velikost vpole(vysled.pole)
int *vpole = new(nothrow) int[rozdil];
cistka(); // vymaže plochu
int a = 0;
for(;Odk <= dok;++Odk)
{

for(int bb = 0;bb < kod;++bb) // tady se vyhodnocuje zda platí podmínky
{
if(Odk%delitele[bb]==0)
{
vpole[a]= Odk;
}
else
{
vpole[a]= 0; // pokud neplatí jedna podmínka z x, tak uloží do pole číslo 0 a stopne cyklus
bb = kod;
}
}
a = a + 1;
}
for(int ii=0;ii < dok;++ii) // tenhle cyklus je vypisuje
{
if((vpole[ii]!=NULL)||(vpole[ii]!=0))
{
cout<< vpole[ii] << endl;
}

}
return 0;

}

předem děkuji za odpovědi

Předmět Autor Datum
Nó, nakonec jsem to vyřešil upravením podmínky v posledním cyklu: if((vpole[ii]!=0)&&(vpole[ii]<dok)…
SiBa 15.10.2016 11:59
SiBa
Nó a ten crash byl asi kvůli funkce cistka: void cistka() { system("CLS"); } Ale nějak mi to nejde…
SiBa 15.10.2016 12:01
SiBa
Nelezeš takhle náhodou indexem mimo rozsah toho pole?
Wikan 15.10.2016 17:06
Wikan
A jo, v posledním cyklu jsem nastavil špatnou proměnnou a když jsem si tam přidal if, tak mě to nena… poslední
SiBa 15.10.2016 19:19
SiBa

Nó, nakonec jsem to vyřešil upravením podmínky v posledním cyklu: if((vpole[ii]!=0)&&(vpole[ii]<dok)), aby to ty velká čísla co se tam mě z neznámých důvodu objevují nevypsalo. Ale stejně mě zajímá proč se tam objevují.

Zpět do poradny Odpovědět na původní otázku Nahoru