Anonymní profil Jan – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Jan – Programujte.comAnonymní profil Jan – Programujte.com

 

Příspěvky odeslané z IP adresy 62.209.204.–

Jan
C / C++ › Alokovaný rozsah v paměti
29. 11. 2018   #382456

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.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý