Fontos linkek a C-ről:
Prog.hu-s cikkek
Prog.hu-s tudástár témák
The C Library Reference Guide
Standard C
Wikipedia
C Tutorial
Programming in C
Bevezetés a C programozási nyelvbe
Gyorskeresés
Legfrissebb anyagok
- Bemutató Route 66 Chicagotól Los Angelesig 2. rész
- Helyszíni riport Alfa Giulia Q-val a Balaton Park Circiut-en
- Bemutató A használt VGA piac kincsei - Július I
- Bemutató Bakancslista: Route 66 Chicagotól Los Angelesig
- Tudástár AMD Radeon undervolt/overclock
Általános témák
LOGOUT.hu témák
- [Re:] [Luck Dragon:] Asszociációs játék. :)
- [Re:] [D1Rect:] Nagy "hülyétkapokazapróktól" topik
- [Re:] [sziku69:] Fűzzük össze a szavakat :)
- [Re:] [btz:] Internet fejlesztés országosan!
- [Re:] [gban:] Ingyen kellene, de tegnapra
- [Re:] [sziku69:] Szólánc.
- [Re:] Elektromos rásegítésű kerékpárok
- [Re:] [Luck Dragon:] MárkaLánc
- [Re:] eBay-es kütyük kis pénzért
- [Re:] [Doky586:] Helyreállítási partíció létrehozása (javítása)
Szakmai témák
PROHARDVER! témák
Mobilarena témák
IT café témák
Téma összefoglaló
- Utoljára frissítve: 2014-04-25 14:12:00
LOGOUT.hu
Hozzászólások
Karma
félisten
Nem, ha ilyeneket vágsz hozzá.
“All nothings are not equal.”
shev7
veterán
koszi. megvan a mai olvasnivalom
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
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?
[ Szerkesztve ]
Tigris, tigris, csóvafény...
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!
cellpeti
veterán
ez így mind szép és jó,csak éppen hogyan számolom a gyakoriságot?
Tigris, tigris, csóvafény...
Karma
félisten
votes[toupper(currentVote) - 'A']++;
Nézd át, mit jelent a gyakoriság Középiskolás matek.
“All nothings are not equal.”
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!
cellpeti
veterán
ok,de ha ez megvan,akkor utánna hogy döntöm el,hogy melyikből jött a legtöbb?
Tigris, tigris, csóvafény...
cellpeti
veterán
bocsi,valamiért 2x írt!
[ Szerkesztve ]
Tigris, tigris, csóvafény...
Karma
félisten
Mondjuk maximumkereséssel?
Komolyan, miért jársz oda?
“All nothings are not equal.”
Sk8erPeter
nagyúr
votes[toupper(currentVote) - 'A']++;
Mármint ez akkor jó, ha currentVote-ot előtte megfelelően ellenőrizte.
Sk8erPeter
Karma
félisten
Feltételeztem, hogy a specifikációnak megfelelő bemenet érkezik
Meg az se árt, ha deklarálja a változót
Nem igazán akarom megírni az egész feladatot.
[ Szerkesztve ]
“All nothings are not equal.”
cellpeti
veterán
met te gondolom alapból tudtál programozni,mi?
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...
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... 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? (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
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
Karma
félisten
Azért mégis más egy félmegoldás és egy rossz megoldás
Csak szórakozok, peace!
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.”
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...
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.”
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
Jester
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 Nade off vége..
Everybody lies.
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.”
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!''
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 ]
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 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.
Sziasztok!
Itt mi a gond? nem jövök rá:
[link]
(a lista kiirásakor van gond. "szinek:" ezt még kiirja aztán megáll )
"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."
Karma
félisten
Mit csinál ott az az i paraméter?
printf("szinek:\n",i);
“All nothings are not equal.”
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."
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!
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
Egyébként az XCode statikus kódelemzője is észrevette a gebaszt
[ Szerkesztve ]
“All nothings are not equal.”
ivana
Ármester
Bocs véletlenül írtam
[ Szerkesztve ]
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."
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...
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.”
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?
[ Szerkesztve ]
Tigris, tigris, csóvafény...
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!''
Karma
félisten
Bakker, teljesen jogos.
Minimumot keres (< a művelet), miközben max a változó neve
[ Szerkesztve ]
“All nothings are not equal.”
shev7
veterán
igen nekem is okozott egy kis fejtorest, hogy miert is max az ott, de semmilyen logikus magyarazatot nem talalok ra
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
cellpeti
veterán
Nagyon köszönöm a segítséget!
Tigris, tigris, csóvafény...
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."
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."
sghc_toma
senior tag
egy sscanf-fel jobban jartal volna:
sscanf(tmp, "%d\t%s", &kor[j], nev[j]);
in asm we trust
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...
cellpeti
veterán
Elnézést a hsz.-ért, már rájöttem!
Tigris, tigris, csóvafény...
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? ( )
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."
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.”
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."
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.”
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!
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."
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!
Téma tudnivalók
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
Mai Hardverapró hirdetések
prémium kategóriában
- HP ProBook 650 G5 Ezüst i5 8365U/8GB/256GB SSD/Windows 11/HUN BILL - 10% Most Csak 110.150 Forint
- Google Chromecast Audio - Új és használt darabok
- Motorola Edge 40 8/256gb - Újszerű, akár beszámítással
- Xiaomi Poco X5 Pro 8/256gb - Újszerű akár beszámítással
- Apple iPhone 12 Pro 128gb Gold - Karcos, kis hiba, akku 85%, Yettel függő, akár beszámítással