Naučit se SQL Naučit se SQL
Pouze tento týden až 80% sleva na SQL jazyky
Zamiluj si programování! Až 80 % bodů na prémiový obsah zdarma. Více informací
Avatar
Jan Michálek:29.11.2018 13:11

Zdravim,

(Předem se omluvám za založení vlákna se stejným programem, který jsem tu už jednou na foru vložil |-) )

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)

Č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.

Editováno 29.11.2018 13:13
Odpovědět 29.11.2018 13:11
Nemá cenu nic programovat, pokud se to neprogramuje geniálně.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.