» »

C++ prevajalnik

C++ prevajalnik

jernejf ::

LP!
Imam en čudn problem. Del kode:
case '5': //Izpis povprecja upornosti
{
double povpr;
for(int i = 0; i < 5; i++)
{
upor[i] = napetost[i]/tok[i];
povpr += upor[i];
}
cout -- "Povprecna upornost znasa : " -- povpr/5 --" ohmov."--endl;
break;
}

Cel program mi prevede v Dev++ in Visual studio. Exe ki ga je prevedel dev, dela normalno, tistega ki pa visual studio, mi pri izvajanju(ne pri prevajanju) javi neko napako:




A ve kdo kaj je vzrok temu in kako bi napisal tako, da bo delalo tudi v studiu. Hvala in LP!

drola ::

double povpr = 0;
https://drola.si

Jean-Paul ::

Spremenljivke povpr nisi inicializiral. Samo VS debugerju se lahko zahvališ, da te je opozoril na napako.

ups, me je prehitel drola

jernejf ::

Joj hvala...sem malo iz prakse pa pozabljam včasih kako stvar:8) :8)
LP!

jernejf ::

LP!
Spet imam isti problem pa ne morem ugotoviti kje ni definirano!
Dev++ prevede normalno visual pa javi napako.;((


Del kode:
struct vozilo
{
...
};

void vnos(vozilo avtomobil)
{
...
}

void main()
{
vozilo avtomobil;
vnos(avtomobil); // TU NAJ NEBI BILO VREDU
...
}
Hvala za pomoč. Pa prosim ne se jezit:8)

bozjak ::

v argumentinh napisi "struct vozilo avtomobil" . Nisem cisto siguren da je to to kar te muci, a drugega si ne morem predstavljati, da bi bilo.

LP
http://upor.blogec.si
http://bozjak.deviantart.com

Vesoljc ::

hmm, najprej si preberi kaj o prenasanju parametrov (po vrednosti VS po referenci). razlika je pa nekako taka:
void func1(int var1)
{
   var1++;
}
void func2(int &var1)
{
   var1++;
}
int main()
{
   int a = 0;
   func1(a);
   cout << a << endl;
   func2(a);
   cout << a << endl;
}


uganes kaksen bo izpis?

in tukaj potem pride sele tvoj problem, namrec prevajlanik (pravzprav ti tole ne javi prevajalnik, saj gre za rt check), brihten kolikor je, te opozori da skusas uporabiti (prenasas jo namrec po vrednosti!) neinicializirano spremenljivko.
Abnormal behavior of abnormal brain makes me normal...

jernejf ::

Ja v prvem coutu izpiše 0, v drugem pa 1. Al se motim. No hvala - moram naštudirat zakaj je mora tu biti prenos po referenci. Najlepša hvala. LP!

Jean-Paul ::

Tako kot ti je že razložil Vesoljc ...

Spet gre za podoben problem, ki si ga že imel. Načeloma v kodi ni napake (vsaj v tem delu, ki si ga navedel). Obstaja pa nevarnost, da boš uporabil nekaj, kar nisi inicializiral in boš potem dobil regularen rezultat, ki pa ne bo "pravi". Očitno to Visual Studiu ni všeč in to javi v obliki run-time napake.

Glede na prenašanje argumentov po vrednosti ali referenci pa tako. Ni dovolj, da si ugotovil, kaj naredi Vesoljčev program, ampak moraš vedeti, zakaj naredi ravno to. Ko boš to dobro razumel, boš tudi natančno vedel, kakšen način prenašanja izbrati v konkretnih primerih. BTW, prenašanje po referenci poznata C++ in Pascal, medtem ko C pozna le prenašanje po vrednosti. Kaj misliš, s čim nadomesti C to svojo "pomankljivost"?

IMO je za programerja zelo dobro, če se na svoji učni poti spozna s C-jem, saj potem bolj razume prednosti in pomankljivosti raznih "čistejših" višjenivojskih jezikov (npr. Java, Python, Lisp, Haskell) in se laže odloča, kateri je najbolj primeren za konkreten problem.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Grafika

Oddelek: Programiranje
201695 (1047) aaaaa93
»

Visual Studio C++ MessageBox izpis večih spremenljivk

Oddelek: Programiranje
181715 (1456) spinner
»

[c++] extern "C"; error 2598

Oddelek: Programiranje
51040 (973) TheCyborg
»

[C++] Thinking in C++

Oddelek: Programiranje
101119 (984) rozha
»

c++ datoteke

Oddelek: Programiranje
464039 (3528) Vesoljc

Več podobnih tem