-
PROHARDVER!
Új hozzászólás Aktív témák
-
bdav
őstag
hát éppen van lehetőség egy nyitott filestreamban hogy mozgasd az aktuális írási pozíciót (seegk és seekp) de nem ismerem ezt a lehetőséget jól, most találtam a googleval. nahh ha ez megvan és ismered a fájl sorainak hosszát, akkor sztem el tudsz navigálni a sorzáró \n (vagy \n\r) elé és oda beírhatsz, így kvázi új oszlopod lesz. (nézz utána ennek még, próbálgasd előtte)
de nekem szimpatikusabb lenne tömbben gyűjteni a kiírandó adatokat és csak a szim. végén létrehozni a fájlt
mod most látom h. jo lenne tömbbel is csak az implementácio hiányzik. nahh akkor:
Legyen egy tömböd:
[code] tomb[sorok][oszlopok] [/code]
ezt fel tudod tölteni két ciklussal:
[code]
for(oszlopok=0; oszlopok<maxoszlopok; oszlopok++) //ez léptet a köv. oszlopra
for(sorok=0; sorok<maxsorok; sorok++) // ez egy oszlop adatait szedi össze
tomb[sorok][oszlopok]= //ide elvégzed a müveletet
[/code]
kiíráskor az kell hogy egy sor kiírásakor minden oszlop első eleme szerepeljen
[code]
for(sorok=0; sorok<maxsorok; sorok++)
{
for(oszlopok=0; oszlopok<maxoszlopok; oszlopok++)
file<<tomb[sorok][oszlopok]<<'\t'; //kiirkálod az oszlopok első elemeit
file<<'\n'; //majd sor vége, köv. körben jönnek a 2. elemek.
}
[/code]
a lényeg h. a két tömbbejárásnál más legyen a tömbindexeken végigfutó ciklusok sorendje.
[Szerkesztve] -
Forest_roby
őstag
nem -ez így mégse jó -én nem erre gondoltam.
Azt kell csinálni, hogy egy oszlopba kiiratni az egésszet és a ciklusok között vmi elválasztót kiiratni - így tudod szeparálni a különböző tömböket. Ha ez kész egy másik progival megcsinálni a végső text filet. sztem máshogy nem nagyon megy - persze lehet memóriából is csinálni ez egészet.
1
2
3
4
5
6
-
7
8
9
10
11
12
-
...
és ebből:
1___7___x___y
2___8___z
3___9
.
.
.
.
.
mod: NEM! tömbökbe kellene menteni az oszlopok tartalmát, abbol meg pofon egyszerű lenne a mátrixot megcsinálni! A kérdés persze az hogy hány tömb kellene ehhez?
[Szerkesztve] -
Drótszamár
őstag
Oszloponként lemented, és a végén összegyúrod? Vagy az nem járható út ?
Esetleg egy jó nagy tömmbe eltárolni az egészet, és a végén kiírni fájlba?
Az a baj, hogy a textfile-ba amiket látsz oszlopokat, azok nem oszlopok, hanem érték,sortörés,érték,sortörés.... (tehát egy sima szekvencia. Az hogy a képernyőn hogy látod az most mellékes)
Neked ide kéne minden érték után beszúrni a következőt (esetleg valami elválasztó a kettő közé). Ez eléggé macerás. Mindeképpen valami memóriában összefésülős algoritmusban érdemes gondolkodni. Akár úgy, hogy egész fájl beolvas, a memóriában összefuttatod a 2 adatsort, majd újra kiírod. -
Jester01
veterán
1. using namespace
C++ban lehetőség van névterek használatára, hogy a névütközést el lehessen kerülni. (namespace akarmi { ... } )
Az alap könyvtár az ''std'' névteret használja. Using nélkül pl. ki kellene írni mindenhol, hogy std::cout. A using használatával az adott névtér elemeire közvetlenül lehet hivatkozni. Bizonyos (tipikusan régebbi) fordítók nem támogatják a névtereket vagy pedig az std névteret automatikusan úgy kezelik mintha lenne rá using.
2. a main paraméterei
A main függvény helyes prototítpusa az int main(int argc, char *argv[]), ahol argc a parancsori argumentumok száma és argv az argumentumok tömbje. A 0. indexű elem tipikusan a program neve. A függvény visszatérési értéke pedig egy int ami egy tetszőleges kód, tipikusan 0 a sikeres lefutás jelzésére.
A void main() forma véletlenül működik, mivel a C hívási konvenció ezt lehetővé teszi. Ilyenkor a parancssor nem érdekes és a visszatérési érték pedig valami véletlen szám lesz. Használata nem javasolt, visszatérési értéket mindig célszerű megadni, ha pedig nem akarod használni a parancssort, akkor egy int main(int, char**) sorral ez korrekten megtehető.
3. cstdlib
Igen, ebben a C stdlib függvényei érhetők el, többek között a system is. (Ez a példa szerintem nem volt szerencsés a kollega úr részéről, bár tény, hogy nem egyszerű billentyű lenyomásra várni C++ban.)
4. EXIT_SUCCESS
Ez egy előredefinált konstans a sikeres lefutás jelzésére (0). Lásd 2. pont.
MOD: hú de nagyon lassú voltam
[Szerkesztve] -
cucka
addikt
using namespace std;
azt jelenti, hogy a standard névteret használod. itt jól le van írva: [link] (egyszerű példák, utolsó paragrafus szól az std-ről)
int main(int argc, char *argv[])
a main paraméterei a program argumentumait jelentik, vagyis ezekből olvasható ki, hogy pl. milyen paraméterekkel indítottad el parancssorból a programodat. argc a paraméterek számát jelöli (arg. count) másik meg egy argc elemszámú tömb amiben maguk az argumentumok vannak (arg. value).
#include <cstdlib>
gondolom ez tartalmazza a system(''pause'') parancsot pl, ami a press any key-t okozza bezárás előtt?
igen. a system paranccsal külső parancsokat/programokat tudsz futtatni. a pause (beépített) parancs dos/win alatt, próbáld ki parancssorban. [link]
return EXIT_SUCCESS;
ez azt jelenti, hogy a main függvény EXIT_SUCCESS értéket ad vissza kilépéskor. ez az érték a 0. [link]
[Szerkesztve] -
Jester01
veterán
Itt valami telepítési probléma lett ...
Egyébként mint már említettem Cucka progija helyes, a te verziód az sajnos nem:
t.cpp:3: error: '::main' must return 'int'
t.cpp: In function 'int main()':
t.cpp:5: error: 'cout' was not declared in this scope
A könyvet nem kell kidobni, csak a using-ot kell mindig beírni, illetve a main függvényből int-et kell visszaadni. -
Lortech
addikt
-
Jester01
veterán
Csak a szokásos probléma: a fórummotor cseréli az idézőjelet két aposztrófra.
Vagyis Cucka példája jó, csak idézőjel kell. (gondolom copy&paste volt).
Ez linux alatt is ugyanez lenne (főleg mivel a devcpp gcc alapú ha jól tudom.)
MOD: Ha nem vagy linuxos, akkor miért Tux az avatarod? Mert aranyos?Engem nem zavar, nyugodtan hagyhatod, csak mást sugall...
[Szerkesztve] -
cucka
addikt
devcpp így kéne tudja futtatni, legalábbis nálam.
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
cout<<''Hello World!'';
}
iostream.h elvileg deprecated, ezért nem ajánlja használni
cout-ot pedig akkor találja meg, ha megmondod neki, hogy a standard namespace-ben van, vagy std::cout formában használod. (hű ez a mondat elég pongyolán volt megfogalmazva)
[Szerkesztve]
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
- GAMER PC : RYZEN 5 4500 / 16GB DDR4 / ASUS RX 480 8GB / WiFi / Bluetooth / 512GB M.2 SSD / 500GB HDD
- Dell Latitude 7390, 13,3" FHD IPS , I5-7300U CPU, 16GB DDR4, 512GB SSD, WIN 11, ( olvasd végig )
- Acer PREDATOR HELIOS NEO 16 / i9-14900HX / RTX 4070 (140W) / 1 TB SSD / 240HZ
- Topping A70 Pro fejhallgató erősítő
- Topping D70 Pro Octo DAC
- ÁRGARANCIA! Épített KomPhone Ryzen 7 9700X 32/64GB RTX 5070 12GB GAMER PC termékbeszámítással
- Bomba ár! Lenovo IdeaPad V110 - i3-6GEN I 4GB I 128GB SSD I 15,6" I HDMI I Cam I W10 I Garancia!
- TP-Link Archer C1200 Router eladó (1200 Mb/s Wi-Fi)
- Apple iPhone 13 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- BESZÁMÍTÁS! Asrock H310CM i5 9400F 16GB DDR4 240GB SSD 1TB HDD RTX 2060 Super 8GB Zalman Z1 700W
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest