» »

[C++] Linux

[C++] Linux

D-factor ::

Pozdravljeni!
Imam en problemcek in sicer, napisal sem en programcek v Visual C++ in ko ga hocem zgcc-jat na Linuxu mi javi kup napak.

Program je:
#include <iostream>  (OKLEPAJE sem odstranil, ker jih jemle kot html)

int fib(int n)
{
	if ((n==0) || (n==1))
    return n;
	if (n(manjsi od)0)
	return fib(n-1)*fib(n-2);
}

int main()
{
	int n=0;
	cout "Vpisi N: ";
	cin n;
	cout "N-ti clen zaporedja je: " fib(n);
	return 0;
}


Zanima pa me kaj morem popravit, da bom lahko normalno prevedo program na Linux sistemu...
Hvala za odg!
  • spremenilo: CCfly ()

BigWhale ::

Sem v enem komenatrju prej povedal, da imam kristalno kroglo na poliranju in je ta teden ne morem uporabljati. No, zato bi bil na moc vesel, ce bi dejansko povedal kaksne napake ti javi prevajalnik... ;)

D-factor ::

gcc fib.c
fib.c:1:21: error: iostream.h: No such file or directory
fib.c: In function âmainâ:
fib.c:16: error: âcoutâ undeclared (first use in this function)
fib.c:16: error: (Each undeclared identifier is reported only once
fib.c:16: error: for each function it appears in.)
fib.c:16: error: âendlâ undeclared (first use in this function)
fib.c:17: error: âcinâ undeclared (first use in this function)

BigWhale ::

Preimenuj program iz fib.c v lala.cpp in potem prevedi z ukazom make lala. Pa cout/cin je definiran v std namespace, tako, da moras se to popraviti.

veteran ::

Uporabi g++, ne gcc

g++ -Wall fib.cpp

veteran ::

za vnos kode na ST pa tag st.koda C, klik

Quikee ::

Pa se funkcije za fibonaccija nimas prav...

return fib(n-1)*fib(n-2);
mora bit
return fib(n-1)+fib(n-2);

balocom ::

Včasih hoče newline na konc (enter stineš za novo vrstico po zadnem } )
V svetu brez googla bi bil najbolj uporabljen ukaz v bash-u ukaz man

OwcA ::

Pa se funkcije za fibonaccija nimas prav...

Celotna funkcija je čudna:
if (n(manjsi od)0)

n ni nikoli < 0.
Otroška radovednost - gonilo napredka.

Volk| ::

Da ne bom odpiral nove teme....
Vidim da tukaj nekateri zelo dobro obvladate C++
Jaz imam v juniju izpit in bi bil vesel ce bi mi kdo pomagal.
Primer naloge ki je lahko na izpitu:
Izdelajte program za obdelavo podatkov tekmovanja v smučarskih skokih.
Tekmovalci skačejo trikrat. Sodniki vsakokrat izmerijo dolžino skoka in ocenijo tekmovalčev slog; skupna ocena tekmovanja je vsota dolžine in ocene za slog. Program naj izpiše vmesne uvrstitve in končnouvrstitev tekmovalcev, pri čemer upoštevajte le dva tekmovalčeva najboljša skoka. Pri končanem izpisu naj bodo poleg vrstnega reda razvidni tudi naslednji podatki: dolžini in oceni za slog v najboljših dveh skokih in tekmovalčeva uvrstitev po vsakem skoku.


Ce kdo zna resit take naloge naj se javi. Bo dobil lep honorar!
Hvala

sid_dabster ::

Ok, pa med drugim si pozabil namespace std uporabiti. Za cin in cout.
Fallen beyond all grace deeper and deeper
The sound of her own blood dripping
Like sacred tears from a bleeding rose...( Embraced, Within)

BigWhale ::

Ne, ni pozabil uporabiti namespace std! Tega se nikoli ne pozabi, takrat, ko tega ne napises, takrat delas prav! ;>

Gundolf ::

@Volk|: morda bi bil otvojo temo bolj smiselno nadaljevati tule: (C++)(Naloga) Smucarski skoki (struk. programiranje)
Čeprav sem siguren, da je bilo še nekaj skoraj identičnih tem. Očitno je zelo popularna naloga tole.

@D-factor:
> fib.c:1:21: error: iostream.h: No such file or directory
Gcc je od sedaj dalje moj najljubši prevajalnik! Končno so se znebili iostream.h;) (uporabi #include <iostream> namesto #include <iostream.h>)

fx ::

V linuxu programe prevajam tako g++ ime_programa-verzija.cpp -o ime_programa-verzija.o kako naredim če želim zraven prevesti moj.cpp ki je shranjen v mapo /doc/moj_cpp

ker će samo napišem #include "moj.h" mi ven vrže da ne obstaja.

Lp,

Gundolf ::

> V linuxu programe prevajam tako g++ ime_programa-verzija.cpp -o ime_programa-verzija.o
No ja... To velja za executable, pri čemer ti tisti .o v tvojem imenu executabla dela malo zmede (beri: je totalno odveč ker zavede bralca)

Če imaš več cpp fajlov (kot se mi zdi je v tvojem primeru), potem 'moraš' (v bistvu je načinov več, predstavljeni je le najbolj pogost) takole:
g++ -c ime_fajla_x.cpp -o ime_fajla_x.o
Opaziš switch -c ? S tem delaš .o fajle. To ponoviš za vse tvoje .cpp fajle.
Potem pa še zgradiš executable:
g++ ime_fajla_1.o ime-fajla_2.o ... ime_fajla_n.o -o ime_programa
Tule pa ni več -c switcha, na tem mestu le združiš že prevedene (po slovensko skompajlane) object fajle v en executable. V bistvu gre za linkanje, čeprav verjetno ne le za linkanje (tok detajlov pa ne poznam).

Lahko pa tisti prvi korak izpustiš in enostavno v drugem koraku .o zamenjaš s .cpp in direktno prevedeš množico soursov v en executable.

Zgodovina sprememb…

  • spremenil: Gundolf ()

fx ::

Gundolf hvala za pomoč.

Sedaj pa me samo zanima kako v linuxu nastavim da se moj program avtomatično sam zažene ob zagonu.

Lp,

tecumseh ::

Dodas ukaz v /etc/rc.d/rc.local.

CCfly ::

Ali pa uporabiš katerega od teh nasvetov.
"My goodness, we forgot generics!" -- Danny Kalev


Vredno ogleda ...

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

[c++] segmentation fault?????

Oddelek: Programiranje
212228 (1772) Vesoljc
»

DevC++ težava?

Oddelek: Programiranje
181613 (1481) Gundolf
»

Pomnilnik in c++

Oddelek: Programiranje
241907 (1616) Gundolf
»

[C++] NULL: Undeclared identifier - HELP!

Oddelek: Programiranje
101149 (1087) CCfly
»

domači benchmark program

Oddelek: Programiranje
71040 (894) ruph

Več podobnih tem