Hirdetés

2024. április 18., csütörtök

Gyorskeresés

Hozzászólások

(#2001) Karma válasza shev7 (#2000) üzenetére


Karma
félisten

Nem, ha ilyeneket vágsz hozzá.

“All nothings are not equal.”

(#2002) shev7 válasza Karma (#2001) üzenetére


shev7
veterán

koszi. megvan a mai olvasnivalom :D

''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''

(#2003) cellpeti


cellpeti
veterán

Sziasztok!

Van egy ilyen feladatom:

Telefonszámot kellett bekérni, amely 9 hosszúságú és az első két karakter
vagy 20 vagy 30 vagy 70. A programnak maximum 1000 telefonszámot kel tudnia
kezelni.
Ezután kérjen be egy szavazatot amely A,B, C és D lehet (kisbetűk) is.
Minden más szavazat érvénytelen.

Alapfeladat: Írassa ki melyik betűből jött a legtöbb szavazat (érvényesek
közül) és, hogy hány érvénytelen szavazatot küldtek.

A telefonszámot leellenőriztem, a szavazatokat is tömbbel kell megoldani vagy sima getchar-val? Illetve,hogy tudom letárolni a jót és hogyan a rosszakat? :U

[ Szerkesztve ]

Tigris, tigris, csóvafény...

(#2004) Gyuri16 válasza cellpeti (#2003) üzenetére


Gyuri16
senior tag

csak 5 valtozo kell, amiben az egyes szavazatok gyakorisagat szamolod. (ez akar lehet tomb is, aminek ot eleme van, elso negy az abcd az otodik pedig a tobbi). nem igazan ertem a kerdesed lenyeget.. beolvasod egyesevel a szavazatokat es noveled a megfelelo valtozot.

Nem vagyok egoista, csak uborkagyalu!

(#2005) cellpeti válasza Gyuri16 (#2004) üzenetére


cellpeti
veterán

ez így mind szép és jó,csak éppen hogyan számolom a gyakoriságot? :O

Tigris, tigris, csóvafény...

(#2006) Karma válasza cellpeti (#2005) üzenetére


Karma
félisten

votes[toupper(currentVote) - 'A']++;

Nézd át, mit jelent a gyakoriság :U Középiskolás matek.

“All nothings are not equal.”

(#2007) Gyuri16 válasza cellpeti (#2005) üzenetére


Gyuri16
senior tag

most ez komoly? ha 'a'-t olvasol be akkor noveled a tomb[0]-t, ha 'b'-t akkor a tomb[1]-et, ugyanigy c es d. ha mast olvasol be akkor meg a tomb[4]-et noveled.

Nem vagyok egoista, csak uborkagyalu!

(#2008) cellpeti válasza Gyuri16 (#2007) üzenetére


cellpeti
veterán

ok,de ha ez megvan,akkor utánna hogy döntöm el,hogy melyikből jött a legtöbb? :U

Tigris, tigris, csóvafény...

(#2009) cellpeti válasza Gyuri16 (#2007) üzenetére


cellpeti
veterán

bocsi,valamiért 2x írt!

[ Szerkesztve ]

Tigris, tigris, csóvafény...

(#2010) Karma válasza cellpeti (#2009) üzenetére


Karma
félisten

Mondjuk maximumkereséssel? :U
Komolyan, miért jársz oda?

“All nothings are not equal.”

(#2011) Sk8erPeter válasza Karma (#2006) üzenetére


Sk8erPeter
nagyúr

votes[toupper(currentVote) - 'A']++;
Mármint ez akkor jó, ha currentVote-ot előtte megfelelően ellenőrizte. :)

Sk8erPeter

(#2012) Karma válasza Sk8erPeter (#2011) üzenetére


Karma
félisten

Feltételeztem, hogy a specifikációnak megfelelő bemenet érkezik :U
Meg az se árt, ha deklarálja a változót :U

Nem igazán akarom megírni az egész feladatot.

[ Szerkesztve ]

“All nothings are not equal.”

(#2013) cellpeti válasza Karma (#2010) üzenetére


cellpeti
veterán

met te gondolom alapból tudtál programozni,mi? :U

Ha nagyon akarod tudni a többi tárgy mind megy,csak ez a szar nem.

Ez meg mi a fene: votes[toupper(currentVote) - 'A']++;

[ Szerkesztve ]

Tigris, tigris, csóvafény...

(#2014) Sk8erPeter válasza Karma (#2012) üzenetére


Sk8erPeter
nagyúr

Jó, hát ilyen alapon a Z betű is a specifikációnak megfelelő bemenet, csak érvénytelen szavazatnak számít... :U Akkor meg a votes tömböt jól túlindexelted, akkor már szét lehetne bontani...

Mi van, Te is rászoktál a zöld fejre? :DD (nem kell ám rám haragudni azért, mert mertem szólni én is valamiért, ja, de nyilván csak abba lehet belekötni, amikor én írok meg egy részprogramot itt a topicban...)

Sk8erPeter

(#2015) Sk8erPeter válasza cellpeti (#2013) üzenetére


Sk8erPeter
nagyúr

"ez a szar" egy eléggé alaptantárgy az informatikus képzésben...

A Karma által írt votes tömbben tárolod, hogy épp melyik szavazatból mennyi érkezett, azt növelgeted, amikor érkezik egy szavazat. Arra mondjuk figyelni kell, hogy érvénytelen szavazatnál ne indexeld túl a votes tömböt, előtte megfelelő ellenőrzéssel.

Sk8erPeter

(#2016) Karma válasza Sk8erPeter (#2014) üzenetére


Karma
félisten

Azért mégis más egy félmegoldás és egy rossz megoldás ;]

Csak szórakozok, peace! :P
Egyébként én bírom a kritikát, de meg is védem amit írok.
Szívügyet meg nem csinálok belőle, Neked se kéne.

cellpeti: Nem az a baj, hogy nem megy, hanem az, hogy még mindig nem megy, pedig már több mint fél éve kérdezgetsz alap dolgokat. Egyébként az újkiadású négyjegyű függvénytáblákban is benne van pár alap algoritmus (lineáris keresés, maximumkeresés, válogatás...), esetleg azt nézd meg.

Egyébként a későbbiekben ez csak rosszabb lesz.

[ Szerkesztve ]

“All nothings are not equal.”

(#2017) cellpeti válasza Karma (#2010) üzenetére


cellpeti
veterán

Függvénytáblám nincs, mivel nem lehet használni semelyik tárgynál se.
Nem tudom,hogyan kell megírni a maximumkeresést!

[ Szerkesztve ]

Tigris, tigris, csóvafény...

(#2018) Karma válasza cellpeti (#2017) üzenetére


Karma
félisten

De otthon olvasgathatod azért, és nem hiszem, hogy nagy költség lenne.

A maximumkeresés lényege, hogy:
1) Kinevezed a tömb első elemét maximumnak.
2) Egy ciklusban bejárod a tömböt, ha a maximumnál nagyobb számot találsz, az lesz az új maximum.
3) A végén visszaadod vagy a maximumot, vagy az indexét, attól függően mi kell.

Pl. egészekre, feltételezve, hogy a tömb legalább egy elemű, és a legnagyobb elem indexét kell visszaadni (mint pl. a feladatodban is kell majd):

int max(int count, int* array)
{
int maxIndex = 0;
int i;

for (i = 1; i < count; i++)
{
if (array[i] > array[maxIndex])
{
maxIndex = i;
}
}

return maxIndex;
}

Jester01: Kösz, behaluztam valamiért, hogy ennek van értelme.
Javítottam a hagyományos megoldásra.

[ Szerkesztve ]

“All nothings are not equal.”

(#2019) Jester01 válasza Karma (#2018) üzenetére


Jester01
veterán

int count = sizeof(array)/sizeof(*array); // a tomb teljes merete bajtban osztva egy elem hosszaval -> elemszam

Ez jó trükk, csak int*-ra nem működik :N

Jester

(#2020) Barthezz2 válasza Karma (#2016) üzenetére


Barthezz2
MODERÁTOR

Egy kicsit cellpeti védelmében elmondanám, hogy vannak "érdekes" dolgok a mi egyetemünkön.. Én ugyan gépész szakra járok, de elképzelhetőnek tartom, hogy náluk sem jobb a helyzet. Konkrétan a tanárok fele szarik rá, hogy tanítani is kellene, követelni persze tudnak. A semmiből meg te sem tudod megtanulni. Abban egyetértünk, hogy a gyakorlás a legjobb tanulás, csak ahhoz legalább egyszer nem árt ha látod, hogy mit kell csinálnod, mert anélkül nehéz..
Az meg elmond valamit, hogy az infósok sorra jönnek át gépésznek.. én mondjuk pont a fordítottján gondolkodom, mert a gépészettől már hányni tudnék, és rohadtul nem érdekel az egész, nameg szép túlcsúszóként lassan a gatyám rámegy, hogy ha be akarom fejezni ezt a szart :O Nade off vége..

Everybody lies.

(#2021) Karma válasza Barthezz2 (#2020) üzenetére


Karma
félisten

Én is nemrég írtam, hogy szerintem az egyetemi programozás oktatás igen... kritikán aluli, legalábbis programozni nem tanítanak rajta, csak ledarálják a régi/új nyelveket, és szevasz, csinálj amit akarsz. De ha az ember már az informatikus pályára lépett, valahogy meg kell tanulnia mindenképpen, mert létfontosságú.

“All nothings are not equal.”

(#2022) shev7 válasza Barthezz2 (#2020) üzenetére


shev7
veterán

szerintem ahhoz "nem kell tudni programozni", hogy 5 elem kozul ki tudd valasztani a legnagyobbat

''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''

(#2023) cucka válasza shev7 (#2022) üzenetére


cucka
addikt

Dehogynem. Igazából az emberek jelentős része képtelen a legalapvetőbb színvonalon is megtanulni programozni. Az okokat nem tudom, nyilván bizonyos agyterületek fejlettségére lehet visszavezetni az egészet.
Ezt nem negatív beszólásnak szánom, mert mindenki tud mondani olyan, nem tanulható készségeken alapuló területet, amelynek elsajátítására képtelen lenne (pl. művészetek, nyelvérzék, matematika, stb.)

Két érdekes cikk (főleg az első vág témába, illetve az ott linkelt "kutatás"):
[link]
[link]

[ Szerkesztve ]

(#2024) Barthezz2 válasza shev7 (#2022) üzenetére


Barthezz2
MODERÁTOR

Nem is konkrétan erre írtam, hanem hogy Karma megjegyezte, hogy már egy ideje ide jár kérdésekkel. Meg mellesleg mikor az ember tök ideg mert valami nem akar menni, akkor bizony simán lehet kérdés az is, hogy mi az a májkrém :D Bár nem tudom, hogy jelenleg mik a körülmények nála, de gyanítom nem jókedvéből írogat ide..
Egyébként ebből a szempontból igazad van.

Everybody lies.

(#2025) mobal


mobal
MODERÁTOR

Sziasztok!

Itt mi a gond? :F nem jövök rá:
[link]

(a lista kiirásakor van gond. "szinek:" ezt még kiirja aztán megáll :F)

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#2026) Karma válasza mobal (#2025) üzenetére


Karma
félisten

Mit csinál ott az az i paraméter?

printf("szinek:\n",i);

“All nothings are not equal.”

(#2027) mobal válasza Karma (#2026) üzenetére


mobal
MODERÁTOR

szia! szinek száma, hogy hány darab van. köszi azt sem vettem észre. javítottam de még mindig rossz.

MOD:

while(color!=NULL);
{
printf("%p%p%s\n",color,color->kov,color->szin);
color=color->kov;
}

sima while(color) helyett. de így sem jó. ez így korrekt?

[ Szerkesztve ]

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#2028) Gyuri16 válasza mobal (#2027) üzenetére


Gyuri16
senior tag

pontosvesszo a while utan

mod:
ilyenkor ajanlom, hogy debuggold. nem megallt a program, hanem futott, csak nem jutott tovabb a whileon. ha lepteted akkor rajossz

[ Szerkesztve ]

Nem vagyok egoista, csak uborkagyalu!

(#2029) Karma válasza mobal (#2027) üzenetére


Karma
félisten

Ez aljas volt. A 66. sorban ott hagytál egy pontosvesszőt a while után, így végtelen ciklusba került a program.

Szerk.: Francba, amíg debuggoltam elkéstem :P

Egyébként az XCode statikus kódelemzője is észrevette a gebaszt ;)

[ Szerkesztve ]

“All nothings are not equal.”

(#2030) ivana


ivana
Ármester

Bocs véletlenül írtam

[ Szerkesztve ]

(#2031) mobal


mobal
MODERÁTOR

köszi a válaszokat! a franc essen bele... debuggolom én csak nem elég részletesen :(

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#2032) cellpeti


cellpeti
veterán

Sziasztok!

Ez elméletileg ez egy rendezés amely növekvő sorrendben írja ki a számokat.
De nem teljesen értem,hogy hogy is van ez. Az n az elemek száma? A forok pontosan mit csinálnak,azon kívűl,hogy végig mennek a tömbön?

void rendez(float w[], int n) {
int i, j;
int max;
float g;
for(i=0;i<n-1;++i){
for(j=i+1, max=i; j<n; ++j)
if(w[j]<w[max]) max=j;
if(i!=max){
g=w[i];
w[i]=w[max];
w[max]=g;
}
}
}

Tigris, tigris, csóvafény...

(#2033) Karma válasza cellpeti (#2032) üzenetére


Karma
félisten

Ez biztosan nem, mert ez egy csökkenő sorrendbe rendező beszúrásos rendezés.
A lényeg az, hogy sorban megkeresi (1. ciklus) az első, második, harmadik elemeket (ehhez a 2. ciklust használja), majd berakja egy cserével a megfelelő helyre.

“All nothings are not equal.”

(#2034) cellpeti válasza Karma (#2033) üzenetére


cellpeti
veterán

Az n az összes elem száma,ugye?
Tehát akkor az első 0-tól megy, de miért n-1-ig? A második megy az az első elemtől, ameddig nem az lesz a maximum,vagy mi? Ha w tömb j-edik eleme kisebb mint a w tömb legnagyobb eleme,akkor a j lesz a maximum!? Ha i nem egyenlő max-val,akkor g-be belerakja a w tömb iedik elemét. Majd utánna w tömb i.edik elemét egyenlővé teszi w tömb max elemével és a végén a max lesz a g? :U

[ Szerkesztve ]

Tigris, tigris, csóvafény...

(#2035) shev7 válasza cellpeti (#2034) üzenetére


shev7
veterán

szerintem ez egy novekvobe rendezo algoritmus.

Mukodese egyszeru: ahogy a kulso for ciklus vegighalad az elemeken az aktualisan vizsgalt elem elott a tomb mar rendezett.

A belso ciklus a kulso ciklus aktualis elemetol kezdve egy minimum keresest hajt vegre. Ha talal egy elemet ami kisebb mint az i. elem akkor megcsereli oket ( a g valtozot ne keverd ide, az csak egy segedvaltozo a cserehez) es innentol kezdve ahhoz fog hasonlitani. Tehat miutan a belso for ciklus lefutott az i. elem mindig a tomb hatralevo reszenek legkisebb eleme lesz.

Ez megmagyarazza azt is, hogy miert csak az utolso elotti elemig (n-2 ig) megy a kulso forciklus. Amikor i = n-2 akkor a tomb 0 - (n-3) - ig novekvobe rendezett. A belso ciklus lefutasa utan (n-2) - be bekerul a ket utolso elem kozul a kisebb, tehat az egesz tomb rendezett. (Mas szoval: egy elemet nincs ertelme rendezeni, egy elem mindig rendezett)

''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''

(#2036) Karma válasza shev7 (#2035) üzenetére


Karma
félisten

Bakker, teljesen jogos.
Minimumot keres (< a művelet), miközben max a változó neve :C

[ Szerkesztve ]

“All nothings are not equal.”

(#2037) shev7 válasza Karma (#2036) üzenetére


shev7
veterán

igen nekem is okozott egy kis fejtorest, hogy miert is max az ott, de semmilyen logikus magyarazatot nem talalok ra :D

''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''

(#2038) cellpeti válasza shev7 (#2035) üzenetére


cellpeti
veterán

Nagyon köszönöm a segítséget! :R

Tigris, tigris, csóvafény...

(#2039) mobal


mobal
MODERÁTOR

Sziasztok!

Azzal fordulnék hozzátok most, hogy lenne egy char tmp[99] változó amibe van egy szöveg (dátum + név pl.: 1990"\t"Valaki). strtok() függvénnyel megkeresnék benne egy számot amit után tabulálás van és tárolnám(%d\t). Az utána következő részt ami egy név beleraknám egy szöveges tömbbe. Na most semmiért nem tudom a dátumot eltárolni, a név tárolás működik.. Így próbálkozom:

pch=strtok(tmp,"\t");
kor[j]=(int)pch;
while(pch!=NULL)
{
strcpy(nev[j],pch);
pch=strtok(NULL,"\n");
}

A név tárolása megy. Vagy hibát kapok, vagy fals számot rak el.

[ Szerkesztve ]

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#2040) mobal válasza mobal (#2039) üzenetére


mobal
MODERÁTOR

Ez lemaradt:
char nev[99][SIZE]; /* nevek tárolására tömb */
int kor[99]; /* kor tárolására tömb */

int i,j=0; /* bemenetek számolása */

char tmp[SIZE]; /* karakteres tömb változó */
char *pch;

Update: Megoldottam!

kor[j]=atoi(pch);

U.i.: Bocsi a dupla HSZ -ért!

[ Szerkesztve ]

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#2041) sghc_toma válasza mobal (#2040) üzenetére


sghc_toma
senior tag

egy sscanf-fel jobban jartal volna:

sscanf(tmp, "%d\t%s", &kor[j], nev[j]);

in asm we trust

(#2042) cellpeti


cellpeti
veterán

sziasztok!

Segítséget szeretnék kérni. Bekérek egy neptun kódot és meg szeretném számolni,hogy hány betű és hány szám van benne(csak ezek lehetnek benne, azt már kikötöttem), majd kiiratni.

Tigris, tigris, csóvafény...

(#2043) cellpeti válasza cellpeti (#2042) üzenetére


cellpeti
veterán

Elnézést a hsz.-ért, már rájöttem!

Tigris, tigris, csóvafény...

(#2044) mobal


mobal
MODERÁTOR

Sziasztok! Lenne egy kérdésem és kérnék egy segítséget:

Vannak adatok: Név, ID, egyéb... struktúrában kéne tárolni. Ezt több elem esetén csak láncolt listával lehet megoldani? ( :B )

Továbbá ha van ez a struktúrám. Random sorrendben minden elemet kiíratni (minden elem 1x) ennek a megvalósítására ötleteket kérnék.

mobal,

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#2045) Karma válasza mobal (#2044) üzenetére


Karma
félisten

Nem kötelező láncolt listát használnod, de vannak helyzetek, amikor az a legpraktikusabb. A kérdés az, hogy hány elemről van szó, illetve hogy milyen műveleteket akarsz rajtuk végezni.

Ugyanis 1) a struktúrákból is lehet tömböket csinálni a stacken, ha kevés darab lesz belőlük. 2) A heapen is csinálhatsz tömböt, ekkor ugye a méret nem akkora para. 3) Valamint ott vannak a láncolt listák, amit említettél. 4) Vannak hibrid megoldások, amikor egy tömbben ábrázolsz egy listát egy a következő elem sorszámát tartalmazó indexmezővel; és biztos van, ami nem jutott eszembe.

A műveleteket azért mondtam, mert a tömbökben gyors a navigáció, de lassú a törlés; a listákban gyors a beszúrás és törlés, de lassan lehet bejárni.

“All nothings are not equal.”

(#2046) mobal válasza Karma (#2045) üzenetére


mobal
MODERÁTOR

szia! köszi a választ! azért írtam a láncolt listát mert a méret nem fix. deklarálok 99 elemű tömböt de ha több van mi lesz. lényegében 3 adat név, id és meg még valami.

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#2047) Karma válasza mobal (#2046) üzenetére


Karma
félisten

Stacken lévő tömb esetén bukta.
Heapen lévő tömbnél viszont a realloc függvénnyel meg lehet oldani.

“All nothings are not equal.”

(#2048) Gyuri16 válasza mobal (#2046) üzenetére


Gyuri16
senior tag

egyik kerdes, hogy mivel indexeled az adataid, tehat mi szerint akarsz keresni a strukturaban.

masik kerdes, hogy milyen operaciokat akarsz elvegezni a strukturan. tehat az indexeles/kereses legyen gyors, vagy fontos hogy pl ket strukturat gyorsan tudj egyesiteni.

legkezenfekvobb megoldas egy dinamikus tomb a c++-os vector mintajara, ahol te kezeled a memoriat, es ha elfogy akkor lefoglalsz ketszer annyit.
tovabba vannak bonyolultabb strukturak, itt tenyleg az a kerdes mire kell, egy par tipp:
vector: random indexeles gyors, viszont problemas ha elfogy a hely. egyesiteni szinten gond
lancolt lista: talan a legegyszerubb megoldas, viszont lassu a kereses benne.
red black tree: kereses logaritmikus, mivel fastruktura mindig annyi helyet foglalsz le amennyi kell. eleg bonyolult, szoval ha sima c-rol van szo akkor csak tenyleg nagy adatokhoz allnek neki programozni
hash table: kereses eleg gyors, itt is gond lehet a lefoglalt memoria nagysaga, nem art elore tudni kb mennyi adat lesz

sok megoldas van, szoval nem artana tudni mire fogod hasznalni

Nem vagyok egoista, csak uborkagyalu!

(#2049) mobal válasza Gyuri16 (#2048) üzenetére


mobal
MODERÁTOR

szia! lényegében csak adatok tárolására majd random sorrendben történő kiíratására. elhatároztam -> láncolt lista viszonylag könnyen meg tudom csinálni és dinamikusan. másik: hogy lehetne a tartalmát random kiíratni úgy, hogy minden elem szerepeljen és csak egyszer (nincs ötlet).

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#2050) Gyuri16 válasza mobal (#2049) üzenetére


Gyuri16
senior tag

ha a random kiiratas a cel, akkor en a vectort ajanlanam. nem nagy gond megirni, es sokkal elegansabb lesz. lancolt listat sorrendben kiirni egyszeru, de veletlenszeruen nagyon nem effektiv. (lehet ugyeskedni azzal, hogy kiiratsz egy elemet, aztan veletlenszeruen elore vagy hatra mesz egy veletlen mennyiseget, de nem vagyok benne biztos, hogy igy matematikailag ugyanakkora lenne az eselye az osszes permutacionak, nem beszelve arrol, hogy ez kimeriti a ganyolas fogalmat)

Nem vagyok egoista, csak uborkagyalu!

Copyright © 2000-2024 PROHARDVER Informatikai Kft.