Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 7 odgovora
  • 2.856 pregleda

Najnovija ↓

kako otkriti gde baguje? 01.04.2008. u 07:55 · pre 226 meseci
izmenjeno 1 put, poslednji put Shejtan Slavisha 01.04.2008. u 08:12
  1. Shejtan Slavisha01.04.2008. u 08:12zapis iz teksta poruke
#1
Problem je sledeci..
Pokushavam da uradim seminarski rad, i mislim da nema potrebe da naglashavam koliko mi je frka sa vremenom..tj vreme koje mi je preostalo se meri satima..
Ovo je konzolna verzija, gde je .cpp source, ova 2 .h su headeri..
kod je prilichno dugachak, zato ga stavljam u attach..Kada pokrenem konzolnu verziju, prevede je bez prijavljenih greshaka..
Krene sa ispisom texta i uchitavanjem podataka.
Slom nastaje kada treba da formira objekat tipa OrthogonalPolinom..Neshto u tom konstruktoru ne valja, celu noc sam pokushavao da provalim shta i ne ide..
Chak sam probao da izbacim ceo deo koda gde je rachunski deo ( stavio sam ga kao komentar ) ali je opet zabagovao..

Rachunski deo je 99,99% ispravan, komplet je prepisan iz jednog drugog rada koji je ok, tako da ako se neko potrudi da mi pomogne, ne bi trebao da se prepadne od one gomile koeficijenata..Dakle, sam rachun bi trebao da je ok, dodele i smeshtanje sam radio ja tako da je tu mogucnost greshke poprilichna :-D

Dakle, unapred zahvalan za svaku pomoc..
Pozdrav

P.S.
Zaboravio sam da napomenem, projekat se radi u VS.NET 2003
Re: kako otkriti gde baguje? 01.04.2008. u 08:30 · pre 226 meseci #2
Recimo, ovde nisi instancirao "nule" za onaj slucaj pod "else", i to sigurno proizvodi Access Violation. Dakle, treba da ga instanciras zajedno sa "coefs". (pogledaj u nekom drugom konstruktoru u tvom primeru kako je to uradjeno)

Citat:

Code:

Polinom(int d=0)
{
    int  j ;     
    degree = d ;
    coefs = new double[degree + 1] ; 
     for( j=0 ; j <= degree ; j++ )
        coefs[j] = 0.0 ;
     if ( degree==0 )
        {   nule = new double[1] ;
            nule[0] = 0.0;
        }
     else
        {  for( j=0 ; j < degree ; j++ ) 
          nule[j] = 0.0 ;
        } 

}

Re: kako otkriti gde baguje? 01.04.2008. u 08:39 · pre 226 meseci #3
Dalje, zašto negde imaš:
for( j=0 ; j <= degree ; j++ )
... a negde:
for( j=0 ; j < degree ; j++ )
?

Zašto parviš razliku u veličini:
coefs = new double[degree + 1] ;
nule = new double[degree] ;
... kad kroz istu petlju dodela ide sinhronitovano?
Re: kako otkriti gde baguje? 01.04.2008. u 08:56 · pre 226 meseci #4
Pa polinom od n+1 koeficijenata ima n nula..zato se pri inicijalizaciji prvih n chlanova oba niza postavljaju na 0.0, a na kraju se tom n+1-om chlanu, kojeg nule nema, posebno dodeli vrednost..

Ovo drugo sam izmenio, sada i u else delu ima odgovarajucu inicijalizaciju, al problem je i dalje tu..
Re: kako otkriti gde baguje? 01.04.2008. u 09:17 · pre 226 meseci #5
Pa daj neki primer, šta unosiš od vrednosti, na primer (0,1,1,0) kad blokira pa da se vidi.

( izbaci provremeno destruktor ~Polinom(), vidim da i tu ima neka muka )
Re: kako otkriti gde baguje? 01.04.2008. u 09:38 · pre 226 meseci #6
Mislim, izbaci ga celog:
Code:

/*
~Polinom()

{
    delete [] coefs ;
}
*/

Re: kako otkriti gde baguje? 01.04.2008. u 14:19 · pre 226 meseci #8
..nije problem ni u destruktoru klase Polinom, izbacio sam ga..

@NastyBoy - ne znam na shta tachno mislish..Probao sam da preko step into komande pratim kako se ponasha program, odatle i moj zakljuchak gore: chim udje u Try blok i pokusha da napravi elemenat sa unetim parametrima, preskochi sve ispod i ide na catch(..) "nepoznata greshka"...

Isto se deshava sa milion razlichitih unesenih kombinacija ulaznih parametara..
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme