-
Fototrend
Új hozzászólás Aktív témák
-
bandi0000
nagyúr
Elég béna példakód, de nagyjából ez a logika:
Kiinduló a main metódus, observableList minden egyes elemére megakarom hívni a doSometing() metódust, ami hívja a következőt és következőt
Arra akarok felíratkozni, amikor az összes elemen végrehajtotta az összes metódust
Sajnos az eredeti kódot nem tudom berakni, igazából ott annyi a különbség, hogy a 3. metódus tér vissza valami eredménnyel, és az lesz a fenti 2 metódusnak is a visszatérési értéke. Itt most ugye ez el van rontva
fun main(){
val list = listOf(
"1",
"2",
"3"
)
val observableList = Observable.fromIterable(list)
}
fun doSomething(input: String) =
Single.create<Int> {
doSomething2(input).map {
Log.d("1",it.toString())
}
}
fun doSomething2(input: String) =
Single.create<Boolean>{
doSomething3(input).map {
Log.d("1",it.toString())
}
}
fun doSomething3(input: String) =
Single.create<String> {
"FinalResult"
} -
coco2
őstag
Nem tudom, mit látsz benne félreinformálásnak. Kisebb csapatokban például aligha vannak juniorok, mert pici cégeknél első naptól mélyvízbe dobnak, és ha nem tudsz promptra úszni, akkor szia. A junior fogalma ott azért sem létezik. Nagyobb csapatokban meg megnézném melyik az a cég, amelyik például tervezési kérdéseket juniorokra merne bízni. De ha te azt látod magad körül, esetleg a cég nevét elkérném privát üzenetben.
-
cucka
addikt
Na hát akkor a kedvenc interjú-témámon te is elvéreznél
. Szóval a komplexitás nem azt jelenti, hogy te épp mit gondolsz, hanem elég jól definiált fogalomhalmaz - érthető, a nagy komplexitás termelékenység-csökkenést okoz, a fejlesztők pedig nagyon drágák.
Szóval mivel épp ráérek, némi támpont, hogy pongyolán megfogalmazva. (nem mindenre tudok magyar kifejezést)
essential complexity - az a komplexitás, ami nélkülözhetetlen. más szóval a megrendelő üzleti igényei. Ha a webshop 16 féle fizetést támogat, akkor az annyi.
accidental complexity - minden, ami nem essential.
ciklomatikus komplexitás - számolt érték, nagyjából a kód futás közben bejárható útvonalainak a száma. Tesztelhetőség szempontjából fontos.
kognitív komplexitás - számolt érték, azt akarja reprezentálni, hogy mennyire nehezen érthető a kód egy ember számára.
loc - ez a függvény sorainak száma, amiről beszéltél. Ha túl magas, az gyanús.
space and time - ez van valahogy magyarul is, de nem ugrik be. ez az amit az iskolában tanítanak, n-es, négyzetes, exponenciális, stb.És ezeken kívül még van a szubjektív komplexitás érzés. Van olyan kód, amit úgy olvasol, mint az újságot, és van olyan, amivel szenvedsz.
Hiába jók a metrikák a Sonárban, ha szembejön egy ProductFactoryProviderManager nevű osztály. Ilyenek még - rossz nevezéktan, inkonzisztens struktúrák, nevek, stb. -
Ez butasag. A komplex koddal akkor van baj, ha komplexebb, mint amire szukseg van. Komplex problemara komplex lesz a megoldas is, jo esellyel.
Eleve ugy kene review-zni, hogy az atnezendo kodrol el lehessen donteni, hogy valojaban megoldja-e a problemat, vagy sem. Ennel fogva atlagos/normalis esetben 1 user story-hoz 1 review tartozik, ahol az atnezendo kod tartalmazza 1) az implementaciot 2) a teszteket, amik bizonyitjak, hogy az implementacio tenyleg megvalositja az user story-t. A review meg ugy megy, hogy
- atnezed, h milyen tesztek vannak, azok megfelelnek-e az user story-nak
- ha a tesztek nem fedik le az user story-t, akkor veget is er a review
- utana megnezzuk, hogy a design megfelelo-e (skalazodik-e, stb.)
- vegul coding style, stb.Szerintem ez egy jol mukodo megkozelites.
> Amennyire látom, a fejlődés pont abba az irányba megy, hogy minél kevésbé legyen komplex a kód.
Nem. Ez csak egy inga, ami ide-oda leng.
Valojaban az van, hogy a komplexitast csokkenteni kell, de ez alapvetoen az architekturanal erdekes, hiszen egy elbonyolitott 100 soros fuggvenyt kb. barki ki tud takaritani, az nem kihivas. Nem szeretjuk a tulbonyolitott fuggvenyeket, de ha szembejon egy, akkor max. refaktoraljuk. Architekturat refaktoralni sajnos legtobbszor lehetetlen (mert az uzleti oldal nem viseli el a koltseget).
Szoval az van, hogy ha egy problema komplex megoldast igenyel, akkor az a komplexitas valahol meglesz. Vagy a fuggvenyek lesznek komplexek (C++/Haskell/Clojure hackerek, szevasztok!), vagy a kepernyodon levo kod trivialisan olvashato, de 3000 osztaly, amik ugy vannak osszehuzalozva, hogy azon kell atragnod magad (Enterprise Java/Spring hekkerek, szevasztok!).
Ergo a lenyeg sose az, szerintem, hogy szep fasza fuggvenyeink legyenek, hanem hogy a szoftver koncepcionalisan a leheto legelegansabban legyen kitalalva.
Mondok par peldat: peldaul az LMAX elegans. Kitalaltak, h hogy lehet nagy sebesseggel streaming adatokat feldolgozni, szep. Tokmindegy, hogy vannak a fuggvenyek lekodolva, onnan, hogy erted a nagy kepet, mar ki lehet silabizalni. A Datomic elegans. Rich Hickey ravilagitott, hogy az objektumorientalt vilag oriasi tevedese, hogy osszemossa az identitast az ertekkel, es tervezett egy adatbazist, ahol ez szetvalik -- gyonyoru.
> szerintem a programozás lényege a legegyszerűbb működő megoldás
Ebben majdnem igazad van.
1) fontos, hogy a legegyszerubb nem egyenlo azzal, amit az adott pillanatban legkonnyebb osszetakolni -- nagyon ajanlom: https://github.com/matthiasn/talk-transcripts/blob/master/Hickey_Rich/SimpleMadeEasy.md
2) sokszor az elvarasoknak resze, hogy reagalni tudjunk a jovobeli valtoztatasokra is -- szoval valami egyensuly kell a YAGNI meg az overengineering kozott -
pmonitor
aktív tag
>Felesleges személyeskedésbe kezdtél, amit fejezz be.
Utolsó hozzászólásom:
#17607 pmonitor dabadab #17604 Új Válasz 2022-07-20 15:38:24Azóta nem szóltam hozzá. A Te hozzászólásod:
#17608 mobal pmonitor #17607 Új Válasz 2022-07-30 19:18:21Végül is csak 10 nappal később szólítottál fel, hogy fejezzem be...
Objektivitás az van... Főleg időben... De mind1. Befejeztem ezt a témát(legalábbis itt...).
-
coco2
őstag
Pedig a telepítők kedvenc adattárolási célpontja registry kulcsokba rakni konfig adatokat, amiket a lúzer install közben beállít, legyenek azok működés szabályozó paraméterek / korlátok / de akár mappák elérési útjai a helyi drive-okon.
Linux alatt ofc nem történik olyan. Nem mintha a Win-es fejlesztési gyakorlat valaha figyelt volna a Linux-kompatibilitásra.
-
coco2
őstag
>vagy alkalmatlan vagy rá (no offense..
None taken. Minden játéknak több oldala van. Ha valaki nyerni akar az egyiken, valaki másnak veszítenie kell hozzá a másikon. Én elég gyakran a vesztesek oldalán vagyok. Én legalább megbírom. Amilyen harmatos népek érkeznek ma az informatikába, ők valószínűleg alkalmatlanok lennének rá. -
cucka
addikt
Igen, az teljesen életszerű, hogy hálózat nélkül futtatod a javascript alkalmazásodat.
#17296sztanozs
Az ökoszisztémát érintő problémák általában fejlesztés közben jönnek elő, pl. 1 napig turkálod, hogy az npm install most miért dob hibát és korábban miért volt jó. És ezt az 1 napot valaki neked kifizeti, aki ha tudná, nem örülne. A maradék probléma meg leginkább élesben, pl. memory leak-ek.UAT arra van, hogy az ügyfél átvegye és jóváhagyja azt, amit fejlesztettél. Ha itt derülnek ki hibák, akkor valamit rosszul csináltok.
-
pmonitor
aktív tag
>A fórumról több kolléga is olyan dolgokan dolgozik / dolgozott mint valamilyen nagy magyar vállalat webshopja vagy valamelyik mobilbank applikáció és hozzá tartozó backend.
És ezt miért kell titkolni? Ők pl. titkolják, hogy hol dolgoznak?
Horpácsi Illés: Senior szoftvermérnök Evosoft
Deák Gergely: Senior developer Accenture
Romhányi Ármin: Full Stack developer En-Co Software Zrt.
Ruzsinszki Gábor: Software architect EvosoftŐk vajon miért is nem titkolják, hogy hol dolgoznak? Sztem. aki olyan helyen dolgozik/dolgozott, azt nyugodtan felvállalhatnák itt a fórumon is. Vagy vaj van a fülük mögött(rossz úton járnak), hogy nem merik megtenni? Vagy, vagy, vagy...
Én Rád teljesen másképp nézek, mint a többiekre, mióta felvállaltad magad. Mondjuk attól még nagy szakadék van a felfogásunk között, de ennek ellenére is... Mert tudom, hogy van önálló munkád, nem csak a levegőbe beszélsz(illetve írsz). Egyrészt ezért is hallgatok Rád, hogy ne kezdjünk új loopba. Na meg azért is, mert én a szubjektív véleményem le tudom írni a saját oldalamon. Bár ezt meg olyan "az emberek háta mögötti dolognak érzem", de ha szemtől-szembe nem megy, akkor más nem marad... -
pmonitor
aktív tag
-
pmonitor
aktív tag
Megkövetlek. És nem fikázlak.
Ugyanakkor csak legalább ennyit "várnék" el az olyanoktól, aki programozónak állítja be magát. Ugye, hogy nem is volt olyan nehéz ezt megtenni?
#16912:
>milyen módon minősíted azt a sok mérnököt aki ezzel foglalkozikMár ha ugyebár mérnökök(ráadásul így többes számban).
-
pmonitor
aktív tag
>Nem vagy szakmabeli és ami itt folyik demagóg
Neked pl. hol vannak a referenciáid? Mert nem vettem észre, hogy vmit. is közzé tettél volna. Én legalább valamiket letettem az asztalra. Hogy értékelhető-e, vagy nem, ahhoz nem tudok hozzászólni, de sokkal több dolgot tettem le az asztalra. Az oldalam gyakorlatilag a "Cutter" nevezetű programom végett hoztam létre. A többi csak úgy jött köré. Elsősorban régebbi programok vannak ott(amiket made in hirtelen csinosítottam). Pont az a bajom, hogy itt bárki mondhatja magát szakmabelinek, anélkül, hogy bármit is letett volna az asztalra(akár értékelhetőt, akár nem). Egyébként, ahogy látom, a programjaim töltögetik "lefelé", és nagyon bízom benne, hogy valaki(k)nek megmozgatják a szürkeállományát, és valami eszükbe jut a programjaim nézegetése közben. Valami ihletet adok Nekik. Ezért hálás köszönetem, azoknak, akik letöltötték/letöltik a programjaimat. Őket légyszíves ne s...d már le, ha megkérhetlek.
-
A kess logikailag nem jó itt, mert nem tudod elkülöníteni az ügyfelek olyan csoportját, amelyet nagy valószínűséggel fogsz lekérdezni. Innentől pedig az van, hogy az egész DB-t memóriában kéne tartanod. Persze ez sem lehetetlen, de nyilván te is tudod, hogy nem tipikus.
#16832nevemfel
Majd leírom, hogy mire jutottak az architekt urak, én csak a partvonalról szemlélem a dolgokat. -
pmonitor
aktív tag
Itt sztanozs nagyon jól összefoglalta a programozók általános álláspontját. Amivel nem tudok egyetérteni. Hosszabb futásidő -> több energiafogyasztás. Főleg (alkalmazás/web)szerveren.
Valóban nem tudom a leggyorsabb kódomat, hogy jól is és hibamentesen is működik. Kovisoft(aki egyébként az egyetlen konstruktív/kritikus hozzászóló volt - ezúton is köszönöm Neki) sem tudta bizonyítani az ellenkezőjét. De tettem konkrét lépést a bizonyítás felé. 200000000000-ig biztosan detektál minden túlcsordulást -> ez azért nem kis dolog. De tegyük fel, hogy ez az algó nem működik. Ez az algó biztosan működik(hiszen ha egy számot szorzunk, akkor az eredményt visszaosztva ugyanazt a számot kell visszakapnunk), és ez is gyorsabb a beépített függvénynél. Legalábbis C-ben. Mert mint írtam, a "rajzom" még nincs teljesen kész(pl. ezt C#-ban még nem próbáltam). De kovisoft valós hibákat/bug-okat írt(a legutolsó hsz-e kivételével), Veled ellentétben. Én is "rizsázom", de ezzel párhuzamosan azért valamit próbálok megcsinálni is.
Egyébként még a programozók sem értenek egyet még a stringet int-re konvertáló függvény szignatúrájában sem. C-ben ha túlcsordulás van, akkor az int-et INT_MIN/INT_MAX értékére állítja be(vagy meghatározatlan értéket ad vissza). C#-ban 0-t ír bele, és false-ot ad vissza. Sztem ez utóbbi jobb, mert a 0-nak "általában" invalid értelme van(darabszám/pénz/akármicsoda esetén). De mondjuk a programozóknak kellene "dűlőre" jutni ilyen témákban.@martonx, @Silεncε: A fejlesztők úgyis elkergetnének, hiszen a programozókat nem érdekli a sebesség, és a méret/helypazarlás(lásd az elején belinkelt sztanozs hozzászólást -- is).
-
pmonitor
aktív tag
De az itoa(...) esetén sikerült ~ harmadára csökkentenem a futási időt(még úgy is, hogy + funkciót tettem bele).
Mondjuk tény, hogy az atoi(..)-t többször kell használni, mint az itoa(..)-t. Ezért érthető, hogy erre sokkal jobban odafigyeltek a fejlesztők. De jobb kódot biztos, hogy nem egyszerű csinálni. Csak ki tudja, hogy az STL melyikből tartalmaz többet: olyan lassúból, mint az itoa(), vagy olyan gyorsból, mint az atoi()? Ezt ki tudja megmondani? Arról nem is beszélve, hogy én csak win-en VS-ben teszteltem ezt a 2 függvényt is.
-
pmonitor
aktív tag
Igaz.
De azért implementálni tudtam az ugyanakkora sebességet, mint az atoi(...). A kovisoft által felsorolt hibák:
1.: általánosságban nem csökkentik a sebességét a kódomnak
2.: a kódom végén található if-ekkel, és az azokban lévő tartalom módosításával orvosolhatók. Ezek csak igen speciális esetekben lassítják a kódom. INT_MIN, kisebb, mint INT_MIN, INT_MAX, nagyobb, mint INT_MAX. Tehát nem sok ilyen eset van.De aki megérti a működési elvet, Ő már tudja, hogy miért szoktam mondani, hogy "81236" == "000081236"-al, ha számokról beszélünk.
-
martonx
veterán
Azért ez így erős. A Mac BSD-re épül, ami meg unix-ra, amire a Linux is. Szóval igen, a Mac nagyon nem egy linux, de valahogy nekem is ugyanaz volt az érzésem, mint @opr-nek, hogy de végülis ez egy linux, mert rögtön mindenhez terminalt kellett nyitni, csak épp ügyesebb, mint egy linux, mert annyi mindenhez mégse kell terminal-ban bohóckodni a google legmélyebb bugyraiból előszedve parancsokat.
De ahogy fentebb jeleztem, ez már nagyon flame kategória, szóval én nem mennék bele komolyabban, a többieknek is ezt tanácsolom, hogy hagyjuk a kinek milyen OS-t témát a programozás topikban. -
Ispy
nagyúr
Honnan tudod, hogy le akarja fedni az összes gépet? Irodai környezetben ma Mo-on 99% win fut. Meg hát az is lehet, hogy van már neki meglévő rendszere, ügyfelei, nem azt írta, hogy most kezdene wpf-el. Szóval ennek a kötekedésnek jelenleg kb. semmi értelme. A php is halott, temetik már nagyon rég, csakhát mégse. Szóval nagyon veszélyes ilyen sarkos dolgokat kijelenteni.
Nekünk van olyan ügyfelünk, akit még mindig nem tudtunk leszedni ms access+sql-ről, mert nem hajlandó váltani (költeni rá), inkább szenvednek a mai napig ezzel a szarral. Ezért a kollégámnak a mai napig fenn van az access a gépén (amíg meg nem unjuk a supportot).
-
pmonitor
aktív tag
Az 1D vágás programomon gondolkodom/gondolkodtam, hogy vagy Excel, vagy .csv formátumba lehessen exportálni. Nem jutottam egyről a kettőre ezzel kapcsolatban. Követeljem meg a felhasználóktól, hogy legyen a gépükön office? Vagy a programom mérete növekedjen? A .csv file esetén sem mindegy, hogy angol, vagy magyar verzió van-e. Szóval nem 1szerű a döntés. Sztem. marad úgy, ahogy van, és a felhasználó dönti el, hogy milyen programba másolja be.
-
martonx
veterán
A probléma nem elsősorban a PHP volt. Nyilván PHP - vél is simán le lehetett volna menni 5s alá, ha nem is 40-80ms-re.
Én mindenféle script nyelvet szeretek. Tök gyorsan össze lehet bennük dobni egyszerűbb cuccokat.
Viszont az az általános tapasztalatom, hogy sok script junkie nem véletlenül marad a script nyelveknél, hanem a képességeik a gyorsan összedobjunk valamit, valami egyszerű nyelven szinten meg is áll.
Ez nem a script nyelvek hibája, és vannak persze kivételek. -
Ispy
nagyúr
Nekem nem volt vele bajom, igaz csak faék használtam 1 hónapig, de végül a serverless miatt elmentük js-re, meg akkor már az androidon is flutter, most meg már szólt a főnököm, hogy megyünk web vonalra erősen, ott meg react. C-ről nem volt szó.
Nagyon izgi, amikor az ember párhuzamosan programozik SQL-ben, JS-ben, VB.NET-ben, backend, frontend, majd most jön a react, a mobilt szerencsére nem nekem kell csinálni.
Laravell az nekünk nem jött be, pedig azzal is küzdöttünk.
-
pmonitor
aktív tag
Igen, igazad van. Nem is arra gondoltam, hogy az összes funkcióját megcsinálom(főleg egyedül). Csak ez nagyon feltűnt próba nélkül is, hogy feleslegesen írja ki a mappákat. És pont témába vágott. Ezért hoztam fel. Mondjuk hozzá kell tenni, hogy a teszt programom bár C#-ban készült, de win api függvényeket használ(FindFirstfile-FindNextFile a szíve neki). És ha egy win api függvény működik C#-ban, akkor az sebességben alig marad el pl. a C/C++-tól(legalábbis nagy mértékben biztos, hogy nem).
Szóval csak izgatott a téma. Ezért is készítettem hirtelen felindulásból egy teszt programot.
-
-
De az ilyen tapasztalat az invalid argument, lásd a kacsa és a víz esete. A triggerek ellen szól persze rengeteg érv, de sok másik meg mellettük van. Tudni kell, hogy mire való a trigger, s arra használni, ésszel, ennyi a követelmény.
Azért írtam, hogy "szerintem" meg "nem kell foglalkoznia", nem pedig azt, hogy "ne foglalkozzon".
Mindenki úgy írja meg, ahogy tudja, de azt ne mondja nekem senki, hogy a triggert nem szabad használni.
-
Ezzel egyetértek. Magukkal triggerekkel nincs baj, az emberekkel van a probléma, akik rosszul használják.
Na, de hogy konkrét példák is legyenek, nálam ilyesmik fordulhatnak elő triggerekben (row-level):
BEFORE TRIGGER:
- automatikus mezők kitöltése (ahol a default nem használható)
- integritás ellenőrzés (ahol a check nem használható)
- tiltott operációkra exception (pl egy hsz időpontja nem módosítható)AFTER TRIGGER:
- cache táblák automatikus kitöltése
- kapcsolódó táblák cache mezőinek kitöltése (pl hszszámláló++)
- megváltozott adat korábbi értékének archiválása másik táblábaPersze valaki nem ért a PL/SQL-hez akkor ne így csinálja, s ezeknél magasabb szintű logikát tényleg nem szabad triggerekbe tenni, mert úgy láthatatlan, s abból csak baj lesz.
-
fordfairlane
veterán
Nem akarom bárkinek is a szakértelmét lekicsinyelni, sőt, de a tapasztalatom az, hogy tárolt eljárásokkal dolgozni horror. Egy szót sem szólok a kódbázis hordozhatóságáról, az ezen a szinten elég alacsony lehet, csak már maga a munka menete (pl. debuggolás) elég meghatározó, negatív élmény volt számomra.
-
Még ha tegyük fel meg is van oldva tökéletesen, sebességben attól még nem lesz nyerő. Egyébként itt van row-level vs statement-level megkülönböztetés? Honnan tudja, hogy mely row-okra kell meghívni a "triggert", stb.? Ez mind overhead. Persze tudom, a hardver olcsóbb, mint a programozó.
Btw, én nem azt mondom, hogy SQL-be kell, hanem csak bizonyos részét az üzleti logikának célszerű a DB-be pakolni, mert jóval hatékonyabb, mindent használjunk arra amire való, ésszel.
-
Pl itt ha egy júzer ír / töröl egy hsz-t, akkor a téma és fórum hozzászólásszáma és az utolsó hsz dátumpecsétje frissül, illetve a júzer lehet rangot léphet, stb. Ezt php-ból megírni elég retek meló lenne, és a bonyodalomból adódóan könnyebben előfordulhatnak bugok, viszlát konzisztencia. S ez csak egy egyszerű példa.
-
-
dabadab
titán
"Kinek mi a tapasztalata? Mekkora vas kell a "programozáshoz"?"
Én Commodore C64-en kezdtem, 1 MHz és 64 kB RAM, az bőven elég volt
Ha Pentium alatt a G sorozat darabjait érted (és nem mondjuk egy 90 MHz-es Pentium I-et), akkor azok simán boldogulnak vele, az itthoni desktopomban is egy G3420 van (meg 8 GB RAM meg SSD) és nem szoktam érezni, hogy kevés lenne ahhoz, amit csinálok (kisebb C++ projektek meg Python).
-
Karma
félisten
-
Karma
félisten
Reflexió a barátod.
Íme egy példa:
public class ReflTest {
public static void fapapucs() {
System.out.println("FAPAPUCS!");
}
public static void hello(String name) {
System.out.println("Hello " + name + "!");
}
public static void main(String[] args) {
try {
ReflTest.class.getDeclaredMethod("fapapucs").invoke(null);
ReflTest.class.getDeclaredMethod("hello", new Class[] { String.class }).invoke(null, "mobal");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}Direkt beraktam egy paraméter nélküli, és egy paraméteres metódust is - a getDeclaredMethodnál és az invoke-nál is passzolnia kell a típusoknak.
És egyébként ha nincs nagyon jó indokod erre, pofonrúgást érdemel egy ilyen megoldás
Olyan sok szebb alternatíva van a parancsfeldolgozóra is... Például a Command tervezési minta: a Mapben nem stringeket tárolsz értékként, hanem egy megadott (feldolgozó) interfészt megvalósító objektumokat.
-
$filename = 'included.php';
include($filename);Viszont ennek van egy szép nagy kockázata, ezért itt egy példa egy biztonságos megoldásra:
<?php
$path = 'pages/';
$extension = '.php';if ( preg_match("#^[a-z0-9_]+$#i",$page) ){
$filename = $path.$page.$extension;
include($filename);
}
?> -
Karma
félisten
Kicsúsztam a szerkesztési időből...
sor4[i] = (long double)sor3[0] * (long double)sor3[c + 1];
Nekem így jobban tetszik (a "sor3" önmagában csak egy konstans pointer az első elemre a tömbben), gondolom nem a pointert, hanem az első értéket akarod szorozni, nem?
A cast elvileg elég a konverzióhoz, szóval szerintem mennie kéne így.
-
Protezis
őstag
elso talalat: [link]
Kozvetlen windows programozas helyett ajanlanam inkabb ezeket:
- Java (ehhez mondjuk ajanlom az eclipse + visual editor plug-in kombot)
- MFC ( hagyomanyos wines programok, visual c++ 6, vagy valamelyik visual studio)
- .NET framework hasznalata (c++, c# stb., ehhez visual studio 2003, 2005)
Visual Studiobol az express edition is eleg lesz kezdetnek, ingyen letoltheto az ms honlapjarol.
A guitol csak felhasznalobaratabb lesz a programod.
[Szerkesztve] -
amargo
addikt
Ha nem engedik, hogy a file-tartalmazza a sorok számát, akkor getline-al mész az eof-ig, közben a \n-re keresel. Ezt egy függvényben keresed, aminek a return-ja lesz a sorok száma. Majd egy másikban felszabdalod az elválasztó karakterek alapján és beleteszed a struktura tömbödbe.
Azthiszem valahogy így lehet hivatkozni rá:
char buff[100];
while(!f.eof())
{
f.getline(buff,100,'\n');
n++;
}
[link] -
amargo
addikt
Két hiba is van ebben.
a tbook-ot miért akarod itt felszabadítani? a temp-et oks. De mit akarsz itt? Mert elég kusza.. a másik nagy gond, hogy a tbook létre incs hozva.. tehát nem foglalsz neki le memória területet. tbook = temp - ezzel nem csak a tartalmukat másolod össze, de a pointerek címét is, innentől, ha az 1iken elkövetsz valamit az a másikra is kihat. Meg ez a fura kihazsnálás, hogy elsőnek az n=0 és ezért nem megy a for-ba, fura.
void loadData(ifstream &f, int &n, tel* &tbook)
{
string name2, number2;
tel* temp;
while (!f.fail())
{
temp = new tel[n + 1];
for (int i = 0; i < n; ++i)
{
temp.name = tbook.name;
temp.number = tbook.number;
}
getline(f,name2,',');
getline(f,number2);
if(name2 == '''')
continue;
temp[n].name = name2;
temp[n].number = number2;
//delete[] tbook;
tbook = temp;
//delete[] temp;
++n;
}
cout << ''ENNEDIK'' << '' '' << tbook[n-1].name << '' '' << tbook[n-1].number << endl;
cin.ignore();
} -
amargo
addikt
szerk: kicsit elmagyarázva, csinálsz egy do-while ciklust, miben annyiszór hívod meg, amíg a vissza kapott érték nem ture, azaz, nem volt sikeres a file megnyítása. Ezt akár az openFile-on belül is megcsinálhatod és akkor maradhat void típusú, igazából ez rajtad múlik, hogy mennyire akarod 1 függvénybe lekezelni az egész dolgot, ha túl sok minden van a main-edben akkor én az openFile ba tenném az egész megoldást, igaz így nehezebben is derül ki elsőnek, ha hiba van benne. Bár ez már máskérdés.
int main()
{
(...)
do
{
bool valid = openFile(f);
}while(!(valid == true));
(...)
}
bool openFile(ifstream &f)
{
string fileName;
cin >> fileName;
f.open(fileName.c_str());
//bool valid = false;
if (f.fail())
{
cout << ''File megnyitasa nem sikerult!\n'';
return false;
}
else
{
cout << ''File megnyitasa sikerult! '' << fileName << endl;
return true;
//valid = true;
}
//vagy(a kommentezet rész alapján) itt belül is egy boolba beleteszed az értéket, és itt //térsz vissza returne-al azzal.. stb, mert erre a megoldásra azt fogja mondani a fordító, //hogy nem tettszik neki. tehát azt is csinálhatod, hogy csak a valid változót adod vissza.. szeritnem az a jobb is.
//return valid;
}
[Szerkesztve]
[Szerkesztve] -
amargo
addikt
''- van még 1 függvény ami pedig feltölti a strukturát (dinamikus tömb) adatokkal.''
Mi alapján?
2. Miért akarod referenciaként átadni? Változtatod is?
3. Lehet a 2.-ban kinulláztad? (ha referencia volt)
Szerk:
cout << ''A fajl neve := '';
cin >> filename;
//Definiáljuk és megnyitjuk a fájlt
ifstream x(filename.c_str());
//Ha hiba van befejezzük a programot
if (x.fail()){
cout << ''A megadott fajlt nem talalom!'';
exit(1);
}
//Beolvassuk/kiírjuk a tömb hosszát
x >> n;
//Létrehozunk egy n elemű tömböt és kitöltjük
int* v = new int [ n ];
for(int i = 0; i < n; ++i)
x >> v[ i ];
Ilyesmire gondoltál? Csak függvényekre tagolva.
[Szerkesztve] -
Forest_roby
őstag
hi!
Magából a sudokus dologból kimaradnák, de csupán a forrást nézve kezdetnek nem is rossz, csak fordítva kell : )
sudoku[0][0] = 1;
sudoku[0][1] = 2;
...
..
.
és akkor nyilván vmilyen bonyolultabb ciklussal ( ciklusba ágyazott ciklussal fel lehet tölteni )
A kiértékelés ugyan így ciklussal mehet, ez nyilván egy kétparaméteres tömb, ha az egyik paraméterét fixen hagyod és a másikra futtatsz egy ciklust akkor megvan az az adott sor v. oszlop.
Nem igazán tudom, hogy mire vagy kíváncsi? Írjak egy forrást, ami összead egy sort?
Mindenesetre sok sikert!
Forest -
PazsitZ
addikt
Mátrixok épp most tanulom Lineáris algebra nevezetű tárgyból
28-án vizsga.
Szerintem a sudoku-ban nem igazán tudod felhasználni a mátrix-al/-on való műveleteket.
Def: Legyen T számtest és n,m pozitív egészek. a T számtest feletti Mxn-es mátrixon egyí olyan téglalap alakú táblázatot értünk, melynek m sora és n oszlopa van és elemei T-ből valók.
Ergo igen egy sudoku tábla mátrixnak felel meg, de ez nem hiszem, hogy segít bármit is. -
PazsitZ
addikt
void csak szam es szokoz karakter van-e a fileban()
{
char kar;
int err;
err=0;
while (!feof(be))
{
fscanf(filebe, ''%c\n'', &kar);
if (kar!=32||58<kar||kar<47) err=1;
}
return err;
kéne egy olyan ami megnézi, hogy sikerült e megnyitni egy filet:
[link]
FOPEN - open a file for I/O.
Several additional options can be specified by adding one or more letters to the possibilities listed above.
All of the following options are unique to the GCOS-8 version of C and will not be portable to other implementations.
d
tells ''fopen'' to abort the program (die) with an error message if an error occurs in the open operation or
in I/O performed later on the opened file.
e
displays an error message (on ''stderr'') if an error occurs in the open operation or in any I/O performed
later on the opened file. In this case, the program is not aborted; the I/O function that finds the error
will return the normal error status (if any) once the message has been printed.
Az mit takar, hogy ''mátrixok kellenének''?Simán írj fel egyet és lesz.
[Szerkesztve]
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- IGP nélküli processzorokkal készül az Intel és az AMD
- WoW avagy World of Warcraft -=MMORPG=-
- Azonnali fotós kérdések órája
- Tőzsde és gazdaság
- Melyik tápegységet vegyem?
- Fogyjunk le!
- Robogó, kismotor
- PlayStation 5
- További aktív témák...
- DELL PowerEdge R630 rack szerver - 2xE5-2650v3 (20 mag / 40 szál, 2.3/3.0GHz), 32GB RAM, 55992Ft+ÁFA
- AZONNALI SZÁLLÍTÁSSAL Eladó Windows 8 / 8.1 Pro
- BESZÁMÍTÁS! XFX MERC 310 RX 7900 XTX 24GB videokártya garanciával hibátlan működéssel
- Eredeti, új Lenovo 330W töltők - ADL330SDC3A
- ÁRGARANCIA! Épített KomPhone Ryzen 5 9600X 32/64GB RTX 5070 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged