Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: ongelma??

Sivun loppuun

siina [25.07.2005 18:56:10]

#

mä en ymmärrä erästä asiaa että joissain esimerkeissä on näin #include <iostream.h> ja joissain #include <iostream> mitä eroa niis on??mulla on dev-c++ ja se antaa virheen ku pistän <iostream.h>.. ja muuten kysyisin viel sen että ku yritän esimerkiksi kirjoittaa legendaariset sanat HEllo World niin se ikkuna avautuu mutta se häviää heti siitä näkyy vaan vilaus. mitä voin tehdä jotta se ei häviä? kiitos

Blaze [25.07.2005 19:01:23]

#

siina kirjoitti:

se ikkuna avautuu mutta se häviää heti siitä näkyy vaan vilaus. mitä voin tehdä jotta se ei häviä?

http://pp.kpnet.fi/blaze/codefaq/#justflashes

Grusifix [26.07.2005 23:03:21]

#

#include<iostream.h> on C:n tapa sisällyttää otsikkotiedosto. C++ standardin mukainen on pelkkä #include<iostream>.

P.S. Etsi ja avaa iostream-tiedosto. Sisältö ei ole välttämättä mikään erityisen monimutkainen.

Metabolix [27.07.2005 10:40:12]

#

Tuo selostus meni minusta aavistuksen pihalle (tai oli vähän turhan yksinkertaistettu). Aivan samalla tavalla headerit liitetään molemmissa. Oikeasti syy on siinä, että aiemmasta iostream.h-tiedostosta puuttuu std-nimiavaruus, namespace std, eli kaikki määritellyt muuttujat ovat samassa maailmassa. Yhteensopivuuden takia uuden otsikon nimestä jätettiin .h pois. Kyseinen tiedosto löytyy juuri tuon nimisenä (iostream). Mingw:n C++:n include-kansiossa kyllä on backward-kansio, josta löytyy korvike vanhalle iostream.h:lle. Samalla tavalla kävi kaikille muillekin C++:n otsikoille. Ilmeisesti tämän jälkeen tehtiin kaikista C:n otsikoista samanlaiset päätteettömät versiot, jotka itse asiassa liittävät ohjelmaan noita alkuperäisiä versioita. Esimerkiksi cfloat-otsikon merkittävä sisältö on #include <float.h>

Sweiz [05.08.2005 22:39:16]

#

Joo, tyhmä kysymys, mutta miten mä saan avattua sen koodin siihen ikkunaan, missä näkyy se koodin tulos? :?

Zach [06.08.2005 13:57:12]

#

Kysymys ei (melkein) koskaan ole tyhmä, kunhan se vaan on ymmärrettävä...Tarkoitatko todella, että haluat valmiin ohjelman ikkunassa näkyvän saman ohjelman alkuperäisen lähdekoodin? Tämä onnistuisi ainoastaan tulostamalla se näytölle joko valtavalla määrällä tulostuskäskyjä tai kopioimalla erillisestä lähdekooditiedostosta; ainakaan .exe-tiedostosta ei saa c++:aa mitenkään irti. En kyllä keksi tuollaiselle toiminnalle mitään perustelua, vai ymmärsinkö edes sinne päin?

hunajavohveli [06.08.2005 14:27:34]

#

Zach kirjoitti:

Tämä onnistuisi ainoastaan tulostamalla se näytölle joko valtavalla määrällä tulostuskäskyjä

Ei onnistuisi. Tulostuskäskyt olisivat myös osa ohjelman koodia, joten nekin pitäisi tulostaa. Sitten niiden tulostamiseen käytettävä koodi pitäisi myös tulostaa jne. Siitä ei tulisi loppua ollenkaan.

Zach kirjoitti:

tai kopioimalla erillisestä lähdekooditiedostosta

Tämä sen sijaan onnistuu. Siis jos tässä nyt sitä edes haettiin.

Sweiz [06.08.2005 20:19:54]

#

"Kysymys ei (melkein) koskaan ole tyhmä, kunhan se vaan on ymmärrettävä...Tarkoitatko todella, että haluat valmiin ohjelman ikkunassa näkyvän saman ohjelman alkuperäisen lähdekoodin? Tämä onnistuisi ainoastaan tulostamalla se näytölle joko valtavalla määrällä tulostuskäskyjä tai kopioimalla erillisestä lähdekooditiedostosta; ainakaan .exe-tiedostosta ei saa c++:aa mitenkään irti. En kyllä keksi tuollaiselle toiminnalle mitään perustelua, vai ymmärsinkö edes sinne päin?"

Eikun sitä vaan, että mä en tiedä, miten mä saan avattua koodini exe-tiedostoon, eli että mä näkisin sen koodin tuloksen? Toivottavasti ymmärsit. Ja minulla sitten on se dev-c++...

Zach [06.08.2005 21:53:17]

#

Eli haluat simppelisti avata valmiin ohjelman? Execute-valikosta klikkaat Compile&Run tai painat F9:ä, jolloin kääntäjä kääntää koodin (=compile) ja avaa valmiin exen.

Sweiz [07.08.2005 16:54:37]

#

Kiitti, joo tota minä tarkoitinkin... ;)

Sweiz [07.08.2005 20:24:32]

#

(Mä en jostain syystä pysty muokkaamaan edellistä viestiä...!)

Nyt siihen tulee sellainen virheilmoitus kuin: "Source file not compiled". Ja ei siinä mielestäni mitään vikaa ole, jos se koodi on:

#include <stdio.h>
int main (void){
printf("Hello World!");

return 0;
}

hunajavohveli [07.08.2005 20:31:54]

#

Viestin muokkausaika on tunti lähettämisestä.
Tuo ilmoitus tarkoittaa, että se ei ole jostain syystä kääntänyt sitä lähdekoodia. Antaako se siihen alas jotain logia kääntöprosessista? Siitä selviää, missä kohtaa menee vikaan.

Sweiz [07.08.2005 20:42:23]

#

Eipä anna... Siellä alhaalla on kyllä sellainen, kuin compiler ja compile log...

Ja sieltä compiler-kohdasta löytyy myös tälläinen: Message: Määriteltyä tiedostoa ei löytynyt.

Zach [07.08.2005 22:13:19]

#

Onhan sulla projekti tehtynä (file->new->project)- yksittäisiä tiedostoja ei aina voi kääntää. Jos on, niin poista projektin kansiosta kaikki siihen liittyvä (mm. makefile ja .o-päätteinen tiedosto) lukuunottamatta .cpp- ja .dev-tiedostoja ja yritä kääntää uudestaan.

Sweiz [07.08.2005 22:27:59]

#

Ei se vaan onnistu niinkään... >:( Poistanko mä myös muut yksittäiset tiedostot?

EDIT: Mä löysin tälläisen tekstipätkän dev-cpp: n FAQ sta:
I am using Windows 98 and I cannot compile

Some users have report that you need to apply several patches to your system. Here is the list of them, they can be found on Microsoft Windows 98 download site

47569us.exe - labeled as Windows98SE shutdown
dcom98.exe - see also this page
DX81eng.exe - latest version of DirectX (this is 11MB, and cannot be uninstalled without reinstalling Windows 98. You might want to try this one last in case the other above didn't work, as it should update many parts of the system).

Mitäs tää voisi tarkoittaa, mulla on 98...

Zach [07.08.2005 22:40:59]

#

Ei noilla patcheilla ja Directx:llä mitään vaikutusta tähän pitäis olla. Yritäs vielä tehdä uus kansio, siirtää tiedosto.cpp ja tiedosto.dev sinne ja kääntää.

Sweiz [07.08.2005 23:15:08]

#

Mitä mä niihin koodaan? Ja tarkoitatko sillä sanalla kääntää sitä, että mä katon koodin tuloksen? Nyt siihen ei tule muuten enään sitä virhesanomaa, mutta sinne alas tulee kuitenkin viesti "Määritettyä tiedostoa ei löydy"

ZcMander [08.08.2005 09:52:18]

#

Tai sitte se voi johtua siitä että mukana ei ole kääntäjää. Minulle on käynyt nuin :)

Zach [08.08.2005 10:50:48]

#

Mikä versio sulla on Dev-cpp:sta?

Zach kirjoitti:

Yritäs vielä tehdä uus kansio, siirtää tiedosto.cpp ja tiedosto.dev sinne ja kääntää.

Niin, otat siis uuden projektin, lisäät siihen uuden tiedoston(File->New->Source file), kirjoitat siihen ton Hello World-koodin, tallennat tiedoston ja sitten "katot koodin tuloksen" eli käännät. ;D

Sweiz [08.08.2005 12:12:10]

#

Dev-C++ 4.9.9.2 on mun versio.
Nytten, siinä ei ole enään edes sitä compile & run, tai siis sitä ei voi valita enään...

Metabolix [08.08.2005 16:34:28]

#

Mutta latasitko version, jossa on kääntäjä?

Zach [08.08.2005 22:41:46]

#

Dev-cpp:n kansiossa pitäisi olla bin-kansio, jossa on on reilun 8 megan edestä pääasiassa Mingw-kääntäjään liittyviä tiedostoja. Jos ei ole, lataa vaikka koko paketti osoitteesta http://prdownloads.sourceforge.net/dev-cpp/devcpp-4.9.9.2_setup.exe

Sweiz [08.08.2005 23:25:55]

#

Okei, mä teen siis nyt näin:
Mä poistan mun aikaisemman version kokonaan, ja lataa tuon yllä olevan linkin koneelleni. Kiitti, kun jaksatte neuvoa! :) Se versio on sitten Dev-C++ 5 beta 9 release (4.9.9.2), tässä asentaessa kun katson... Jos se mitään kertoo...

Noniin, ei toimi edelleenkään se compile & run, eikä enään voi tehdä edes uutta projektia... Hmm...

EDIT: On joo Bin-kansio, jossa on 32 objektia. Oiskohan mulla vain väärät asetukset tmv...

Sweiz [09.08.2005 10:43:19]

#

Tämmöinen viesti löytyi sitten compile logista:

Compiler: Default compiler
Executing g++.exe...
g++.exe "C:\WINDOWS\Työpöytä\Dev-Cpp\koe.cpp" -o "C:\WINDOWS\Työpöytä\Dev-Cpp\koe.exe" -I"C:\DEV-CPP\lib\gcc\mingw32\3.4.2\include" -I"C:\DEV-CPP\include\c++\3.4.2\backward" -I"C:\DEV-CPP\include\c++\3.4.2\mingw32" -I"C:\DEV-CPP\include\c++\3.4.2" -I"C:\DEV-CPP\include" -L"C:\DEV-CPP\lib"
Execution terminated

Mulla on myös sellainen kansio, kuin mingw32, jossa sitten erikseen bin-kansio, jossa on 9 objektia...

Ja sitten vielä kysymys:
Eikös system("CLS"); tyhjennä ruudun kokonaan?
Mitä tekee system("PAUSE");?
Onko sellaista, kuin system("PAUSE > NUL");? Mitä se tekee?

Ja laitetaan nyt vielä tänne, että se toimiikin nyt täydellisesti, muttei vieläkään compile run??!!

Siihen tulee se sama vanha tuttu Project is not compiler...

Blaze [09.08.2005 12:48:59]

#

flip92 kirjoitti:

Eikös system("CLS"); tyhjennä ruudun kokonaan?

Eikun se tulostaa "bash: CLS: command not found"

flip92 kirjoitti:

Mitä tekee system("PAUSE");?

Tulostaa "bash: PAUSE: command not found"

flip92 kirjoitti:

Onko sellaista, kuin system("PAUSE > NUL");? Mitä se tekee?

Tallentaa tekstin "bash: PAUSE: command not found" tiedostoon NUL.

system():ä ei kannata käyttää. Yleensä tuollaisille löytyy ihan yleisesti toimivat vastineet.

Sweiz [09.08.2005 12:52:39]

#

Okke, no mikäs sitten tyhjentää sen ruudun?

Heikki [09.08.2005 12:58:34]

#

Voit esimerkiksi käyttää NCursesia/PDCursesia johon löytyy opas putkan opasalueelta. Köyän hiemen versio on tulostaa kasa rivinvaihtoja \n jolloin konsoli "tyhjenee".

