- Minden USB-C kábel egyforma? Hát NEM. És ez a baj. – Tech Percek #7
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Samsung LCD és LED TV-k
- Házimozi belépő szinten
- Bambu Lab 3D nyomtatók
- Milyen belső merevlemezt vegyek?
- Milyen notebookot vegyek?
- Nvidia GPU-k jövője - amit tudni vélünk
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- RAM topik
Új hozzászólás Aktív témák
-
moonster
tag
Szevasztok!
A Benkő Tiborné - Dr. Poppe András : Együtt könnyebb a programozás - C [ComputerBooks] könyvnek keresem az elektronikus változatát. Ha valakinek megvan, esetleg tudja a linket, akkor kérem írjon.
Köszi
m -
Headless
őstag
Tényleg rákereshettem volna az au3 kiterjesztésre valószínűleg megtaláltam volna, de köszönöm nagyon a segítséget, meg is oldottam a dolgot, kellett javítgatni a forrásban mert a html oldal eltüntette belőle a <> között lévő dolgokat így az egy kicsit megnehezítette, meg akkor már csiszoltam is rajta egy picit de most úgy tűnik működik
-
axioma
veterán
válasz
Headless #5392 üzenetére
Az .au3 include-okbol valoszinusitem, hogy autoit kodrol van szo (sokat nem tudok rola, csak 7 eve egyszer nyakamba soztak egy feladatot, hogy ebben oldjam meg). Most nem teszem fel, de a fejl.kornyezet nalam a SciTe4AutoIt volt, eleg intuitive a hasznalata. Probald meg, azt ha nem jon be, akkor me'g mindig varhatsz egy jobb valaszra.
Sajna a ceges gepem azota le lett mar cserelve, es ezt nem installtuk mar vissza, de megvan mentesben hogy mint raktunk fel, ugyhogy szukseg eseten talan ujra tudom eleszteni, ha lesz idom (az viszont pont mostansag vagy van, vagy nincs). -
Headless
őstag
Sziasztok!
Sajnos egy olyan feladat került elém amit nem tudok, vagy csak nagyon lassan tudnék magam megoldani, ezért jöttem ide.
Elnézést a tudatlanságomért, de sajnos nem tudom milyen nyelven készült a forrás kód amit linkelek így megeshet hogy rossz topicba vagyok.Ezen a linken van a forrás kód, viszont a hozzászólásokban van egy kiegészített bővített forráskód. Azt szeretném újra fordítani igazából.
A kérdésem az lenne merre felé induljak el, esetleg tudna-e nekem valaki segíteni a fordításban.
-
Doctor46
csendes tag
válasz
Jester01 #5388 üzenetére
Ez a kettő lenne az!
Tudom 3-at írtam de kettő lett belőle.
4.A. Egy kis vegyesbolt vezetője felkéri, hogy készítsen egy számítógépes programot,
amely a bolt raktárkészletét tartja nyilván. Feladata, hogy határozza meg a fejlesztendő
szoftver funkcionális és minőségi követelményeit, valamint az alkalmazás szerkezeti
felépítését.
- Mutassa be a programtervezés folyamatát!
- Nevezze meg és jellemezze a tervezés során készítendő dokumentumokat!
- Határozza meg a fejlesztendő szoftver funkcionális követelményeit!
- Határozza meg a fejlesztendő szoftver minőségi követelményeit!
- Tegyen javaslatot a szoftver futtatási környezetére (platform)!
- Tegyen javaslatot a szoftver architektúra kialakítására!
- Mutasson rá az alkalmazás kritikus pontjaira!8.A. Egy áruház klimatizálási rendszeréből 10 másodpercenként érkeznek - az egyes
helyiségek hőmérsékletét jelző - monitoradatok egy adatbázisba. A megfigyelt helyiségek
(beérkező adatok) száma 100 darab. Feladata, hogy tegyen javaslatot az adatok
rögzítéséhez szükséges adatbázis és alkalmazás felépítésére.
- Tervezze meg a rendszer működéséhez szükséges architektúrát!
- Tervezze meg az adatok tárolásához szükséges adatbázis felépítését!
- Határozza meg az adatok tárolásához szükséges tárterületet!
- Tervezze meg az adatok rögzítéséhez szükséges alkalmazást!
- Határozza meg a rendszer működése során jelentkező kritikus pontokat, hibákat és
javasoljon megoldásokat! -
Doctor46
csendes tag
Sziasztok!
Jövő héten lenne a szóbeli vizsgám és van 3 olyan programozási tételem amivel egyszerűen nem tudok mit kezdeni. Nem tudom hogyan álljak neki.
Ha valaki esetleg akarna segíteni akkor írjon rám privátban és elküldöm neki.Köszönöm
-
CseteBalu
csendes tag
Heló, nemrég kezdtem el ismerkedni a c nyelvvel, és azt nem tudtm sehogyse megcsináni, hogy beírok vmit akkor kiír egy szóveget, de ha más valamit írok be, akkor már mást írjon ki. Ha van erre valami mód, akkor valaki el tudná magyarázni?
-
bandi0000
nagyúr
válasz
EQMontoya #5376 üzenetére
igazad volt, bár nem értem teljesen miért mert ha a for i-je tud lépkedni a szavak között, akkor az i+1-et mért nem érti?
Nem nagyon tudok dülőre jutni ezzel a feladattal, most lefut, de amint talál egy olyan szavat ami megfelel az if-nek, tehát j. szó rövidebb mint az utána közvetkező akkor kiakad és bezáródik, gondolom a másolgatással lenne baja?!?
-
bandi0000
nagyúr
válasz
zsambek #5375 üzenetére
Feladat:
6, Határozza meg, hogy a szotar.txt állományban melyik a leghosszabb szó! Ha több,
ugyanannyi karakterből álló leghosszabb szó volt, akkor az ugyanazokat a karaktereket
tartalmazó szavakat (amelyek egymás anagrammái) közvetlenül egymás alá írja ki!
A feltételnek megfelelő összes szó pontosan egyszer szerepeljen a kiírásban!7. Rendezze a szotar.txt állományban lévő szavakat a karakterek száma szerint növekvő
sorrendbe! Az egyforma hosszúságú és ugyanazokat a karaktereket tartalmazó szavak
(amelyek egymás anagrammái) szóközzel elválasztva ugyanabba a sorba kerüljenek!
Az egyforma hosszúságú, de nem ugyanazokat a karaktereket tartalmazó szavak külön
sorba kerüljenek! A különböző hosszúságú szavakat egy üres sorral különítse el egymástól!
Az így rendezett szavakat írja ki a rendezve.txt állományba!Azért akarom berendezni növekvőbe hogy mind2 feladatot egyszerűen tudjam megcsinálni, mert ugye van 2 tömbböm már, egyikbe eredeti szavak sorakoznak a másikba ugyanazzal az indexxel a szavak, csak a szavak már abc-ben vannak tehát egyik tömb 10. eleme: alma, a másik tömb 10. eleme: aalm
6.feladatnál ha növekvőbe raktam akkor annyi a dolgom hogy megnézem melyik a leghosszabb, és azokat kiírom, dupla for, i rámutat az első szó-ra kikeresi j-ből az ugyan olyanokat és aztán kiírom, és amiket megtalált azt ki nullázom és legközelebb nem lesz meg
7. feladatnál meg egyszerre nézem mind2 tömböt, ha megegyezik az abc rend szerinti szó a másikkal akkor fájlba írom azt, amelyik ugyanazzal az indexxel van csak nincs abc-ben
(#5376) EQMontoya: szavak[300][30], 300 szó max 30 karakter hosszú, j megy 300-ig tehát a szavakon ugrál, azért ugye a +1 a következő szó ra akarok rámutatni
-
-
bandi0000
nagyúr
válasz
bandi0000 #5371 üzenetére
Meg annyit ha tudnál esetleg még segíteni, hogy úgy néz ki az IF-nél hasal el, megpróbáltam úgy hogy felvettem 2 integer változót és abba belerakni egy számot, amit az strlen ad visza, hogy tudjam hány betűből áll de úgy néz ki mintha bele akarná ezáltal tölteni a szót vagy valamit az int változóba ha érted
-
EQMontoya
veterán
-
EQMontoya
veterán
válasz
bandi0000 #5368 üzenetére
Az a probléma, hogy amit csinálni akarsz, az shallow copy, de Neked deep copyra lenne szükséged. Most a shallow copyt is viszonylag rosszul csinálod, mert a pointered heapen van, a lokális változód pedig valszeg stacken, tehát ez így ebben a formában nem fog menni.
A megoldást az strcpy (deprecated!) illetve strncpy függvények környékén keresd.
-
sormanzje
újonc
Sziasztok!
Operációs Rendszerek tárgyból kaptam ezt a beadandót:
Irjon C programot, ami hasonloan mukodik a "time" parancshoz, a parameterkent kapott utasitast vegrehajtja (annak megadott tovabbi parametereket atadja neki parameterkent) gyermek processzkent, es kiirja pontosan mennyi idot futott.
Ha valaki megtudná oldani vagy segíteni benne nagyon megköszönném, mert fogalmam sincs, hogyan kell megcsinálni
-
bandi0000
nagyúr
Az a baj hogy annyira nem foglalkoztunk függvényekkel csak átfutottunk rajta, igazábóllehet növekvőbe kéne rakni a tömb elemeit karakter szerint és visszafelé indulnék akkor meglenne a leghosszabb szó
Hogy nézne ki a növekvőbe rakás függvénybe? Az a része érdekelne hogy milyen változóba kell megkapnia az értéket, mert pl 1-1 változót tudnékkezelni de itt a tömb elemeire kell hivatkozni illetve annak értékét kapja majd
-
EQMontoya
veterán
válasz
bandi0000 #5361 üzenetére
Írsz egy függvényt, ami paraméterként kap egy szót, és kiírja annak anagrammáit.
Felveszel egy tömböt, láncolt listát, bármit, amiben a leghosszabb _szavak indexét_ tárolod.
Elindulsz végig a paraméterként kapott szótömbbön, és ha az eddiginél hosszabb szót találsz, akkor kiüríted az indexeidet, ha egyenlő hosszúságút, akkor csak hozzáírsz.
Így a bejárás után megvan, hogy milyen hosszú a leghosszabb szó, mennyi ilyen hosszúságú van és azok hol vannak a tömbödben. Ez után már csak meg kell velük hívni a legelső függvényt. -
bandi0000
nagyúr
válasz
Jester01 #5360 üzenetére
2010.10-es érettségi
Röviden tömören, az egész anagrammákról szól
van egy tömbböm benne vannak a szavak, meg kell keresni a legtöbb karakterből állót, és amikor meg van akkor ki kell írni, persze úgy hogy az anagrammáit is vele írjam (tehát ugyan abból a 10 betűből álló szavakat ami benne van a listába)
csak ugye gondolom van több 10 karakterű szó aminek több ugyan ennyi betűből álló anagrammája van
-
bandi0000
nagyúr
válasz
zsambek #5357 üzenetére
6. feladatra van valami jó tipped?
Nem tudom hogy kezdjek neki, vagyis oké megkeresem a legnagyobb karakterszámút, az 10, nekem csak az jutott eszembe, hogy az összes 10 elemű szót kidobom egy új tömbbe, és ott kezdem elölről az össze hasonlítgatást, mint az elején, amit megtalált kinullázom és legközelebb nem találja meg, csak ez megint vagy +50 sor
-
zsambek
aktív tag
válasz
bandi0000 #5352 üzenetére
Szia!
Számomra ez elég triviális, de én tavaly azt csináltam ilyenkor, hogy google--> és rákerestem az érettséginek a pontozási útmutatójára, és ott eléggé részletesen le van írva.
"Két szó bekérése és megvizsgálása 5 pont
Utalt a beolvasandó tartalomra, és beolvasta a két szót 1 pont
Összehasonlította a két szót 2 pont
Helyesen állapította meg, hogy a két szó anagramma 1 pont
Ha anagrammák voltak, kiírta a képernyőre az „Anagramma”
szót, egyébként a „Nem anagramma” szöveget 1 pont " -
bandi0000
nagyúr
válasz
zsambek #5351 üzenetére
megmondom őszintén közbe megcsináltam mialatt válaszoltál
nem hiszem hogy egyre gondoltunk de működik, az az igazság hogy így ránézve egyáltalán nem bonyolult de amíg kiszenvedtem az sok volt, nevetséges de sehol se növeltem a j-t és ez akasztotta meg mindig
for(i=0;i<strlen(szo);i++)
{
j=0;
while(j<26)
{
if(szo[i]==ang[j]) j=26;
else
{
if(szo[i]!=ang[j] && ang[j]=='0') { ang[k]=szo[i]; k++; j=26; }
else j++;
}
}
}igazából még egy kis szövegértelmezési gondom van
2010.10-es érettségit csinálom, anagrammákat kell keresni, első feladat volt a bekért szó különálló karaktereit megszámolni és kiírni, a második a forrásfájlba lévő szavak abc sorrendbe írás, és a 3. meg az hogy kérjek be 2 szót és döntsem el anagramm e, és valahogy nem jön össze a kép, hogy a 2 szó egymásnak anagrammái e, vagy az abc sorrendbe rendezett szavak közül van e anagrammája,
Kérjen be a felhasználótól két szót, és döntse el, hogy a két szó anagramma-e! Ha azok
voltak, írja ki a képernyőre az „Anagramma” szót, ha nem, akkor pedig a „Nem
anagramma” szöveget! -
zsambek
aktív tag
válasz
bandi0000 #5350 üzenetére
Szia!
Valahogy ugy kellene, hogy eloszor nezz meg egy ASCII tablat, hogy hogy lehetne egy char-t int-re "kasztolni", ugy, hogy 0 legyen az 'a' betu. A 'b' betu az 1, es igy tovabb..
(Olvass be egy chart, irasd ki int-kent, Olvass be egy chart, vonj ki belole egy chart, irasd ki int-kent)Mit kellene, mibol kivonni.
Igy meg tudnal tolteni egy 26 elemu int tombot a 0-rol, es nem kellene szorakozni massal.Ide feltoltottem, de eloszor azt akarom, hogy kicsit szenvedj vele, es gondolkozz, ha esetleg teljesen feladtad, akkor kerdezz, es megmondom a kodot!
http://thinfi.com/m14
-
bandi0000
nagyúr
válasz
zsambek #5349 üzenetére
/*
printf("4.Feladat\n");
printf("Kerek egy szoveget:"); gets(szo); // i=4 1<0
for(i=strlen(szo)-1;i>0;i--)
{
for(j=0;j<i;j++)
{
if(szo[j+1]<szo[j])
{
tmb=szo[j+1];
szo[j+1]=szo[j];
szo[j]=tmb;
}
}
}
for(i=0;i<strlen(szo);i++)
printf("%c",szo[i]);*/hibátlanul rendez, igazából a kiíratást csesztem el, %s-el akartam kiíratni a karaktereket nem %c-vel
de van még egy technikai kérdésem, van egy olyan feladat is hogy bekért szóból állapítsam meg hány különböző karakter van, elvileg angol ABC betűire kéne csak gondolnom, arra gondoltam, hogy felveszek egy 26 elemű tömböt for ezt mindig vizsgálja, hogy a szó mondjuk első betűje benne van e, ha nincs akkor beleírja és így tovább, csak ha ezt a tömböt felveszem, tmb[26], és nem rakok bele semmit akkor mi van? akkor is helyesen tudná vizsgálni? vagy fel kéne tölteni valami karakterrel ami biztos nincs benne?
-
-
zsambek
aktív tag
válasz
bandi0000 #5344 üzenetére
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i, min, j; //int
char string[20]; //string
char tmp; //temp char
scanf("%s",string); //scan
//minimum selection sort
for(i = 0; i < strlen(string) -1 ; i++){
min = i;
for(j = i+1; j < strlen(string); j++){
if(string[j] < string[min])
min = j;
}
tmp = string[min];
string[min] = string[i];
string[i] = tmp;
}
printf("%s",string);
return 0;
} -
bandi0000
nagyúr
válasz
EQMontoya #5343 üzenetére
Köszi teljesen egyértelmű és azt is csináltam, számokkal tudok buborékrendrzni de betűvel nem próbáltam soha, a bemásolt kód elvilrg az is, tehát ha ugye egyik betű nagyobb mint másik akkor cserélgesse, csak nem akar működni, ha benne hagyom a for ba a -1et akkor kidob exe hibával ha nincs benne akkor sztem átlép a foron, vagy kitörli a szöveget
Másik tömböt nem csináltam csak egy tmb karakteres változot vettem fel amibe ideiglenesen tárolom az egyes betűket
-
EQMontoya
veterán
válasz
bandi0000 #5342 üzenetére
Nem akarok kódot írni, mert akkor nem tanulsz belőle, de szívesen adok néhány tippet.
1, A tömböt, amibe beolvasod a karaktereket, később is módosíthatod. Nincs szükséged második tömbre.
2, Használj valami rendezést. Az egész feladat arra megy ki, hogy a kapott karaktereket valamilyen formában rendezd, és ezt add visza. Néhány példa: buborékrendezés, minimum kiválasztáos rendezés.Buborékot nem illik használni, de az a legegyszerűbb, ha nem láttál még ilyesmit. Erre a feladatra a minimum kiválasztás szerintem teljesen oké, próbáld meg azt. Ha nem megy, írd le, meddig jutottál.
-
bandi0000
nagyúr
hali
Remélem nem zavartok el, lenne egy kis gondom, érettségi előtt állok ,és a karakteres kezelés nem a szívem csücske, lenne egy olyan problémám hogy, röviden bekérek egy szavat a szo[20] tömbbe, és a szó betűit kell abc sorrendbe rendezni, ezt így csináltam:
tehát char szo[20], tmb(ez lenne egy csere változó amibe eltárolok 1 betűt ideiglenesen)for(i=strlen(szo)-1;i>0;i--)
{
for(j=0;j<i;j++)
{
if(szo[j+1]<szo[j])
{
tmb=szo[j+1];
szo[j+1]=szo[j];
szo[j]=tmb;
}
}
}
for(i=0;i<strlen(szo);i++ printf("%s\n",szo[i]);igazából semmit nem csinál, a szót bekéri valszeg meghalhat már a for-ál is, bár eddig kiírta a szöveget változatlanul de most már azt se csinálja
-
kkdesign
senior tag
válasz
EQMontoya #5337 üzenetére
nem fut le, mert 280 hibát dob a 12-es és 350 warningot, felét tudom hogy amiatt, hogy a 12esben is még elöl kell deklarálni változókat, de jobb lenne látni a dolgokat azért.
Szívesen foglalatoskodom hogy WP 8.1re is tanulom az alkalmazásfejlesztést, aztán így muszáj hogy minimum 2013as legyen. emellé meg még a 2010es C++ t nem igazán szeretném feltenni hogy összekutyulódjon -
kkdesign
senior tag
Hali!
Olyan kérdésem lenne, hogy meg lehet oldani valahogy, hogy egy 2013-as visual studioban készített ".C" project úgy fusson le a 2013-as VS-ben mint ahogy a 2010-es Visual Studio ellenőrizné, hogy hibás-e ?
azért kellene, mert egy projectünket egyetemen 2010esben javítják, de nekünk pedig 2013 van, és ne kelljen olyan embert is belevonni a programozásba akinek 10ese van. Valami fordító visszabutításra gondolok, vagy valami menüpont átállítására hogy más fordító legyen, vagy hasonló. De nem találok semmi hasznosat... -
don_peter
senior tag
válasz
Jester01 #5330 üzenetére
Ja értem, akkor 3 oszlopból mutatható lenne az óra, perc. és másodperc.
A baj azzal csak az, hogy igen nehéz lenne megállapítani, hogy mennyi rajta az idő.
A 4bit-es sokkal könnyebb.
Persze megoldható lenne a dolog, ha erre volna igény, nem jelent gondot.ui: szarakodott a szerver, kb egy 20 perccel előbb akartam reagálni...
-
-
don_peter
senior tag
Igen.
Nem értem, mi az hogy vadászni kellett neked a 24-60-60-ra?
A bináris órának az a lényege, hogy binárisan mutassa az időt, nem értem ezt a dolgot most.
Amúgy se-percig nem tartana normál decimális órát készíteni.
Egy LCD kijelzőre vagy 7szegmenses kijelzőre, vagy akár egy matrix LED kijelzőre.. -
axioma
veterán
válasz
don_peter #5327 üzenetére
Ez is BCD? En ugy vadasztam egy olyanra, ami nem BCD hanem 24-60-60, marmint karoraban, de semmi normalis nem volt, most androidon van egy binaris ora widgetem, ott is felturtam vagy 20-at mire lett egy normalis ami ledumalhato a bcd kijelzesrol... (csak ne'mileg arnyalja a kepet, hogy a statuszsorban meg ugyis ott az info arab szamokkal). En mondjuk nem vagyok hw-kozeli hogy magamnak barkacsoljak.
-
don_peter
senior tag
Ahogy ígértem, ehhez a kis projektemhez kellett a segítség.
DPTP System - SMD RGB Bináris óra
Mindig ügyeskedek valamit -
don_peter
senior tag
Kedves fórumlakók
Ma úgy látszik ilyen napom van, nem pörög az agyam, vagy csak igen lassan.
Következő problémába botlottam:
Van egy másodperc számlálom, ami char típusú és 0-tól 9-ig számol.
0,1,2,3,4,5,6,7,8 és 9, tehát rendesen előre számol.
Az lenne a gondom, hogy ezt nem tudom megfordítani.
Tehát megfordítva így nézne ki: 0,8,4,C,2,A,6,E,1,9 (hexában)
Tehát amikor 1-et mutat a másodperc a 0x08-at kellene kiküldenie, ha viszont 5 mutat, akkor a 0x0A-t.
Hogy tudom ezt megoldani?
Így néz ki ez kódban:
fuggveny(mp_1);
Itt az mp_1-ben a másodpercek pörögnek 0-9-ig, ezeket kellene még függvény előtt megfordítani a függvény zárójelei közt.
Előre is köszi a segítséget. -
-
Zsolt1
tag
Igen közben megkérdeztem más embereket is, és ők is ezt mondták, hogy a rekurzívan való megoldás is backtrack, és alap helyzetben én is erre gondoltam (hiszen itt is visszább lépkedek, csak itt a rekurzió old meg mindent majdnem).
Azért hittem azt, hogy a rekurzív nem az, mert ez egy feladat volt és az előadó kihangsúlyozta, hogy az ötöshöz backtrackel kell megoldani, viszont ha valaki rekurzívan csinálja meg, azt is elfogadja (csak az gondolom nem 5-ös, de ez lényegtelen), és ez miatt alakult ki teljes káosz bennem
A vicc az, hogy még ma is ezt mondta, szóval úgy lehetett érteni, mintha csak a ciklusos megoldás lenne backtrack, viszont ebből és az itteni kommentekből rájöttem, hogy mind a kettő az, csak az egyik így a másik úgy működik. Tanulság: amit mond az oktató, azt azért 3 helyen legalább le kell ellenőrizni, hogy tényleg úgy van-eSzerencsére már minden működik, köszönöm a segítséget.
-
axioma
veterán
???
Backtrack: a (jellemzoen fabejaros, de mindenkepp az eseteket reszleges megoldasokon keresztul bejaros) algoritmus bizonyos feltetelek mellett (alapesetben: a reszleges megoldas mar teljes megoldas(jelolt), ami viszont nem jo, vagy a reszmegoldasrol mar ott eldol, hogy jo megoldasnak nem lehet resze) az elozo [szintu] reszmegoldas kovetkezo lehetseges kiterjeszteset veszed. Vagyis felhasznalod a kereses korabbi eredmenyeit.
Ezt meg lehet csinalni rekurzivan (itt a backtrack az, amikor a fuggvenybol visszatersz, de az elozo peldanyban benne vagy egy mondjuk for ciklusban, ami veszi a kovetkezo elemet), meg meg lehet csinalni kezzel is, amikor a backtrack a "verem" pop-ja (vagy tombnel mint lent az index dekrementalas). Soxor az utobbi gyorsabban fut, de nehezebb jol megirni... -
Zsolt1
tag
Köszönöm a segítséget! Igen közben rájöttem, hogy én igazából nem is backtrackel csinálom, hanem szimplán rekurzióval, amire valamiért azt hittem, hogy backtrack, de közben utánaolvastam és abban ugye teljesen máshogy van a visszalépés (nem rekurzióval), nekem meg ez idáig nem tűnt fel és nálam minden visszalépéses dolgot a rekurzió csinál meg, szóval köze sincs a backtrackhez az én megoldásomnak.
Ez mondjuk elég nagy gond, mert a feladatot konkrétan backtrackel kéne megoldanom, de valószínűleg most már maradok a rekurziónál, azt legalább értem mit csinál
-
axioma
veterán
Egy kicsit nem ertem, hogy mi a tomb, ha rekurzivan hivsz, nem a vermed?
Ha a rekurziv hivas _nelkuli_ (ciklussal) backtrackre gondolsz, na azt en is parszor leirtam mar, es tombbel meg tomb-mutatokkal, szinten rejtveny-megoldasokhoz. Bar mindig ido kellett a beloveshez, mert a megfordulasi pontokra elegge figyelni kell...
Tulajdonkeppen a tombot veremnek hasznalod. Az egyetlen dolog, amit adminisztralni kell, hogy amikor egy elemnel vagy, akkor tudd, hogy most eppen merrefele haladsz. Me'g elotte vagy a feldolgozasnak az ott lehetseges ertekeknel, vagy ket tovabblepesi lehetoseg kozott, vagy tullepted mindet.
Egyszeruseg kedveert legyenek a lehetseges tovabblepesi pontok az iranyok, valami egymast koveto egeszek jelolessel. Ekkor amikor a verembe letolok egy elemet, a mutatot feljebb viszem a kovetkezore, ott inicializalom a lehetseges elemek ala eggyel. Amikor meg visszaterek, akkor a mutato dekrementalasaval egyidoben az ott kapott erteket bamban novelem eggyel, es ugy megyek neki a kovetkezo ciklusnak (ami hozhatja azt, hogy tulmentunk, megint visszalepes van, egy ciklus nem feltetlen egy vizsgalat).Viszont ha jo neked ez rekurzivban is, akkor meg en azt csinalnam, hogy nem a tombot tolom le, hanem csak az utolso lepest. A tobbi minek neked? Tudod, hogy honnan jossz, for ciklusban meghivod az osszes lehetseges tobbi iranyra, es kesz. A tabla allapota meg lehet az egesz rekruzion kivuli statikus (termeszetesen ugy ertve, hogy visszalepesnel a bejarasi jelolest is visszaveszed).
-
Zsolt1
tag
válasz
EQMontoya #5314 üzenetére
Igen ezt már próbáltam, hogy minden lépésnél ugye 1 elemet módosítok (jelölöm a bejárt utat) és azt elmentem egy tmp-be még a fv hívása előtt és a fv hívás után visszaírom azt az egyet, viszont nálam valamiért nem volt jó így, mert ez után a visszaírás helyett csak feltöltötte 2-esekkel (azzal jelölöm a bejárt utat) az egész labirintust.
Azért még próbálkozokKöszönöm az eddigi segítséget!
-
Zsolt1
tag
válasz
EQMontoya #5310 üzenetére
Igen a végén írtam ezt én is, hogy ez az egyik tippem, hogy miért módosul, de akkor van valami egyszerűbb módszer, amivel ki lehet azt küszöbölni, hogy megváltozzon (esetleg másféle átadás, stb...)? Szerintem az lenne a megoldás, ha az egész tömböt eltárolnám egy másolatban, csak ugye nagyon sokszor kéne a rekurzió miatt másolgatni a tömböt ide-oda és nem hiszem hogy túl optimális lenne. (szerk.: na most jól leírtam még egyszer, ami a válaszban volt) Gondolkodtam azon is, hogy csak azokat az elemeket másolgatom, amik a rekurzió alatt megváltoznak, de az valamiért nem működött.
(#5312) EQMontoya
Labirintusban útkeresés backtrack algoritmussal. Azért módosítom, mert ahogy halad befele, úgy mindig beleírom a már bejárt utat és a rekurzióból visszafele meg további lehetséges utakat keresek, mert az összes lehetségeset meg kell találnia. És itt kéne, hogy a backtrack miatti visszaugrásnál eltünjön a módosítás és visszakapjam a rekurzió előtti tömböt. Az nem okoz gondot, hogy ott nincs megjelölve, hogy jártam (sőt a másik irányból érkező utak miatt pont ezért kéne ez), mert az if szerkezet miatt ugyan azt az útvonalat többet már nem vizsgálja meg. -
EQMontoya
veterán
Mert amit átadsz, az nem az egész tömb. Gondolj csak bele, durva is lenne, ha az egész tömböt mindegy egyes hívásnál lemásolnád. Elég költséges lenne a rekurziód.
Amit átadsz, az egy pointer (memóriacím), a tömb kezdetére.Amit leírtál, az ezzel ekvivalens: void rekurzivfv(int* m)
-
Zsolt1
tag
Sziasztok!
Egy olyan kérdésem lenne, hogy egy rekurzív függvény hívásnál, ahol a függvény paramétere egy tömb, ott miért módosul az eredeti tömb a rekurzióból visszatérés után? Elvileg úgy lenne logikus, hogy mivel azt a tömböt csak paraméterként átadom a függvénynek rekurzív hívásnál és az ott abban a fv-ben az újonnan létrehozok egy tömböt, akkor csak odafelé adom át az értékeket, visszafele nincs módosítás, és miután lefutott a rekurzív fv., akkor a felső szinten nem változik meg a tömb tartalma. Azért nem értem a dolgot, mert pont e-miatt kell ugye változó helyett pointert használnom, ha meg akarom tartani az értéket a rekurzióból visszatérés után is.
Ez most szerintem kicsit össze-vissza lett ezért írok inkább egy példát, hogy mire gondoltam:
void rekurzivfv(int tomb[][M]) { //definiálom a fv-t és megadom paraméternek a tömböt
...függvényen belüli műveletek amik módosítják a tömb tartalmát....
rekurzivfv(tomb); //meghívom a fv-t, ami megkapja a tömböt
...itt már a tömb elemeinek értéke módosult, ahhoz képest, ami a függvény elején volt, arra
amire a rekurzió alatt változott pedig elvileg nem szabadna, mert a rekurzív fv-nél a fv újra
létrehozza a tömböt és miután a végigfutott, az innen már nem lehetne elérhető, mert
semmilyen formában nem adtam vissza...
}
Az jutott az eszembe még, hogy a teljes tömb átadásakor ott igazából tömb elejére mutató címet adom csak át (ha jól tudom), szóval olyan mintha az egy pointer lenne elvileg. Lehet, hogy az miatt módosul?
Meg lehet valahogy azt oldani, hogy ne módosuljon a rekurzív meghívás alatt az alap függvényben a tömb? Előre is köszönöm a segítséget! -
G.A.
aktív tag
válasz
dabadab #5302 üzenetére
Utánanéztem, hogy eddig melyiket is használtam a C vagy a C++ és ez elsővel szoktam a mikróvezérlőkre(AVR) kódot írni, WinAVR-el.
A C# most hirtelen azért kellett, mert egy USB átalakító chip-hez akartam egy parancssorban lefutható kódot írni, aminek a példa kódja C#-ben volt leírva.
GA
-
EQMontoya
veterán
Do not feed the troll! Nyilvan nem gondolta komolyan.
-
dabadab
titán
Nyolc bites mikroprocesszoron a C# egyreszt nem letezik, masreszt technikailag kb. lehetetlen megvalositani, harmadreszt meg ha megis sikerul, akkor se akarna senki se hasznalni. (oke, mondjuk a C++ se hangzik tul hihetoen, sot, igazan a C is eleg hatareset)
"Nekem a C, C++ és a C# egy kalap alatt van."
Pedig azert eleg messze vannak egymastol: a C gyakorlatilag hordozhato Assembler a hatvanas evek vegerol, a C# meg nagyjabol minden modern paradigmat (objektumorientacio, generikus programozas, funkcionalis programozas, mittomen) tamogato, virtualis gepen futo cucc.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Külpolitika
- Minden USB-C kábel egyforma? Hát NEM. És ez a baj. – Tech Percek #7
- Villanyszerelés
- Steam, GOG, Epic Store, Humble Store, Xbox PC Game Pass, Origin Access, uPlay+, Apple Arcade felhasználók barátságos izgulós topikja
- Politika
- BestBuy topik
- Tőzsde és gazdaság
- Revolut
- Jövedelem
- Filmvilág
- További aktív témák...
- Synology 3.5" 8TB SATA3 HDD (HAT5310-8T) Új, bontatlan, garanciával!
- Új DELL Inspiron 16 Fémházas Multimédiás Laptop 16" -40% Ryzen 7 8840U 8mag 16/1TB FHD+ IPS
- LG UltraGear 27GR95QE-B Gamer Oled Monitor!27"/2k/240hz/0,03ms/HDMI 2.1/Konzolhoz is
- Új, bontatlan, iPhone 16 Pro Max gyárilag kártya-független, apple világgaranciával
- Új, bontatlan, iPhone 16 Plus gyárilag kártya-független, apple világgaranciával
- Samsung Galaxy S23 / 8/128 GB / Gyárifüggetlen / 12hó Garancia
- AKCIÓ! ASUS PRIME Z390-P i5 8600K 16GB DDR4 512GB SSD RX 6600 8GB GDDR6 DEEPCOOL Matrexx55 630W
- LG 55C4 - 48" OLED evo - 4K 144Hz - 0.1ms - NVIDIA G-Sync - FreeSync - HDMI 2.1 - A9 Gen7 CPU
- Bomba ár! Lenovo ThinkPad T570 - i5-6G I 8GB I 256GB SSD I 15,6" FHD I HDMI I Cam I W10 I Gar
- ÁRGARANCIA!Épített KomPhone i5 13400F 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest