Zdravim,
mám napsat program do školy pro výpočet Cosinovy míry podobnosti. Program jsem napsal a v CodeBlocksu vypadá, že je vše funkční. Program prostě dělá to co má. viz. kod programu.
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
int main()
{
double n,y, vektorovySoucin;
vektorovySoucin = 0;
int vstup;
cin >> vstup;
cout << fixed << showpoint << setprecision(3);
if (cin.fail() || vstup <0 ){
cout << "Nespravny vstup." << endl;
return 0;
}
//Naplneni pole A a B
long double * poleA = new long double [vstup];
for ( int i=0; i<vstup; i++){
cin >> poleA[i];
if (cin.fail()){
cout << "Nespravny vstup." << endl;
return 0;
}
}
long double * poleB = new long double [vstup];
for ( int i=0; i<vstup; i++){
cin >> poleB[i];
if (cin.fail()){
cout << "Nespravny vstup." << endl;
return 0;
}
}
// vektorovy soucin
for (int i=0; i<vstup; i++){
long double hodnota = poleA[i] * poleB[i];
vektorovySoucin = vektorovySoucin + hodnota;
}
// vektor1
for (int i=0; i<vstup; i++){
long double hodnota;
hodnota = pow (poleA[i],2);
n = n + hodnota;
}
//vektor2
for (int i=0; i<vstup; i++){
long double hodnota;
hodnota = pow (poleB[i],2);
y = y + hodnota;
}
long double V1 = sqrt(n);
long double V2 = sqrt(y);
//Vypocet CSM
long double CSM = ((vektorovySoucin)/(V1*V2));
cout << "CSM: " << CSM << endl;
delete[] poleA;
delete[] poleB;
return 0;
}
Pokud, ale "zdroják" vložím do progtestu tak mi program spadne. V zadání mám napsané toto:
Program bude testován, zda správně pracuje s pamětí. Pokud paměť budete pracovat s indexy mimo alokovaný rozsah, program v testu práce s pamětí spadne. Dále bude kontrolováno, zda Váš program správně uvolnil veškerou dynamicky alokovanou paměť.
Důvod proč program spadnul se mi napíše toto:
Test 'Test náhodnými daty + test práce s pamětí': Program provedl neplatnou operaci a byl ukončen (Segmentation fault/Bus error/Memory limit exceeded/Stack limit exceeded)s
Čučím do toho už druhý den a nemůžu přijít na to co je špatně. Jsem začátečník a nemám tolik zkušenosti. Zdá se mi že tady tento problém je na mě jako na začátečníka dost velký a nebo se na to dívám ze špatného úhlu .
Byl by tu někdo tak hodný a dokazal by mi poradit?
Předem mnohokrát děkuji.