Ja noista system()-funktioista, ne suorittavat (tai yrittävät suorittaa) parametrina annetun komennon, ja jos ks. komentoa ei löydy niin hommahan ei toimi. Siksi pitäisi käyttää parempaa tapaa kuten cursesia.

Sweiz [09.08.2005 13:05:10]

#

Minä kirjoitti:

Ja laitetaan nyt vielä tänne, että se toimiikin nyt täydellisesti, muttei vieläkään compile run??!!

Joo, elikkäs tulipas epäselvästi... Tässä tarkoitan siis sitä, ettei mun dev-C++ :ssassa ole muuta vikaa, kuin se, että se ei käännä sitä..... <:(

Sweiz [10.08.2005 17:57:16]

#

Hehe, nyt toimii, vain väläyksenä*...
Mulla oli sitten kuitenkin ne väärät asetukset...(http://csjava.occ.cccd.edu/~gilberts/devcpp5/)

*Mulla on suomenkielinen hakemisto, missä tämä siis sijaitsee? Avaa uusi komentorivi (Windows 9x:ssä Start > Run > command, NT:ssä Start > Run > cmd), vaihda hakemistoon, jossa ohjelmasi on ja aja kirjoittamalla ohjelman nimi

Eipä ole enään bugista ongelmaa... (latasin koko ohjelman uusiksi)

Blaze [10.08.2005 19:34:32]

#

Enpä ois uskonu, että Start > Runin kääntäminen kenellekään tuottaisi ongelmia o_O

Käynnistä > Suorita

Sweiz [10.08.2005 19:37:30]

#

Jaa, no mulle se tuottaa :P

Mitens mä pääsen nyt sitten kattomaan sen koodini tuloksen ilman, että se vaan vilahtaa? Mä en nyt oikein tajua..?

PS: Se vilahtaa, vaikka mä avaankin sen suorita - osiosta

Blaze [10.08.2005 21:14:53]

#

Tarkoitus on siis avata terminaali-ikkuna ("MS-DOS Kehote", "Komentokehote") ja suorittaa se ohjelma siinä.

Sweiz [10.08.2005 21:40:00]

#

Okei, katotaan. Sorkke, että oon näin tyhmä ;P

Pitäskö siihen laittaa se tiedoston sijainti? Siinähän ei toimi Ä eikä Ö, joten jos tiedosto on C:\WINDOWS\työpöytä\Dev-Cpp\..... niin se ei toimi
Ja siinä alussahan on C:\WINDOWS>, niin eikö se tarkoita, että sen alun (mikä tuossa nyt lukee ) voi jättää pois?

Blaze [10.08.2005 22:29:14]

#

No okei, pikakurssi Windowsin komentorivin käytöstä:

C:\Windows> siinä alussa kertoo, että olet hakemistossa c:\Windows.
cd C:\Temp vaihtaa nykyisen hakemiston c:\Temp:ksi..
cd system32 vaihtaa nykyisessä työhakemistossa olevaan system32 -nimiseen hakemistoon.
cd .. vaihtaa yhtä hakemistoa ylöspäin, ts. jos olet tällä hetkellä c:\Windows:ssa, nykyiseksi työhakemistoksi tulee c:\

Ohjelma ajetaan kirjoittamalla ohjelman nimi. .exe -loppu on vapaaehtoinen. Ohjelma pitää olla joko %PATH% -ympäristömuuttujan sisältämässä hakemistossa tai nykyisessä hakemistossa.
Ts. jos haluat ajaa c:\Documents and Settings\flip92\koodaus -hakemistossa olevan hello.exe:n, komennat

cd "c:\Documents and Settings\flip92\koodaus"
hello

Mitä ääkkösiin tulee, niin niiden pitäis toimia, joku Windows-käyttäjä kertokoot, mikseivät, ja miten ne saa kuntoon.

Sweiz [10.08.2005 22:38:14]

#

Hmmm... Merkkiä ":" ei löydy mistään...

Blaze kirjoitti:

Ohjelma pitää olla joko %PATH% -ympäristömuuttujan sisältämässä hakemistossa tai nykyisessä hakemistossa.

%PATH% - ympäristömuuttuja? Mikä se on? Miten teen oman hakemiston? Olen ihan (lähes) pihalla...

Blaze [11.08.2005 00:13:35]

#

flip92 kirjoitti:

Hmmm... Merkkiä ":" ei löydy mistään...

Arvaan: shift+ö

flip92 kirjoitti:

%PATH% - ympäristömuuttuja? Mikä se on?

Mietin kahesti, kannattiko tuota mainita. Ei ilmeisesti olis. Unoha se, oleellisempi asia oli se jälkimmäinen.

flip92 kirjoitti:

Miten teen oman hakemiston?

mkdir munhakemisto

Sweiz [11.08.2005 11:04:58]

#

Noin, nyt olen tehnyt sen yksinkertaisen hakemiston, entäs sitten?

Metabolix [11.08.2005 11:36:58]

#

Tästä ketjusta alkaa jo kadota järki.

Ilmeisesti haluat siis siirtyä kansioon "C:\WINDOWS\Työpöytä\Dev-Cpp\", vai kuinka? Silloin kirjoitat komentokehotteeseen näin:
cd C:\WINDOWS\Työpöytä\Dev-Cpp
Sen jälkeen voit ajaa ohjelmasi (jos se on kääntynyt) kirjoittamalla sen nimen.

Miksi muuten halusit tehdä uuden kansion? Ja onnistuuhan se ilmankin komentokehotetta :D

Sweiz [11.08.2005 11:39:02]

#

Miten mä sitten käytän Ä :tä ja Ö :tä? :?
Niinhän mä haluaisinkin tehdä...

Metabolix [11.08.2005 13:17:01]

#

No helpoimmalla pääset, kun siirrät tuon työpöydällä olevan kansion jonnekin muualle ä:n ja ö:n ulottumattomiin. Vaikkapa "C:\Ohjelmointi" tai jotakin vastaavaa. Tai sitten voit ruveta sörkkimään config.sys- ja autoexec.bat-tiedostoja, että saat koodisivuasetukset kohdalleen.

Sweiz [11.08.2005 16:30:03]

#

Niin pääsenkin...
Laitoin hakemistoon C:\Dev-Cpp ja nyt se toimii...

Sweiz [11.08.2005 18:12:58]

#

En viitsinyt tehdä uutta aihetta tästä...

Nyt olen huomannut sellaisen jutun, että Dev-Cpp EI hyväksy mm. cin ja cout komentoja. Siitä johtu suuriksi osiksi se, ettei se myöskään kääntänyt koodia. Mitä teen, että se hyväksyisi sen? Eikun mun Dev-Cpp on toimiakseen vaan silloin kun se haluaa! Nyt se ei toimi. Äsken se kerran toimi, kun olin painanut sen compileen kolme kertaa...

squid [11.08.2005 18:27:12]

#

Käytä koodin alussa(includen jälkeen) using namespace std;

#include <iostream>

using namespace std;

int main() {
  int nro;
  cout << "Anna numero\n";
  cin >> nro;
  cout << nro;
  systen("pause");  /* Tämä toimii vain windowsissa, ja komentorivi ajossa */
  return EXIT_SUCCESS;
}

Sweiz [11.08.2005 19:15:43]

#

Joo, toi toimii, kiitti neuvosta ;)

Paitsi että siinä oli virhe: systen("pause");
Onneksi huomasin ;D

Sharph [11.08.2005 19:30:26]

#

Ja jollet halua käyttää using namespace-viritelmää, niin std::cout ja std::cin coutin ja cinin tilalle ja using namespace std; voi unohtaa. Minun mielestäni tämä tapa pitää koodin selkeänä, ettei mene nimiavaruudet sekaisin.

Sweiz [11.08.2005 19:37:42]

#

No, mä käytän mielummin tuota using namespace std-menetelmää, mutta kokeilenhan mä myös tuota std::cout - menetelmää..

Metabolix [12.08.2005 00:03:16]

#

Muistaakseni kelpaa myös using std::cin; ja using std::cout; (ja pysyvät nimiavaruudet koossa).


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta