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:] [sziku69:] Fűzzük össze a szavakat :)
- [Re:] PLEX: multimédia az egész lakásban
- [Re:] eBay-es kütyük kis pénzért
- [Re:] Elektromos rásegítésű kerékpárok
- [Re:] [D1Rect:] Nagy "hülyétkapokazapróktól" topik
- [Re:] [gban:] Ingyen kellene, de tegnapra
- [Re:] [Mr Dini:] Mindent a StreamSharkról!
- [Re:] [bacsis:] Készülődés a BRSZK-ra
- [Re:] [Lalikiraly:] Gigabyte G5 MF notebook bemutató
- [Re:] [Luck Dragon:] Asszociációs játék. :)
Szakmai témák
PROHARDVER! témák
Mobilarena témák
IT café témák
GAMEPOD.hu témák
Téma összefoglaló
- Utoljára frissítve: 2014-04-25 14:12:00
LOGOUT.hu
Hozzászólások
doc
nagyúr
a "TO" nem 14 karakter hosszu
Tussky
tag
Valóban Úgy látom,sikerült félrenéznem a leírást.Kösz!
Sk8erPeter
nagyúr
Dehát ez C++...
(#1749) Dealer: konkrétan mi a problémád vele? Nekem VS alatt teljesen kézenfekvő volt a debuggolás, mert nem kellett külön telepíteni hozzá debuggert, és beállítgatni, CodeBlocks-hoz kellett (mondjuk az se volt bonyolult). Jól láthatóan elkülönítve rakták be a saját menüjébe, ott van a Watch ablak, stb. Amúgy biztos a saját helpjében is benne van... De ha konkrétabban kérdezed, akkor biztos itt meg tudják mondani a választ.
Sk8erPeter
Tussky
tag
Stringet lehet valahogy egyszerű lépésben double-á konvertálni ? Elvileg a strtod,atof stringből csinál double-t,gyakorlatilag meg char*-ból...
Karma
félisten
Segíts magadon, a Google is megsegít
“All nothings are not equal.”
Tussky
tag
Kösz!
Közben találtam egy nagyon egyszerű megoldást a c_str személyében
Dealer
tag
Nekem konkrétan ez a Disassembly nem fekszik! Ehez még elég kezdő vagyok tudom, és engem teljesen bezavar. Csak sejtem hogy miaz, és hogy mire való. Állandóan valami source pathot akar tőlem kérni ahogy lépek tovább a programban. Másik problémám hogy nemtudok rendesen változókat figyeltetni vele, hozzá adom watchokat de semmi hatás. Szóval úgyahogy van semmi értelmeset nemtudok vele csinálni
shev7
veterán
mit akarsz disassembelni? nem a sajat kododat debuggolod?
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
Dealer
tag
Semmit sem akarok azzal a dissasemblyvel csinálni hát épp ezaz! De mégis állandóan oda lép be bármit csinálok.
Tegyük fel hogy a programom nem az elvárt ereményt dobja ki. Figyeltetni akarom a változókat és sorrol sorra végigmenni a programon a debug programmal hogy rájöjjek hol csináltam ökörséget.
De most akkor mit hogy csináljak hogy békén hagyjon ez az assembly ablak, és hogy lépésről lépésre tudjam figyelni a programot mikor mit csinál. Kb úgy mint a borland féle turbo C debuggere...
[ Szerkesztve ]
Sk8erPeter
nagyúr
Komolyan nem értem. Miért jön elő neked a Disassemble?
Nem ezzel szoktam fordítani, de most gyorsan kipróbáltam a Visual C++ 2008 Express Edition-t, és itt egy pár kép róla (innen másoltam ki egy full egyszerű kódrészletet), hogyan lehet debuggolni, és watch-olni a különböző változók értékének változását; bekarikáztam pirossal a legfontosabb részeket:
1.) elhelyezgethetsz annyi breakpointot, amennyit csak akarsz (a sorok számánál mondjuk nem többet ) (klikk a sorok számozásánál, megjelenik a piros pötty), aztán Start Debugging: [KÉP1]
2.) kijelölöd, amit figyelni szeretnél, aztán jobb klikk, Add watch: [KÉP2], ekkor bal oldalt alul látható, hogy megjelenik egy Watch ablak, na itt lehet figyelgetni a változók értékeit, ahogy adott esetben értéket kapnak, cserélődnek, "memóriaszemét" van benne, stb.
3.) Continue-val nyomogathatod addig, amíg breakpointjaid vannak, vagy egyéb (véget ér a program, vagy beavatkozást igényel, stb.), és megszakíthatod a Stop Debugginggal: [KÉP3]
Így már tiszta?
Sk8erPeter
shev7
veterán
mondjuk ha olyan utasitasokba amiknek nem te irtad a kodjat hanem pl konyvtari fuggvenyek nem akarnal belepni, hanem csak atlepnel rajta, akkor szerintem tobb szerencsed lenne
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
Dealer
tag
Köszi a segitséget srácok, de a Visual Studio 2006ba nincs ilyen hogy continue csak step into, step over, stb, ilyenek vannak amik hatására előugrik a dissasembly a 2008 meg valamiért le sem akarja compilolni a forráskódomat (szürke a gomb). Vasárnap megyek vissza koliba majd elsírom a nyügömet valami okostojásnak.
Azért thx még1x...
shev7
veterán
hat step overre nem hiszem hogy elo kene ugrania....
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
sghc_toma
senior tag
lehet, hogy hulye kerdes, de csinaltal rendesen project-et? nem csak valami kulonallo forrasfile-t probalsz forditani/debugolni? bar ha nincs project, akkor nem tudom, milyen binarist indit el debugolaskor..
in asm we trust
Dealer
tag
Igen... a kutya itt volt elásva utólag rájöttem
Csak megnyitottam a c fájlt a vs2008-al aztán annyi. Mostmár megy rendesen minden.
Sk8erPeter
nagyúr
Akkor a francnak Print Screeneltem annyit...
Sk8erPeter
kltz
tag
Hello!
Nekem egy olyan kérdésem lenne, hogy van-e arra lehetőség ,hogy mérni a CPU teljesítményt ami majd a végén kiírja kihasználtságot vagy valami hasonlót és ez memóriára is érdekelne.
Üdv KLtz
Gyuri16
senior tag
programot szeretnel irni ami ezt meri, vagy csak egy kesz program kell? milyen oprendszeren?
windows alatt task manager tud ilyet, unixos rendszereknel pedig a top, vmstat es free parancsok.
Nem vagyok egoista, csak uborkagyalu!
kltz
tag
Akkor Windows alatt nincs is esély arra a program futás(bármilyen programra gondolok) után kiírja mondjuk átlagos proci teljesítmény?
Üdv KLtz
Jester01
veterán
Hogy a rákba ne lenne. Gondolkozz már, ha egyszer a task manager is tudja a proci terhelést akkor nyilván meg lehet csinálni. Komolyan nem értem miért olyan nagy kihívás az msdnben megkeresni. Először talán ezt tanuld meg (önállóan információt szerezni) és csak utána programozni
Jester
kltz
tag
Tudom ,de nekem nem C++-ban kellene hanem sima C-ben és én nem tudok róla ,hogy lenne ilyes fajta leírás c-hez.
Üdv KLtz
Jester01
veterán
Légy erős, ez C API. Vagyis nem C++, de ugyanakkor nem is szabvány C hanem a windows által biztosított, C-ből (is) hívható szolgáltatás. Tehát pl. linuxon nem fog működni.
Jester
Retekegér
HARDVERAPRÓD
Adott egy tömb, melyet fel kell tölteni véletlen számokkal, a vonatkozó programrészlet:
for (i = 0; i < NELEM; i++) /* NELEM = 1000*/
*(pd + i) = random(10000)*12.34;
Ezt valaki el tuná magyarázni, miért így kell? --> random(10000)*12.34
<< Heimdal >>
Karma
félisten
Szerintem ez egy remek példája a magic bullshit numbernek.
Semmi funkciója nincs egy ilyen szorzásnak.
“All nothings are not equal.”
Retekegér
HARDVERAPRÓD
A Programozzunk C nyelven! c. könyv egyik példájában van, mindenféle magyarázat nélkül. Illetve a könyvtái függvények leírása között ott a random függvény: egész véletlen szám előállítása 0 és az argumentum-1 között.
Lényeg, hogy nem értettem a 12,34 számmal való szorzást, később következetesen 1,234-el szoroz.
<< Heimdal >>
Karma
félisten
Sajnos attól még nem lesz semmi értelme, tényleg. Én is ezt a könyvet adtam látatlanban az öcsémnek, hogy ebből összeszedheti a nyelv alapjait, de azt tapasztaltam (legalábbis a '96-os kiadásban), hogy sokszor van, hogy nem mondja el a miértet.
Jester01: De ha csak annyi a lényeg, hogy véletlenszámokat generáljunk (ami persze ebben a formában oximoron), akkor nincs semmi értelme. Én ezt feltételeztem.
[ Szerkesztve ]
“All nothings are not equal.”
Jester01
veterán
De van. Ugyanis ebben a formában a generált véletlenszámok 12.34 egész számú többszörösei lesznek. Hogy ez miért jó azt csak a feladat ismeretében lehetne tudni.
Jester
Retekegér
HARDVERAPRÓD
Itt a teljes feladat:
#include <stdio.h>
#include <stdlib.h>
#define NELEM 1000
main()
{
double *pd, sv;
int i , j, lepes;
/* Helyfoglalás ellenőrzéssel */
pd = (double *) calloc( NELEM, sizeof(double));
if (! pd) {
printf("\a\nNincs elég memória!\n");
return -1; /* Hiba történt */
}
/* A tömb feltöltése véletlen számokkal */
for (i = 0; i < NELEM; i++)
*(pd + i) = random(10000)*12.34;
/* Shell - rendezés */
for (lepes = NELEM/2; lepes >0; lepes /=2)
for (i = lepes; i < NELEM; i++)
for (j=i-lepes; j>=0 && pd[j]>pd[j+lepes]; j-=lepes)
{
sv = pd[j];
pd[j] = pd[j+lepes];
pd[j+lepes]= sv;
}
/* A lefoglalt terület felszabadítása */
free(pd);
return 0; /* Hibátlan volt a program futása */
}
<< Heimdal >>
Jester01
veterán
Hát ennek így valóban nincs más értelme azon túl, hogy nem csak egész számokat generál.
Jester
Sk8erPeter
nagyúr
Hali!
Csak általános jellegű kérdés, ezért is teszem OFF-ba:
ide végül is jöhetnek C++-os kérdések (aktuális félév tananyaga ), vagy azzal húzzak majd át a Programozás fórum vagy C++ gyors segitseg kellene topicba?
Külön C++ topicot nem találtam.
Sk8erPeter
bpx
őstag
a "C++ gyors segítség kellene" akkor mi a bánat ha nem külön c++ topic?
j0k3r!
senior tag
elore is bocsanat, ha nagy baromsagot irok, mar reg c-ztem...
itt egy link
en hianyolom a srandot, ha mar "veletlen" szamokrol van szo.
some men just wanna watch the world burn...
Sk8erPeter
nagyúr
Jahh, rájöttem utólag, hogy azt is odaírtam, csak azt utólag találtam és biggyesztettem oda, az a mondat meg figyelmetlenségből benne maradt. Bocsi.
Csak gondoltam megkérdezem, jöhetnek-e ide is C++-kérdések, mert itt viszonylag sokan mozgolódnak. De akkor majd áthúzom a belem oda.
Sk8erPeter
Retekegér
HARDVERAPRÓD
srand != randomize?
rand fv-t véletlen szám előállítására + randomize hívást ennek véletlenszerű inicializálására már használtam egy gondolt szám kitalálós feladathoz
<< Heimdal >>
Karma
félisten
Csak a randomize nem éppen szabványos...
Mondjuk ahogy nézem a random(int) sincs a szabványban, csak a rand(void).
[ Szerkesztve ]
“All nothings are not equal.”
Retekegér
HARDVERAPRÓD
Való igaz, de kénytelen voltam először a nem szabványos megoldásokkal ismerkedni a fenn említett könyvnek köszönhetően...
<< Heimdal >>
j0k3r!
senior tag
sejtettem, hogy keverem...
ugyemlekszem, hogy talan visual basic-ben kellett egy
randomize timer
sor, kulonben mindig ugyanazokat a "veletlen" szamokat dobta, de ebben szinten nem vagyok 100%-ig biztos, utoljara talan kozepiskolaban lattam vb-t : ))
some men just wanna watch the world burn...
elfenomeno
csendes tag
Sziasztok!
Egy kis segítséget szeretnék kérni.
A feladat a következő: Egy sor beolvasása ,majd a convert függvény meghívása, ami azt csinálja, hogy ha 2 egyforma betű jön egymás után akkor a másodikat kihagyja ha szám jön azt megduplázza
az eredménynek a helyét a fg-be kell foglalni
na most a sor olvasása még talán megy fggets-el a stdin-ről beolvasok egy sort
a foglalás már necces 256os tömböt létrehozok a fgbe az úgy jó ??(nem kell minimális foglalás)
de a convert rész már teljesen sansztalan
remélem tudtuk segíteni és előre is köszi !
Korcsii
őstag
nah első prog kérdésem: van egy n elemből álló tömb:
typedef struct {
char varos[21];
char termek[21];
short int darab;
} adatok;
adatok adat[1000];
nos ezt kellene az adat[i].termek szerint ABC sorrendbe rendezni...
számoknál ez nem is nagy cucc, de szövegeknél?
és jó lenne mindezt egy új, mondjuk rendezes nevű eljárásba belepakolni, hogy utána vissza is lehessen rendezni az adat[i].varos szerint (igazából azt nem tudom, hogy hogyan lehetne azt megadni neki, hogy varos vagy termek alapján rendezzen... az if-nél valami értelmesebb megoldást keresek)...
na de ez már opcionális, elkínlódok majd vele, a lényeg inkább az ABC sorrend lenne....
[ Szerkesztve ]
Karma
félisten
Nezd meg az strcmp fuggvenyt, azzal lehet peldaul ket karakterlancot ABC szerint osszehasonlitani.
Az mar egy kicsit nagyobb magia, hogy olyan fuggvenyt irj, ami a struktura tetszoleges tagvaltozoja szerint kepes rendezni. C++-ban tudom hogy van erre megfelelo pointertipus, sima C-ben nem tudom.
[ Szerkesztve ]
“All nothings are not equal.”
shev7
veterán
stdlib-ben vannak rendezo fv-ek (pl qsort) neked csak a rendezeshez hasznalt fuggvenyt kell megirni, (ami megmondja, hogy ket elem kozul az elso a nagyobb, a masodik a nagyobb, vagy egyenloek)
@doc:
[ Szerkesztve ]
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
doc
nagyúr
az stdlib.h-ban definialt qsort lesz a baratod, kell irnod egy fuggvenyt ami eldonti ket structurarol hogy melyik a nagyobb (ez nem lehet gond), aztan csak siman raengedni a tombre, es voila, kesz is
ha csinalsz ket kulon fv-t, egyet a varos, egyet a termek alapjan torteno osszehasonlitasra, akkor meg mar teljesen kesz a feladat
MOD: shev7 megelozott
[ Szerkesztve ]
Korcsii
őstag
kösz mindenkinek, este majd próbálkozok velük
strcmp-t már használtam, de eddig csak arra, hogy megnézzem ugyan az-e a kettő... most már értem, hogy miért is viselkedik úgy, ahogy (magyarul 0, ha ugyanaz)... apropó, nincs valami php.net-hez hasonló oldal, ahol rá lehetne keresni ezekre (eddig PHP-ztam, és nagyon jól jött)?
függvény talán azért lenne szerencsésebb, mert 3x kell használni, és így elég lenne egyszer megírni... de igazán semmi ötletem nincs erre, max az, hogy egy sima váltózóból kap egy értéket, és azt megvizsgálva a megfelelőt pörgeti végig... na de ez lehet még hosszabb/rosszabb, mint ha mindenhova odaírnám...
[ Szerkesztve ]
shev7
veterán
"függvény talán azért lenne szerencsésebb, mert 3x kell használni, és így elég lenne egyszer megírni... de igazán semmi ötletem nincs erre, max az, hogy egy sima váltózóból kap egy értéket, és azt megvizsgálva a megfelelőt pörgeti végig... na de ez lehet még hosszabb/rosszabb, mint ha mindenhova odaírnám..."
Ezt csak en nem ertem mit akar jelenteni?
''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''
Korcsii
őstag
sry, valahogy így gondoltam:
int rendezes(int mit) {
if (mit=1) {
// rendez adat[i].varos szerint
} else if (mit=2) {
// rendez adat[i].termek szerint
} ...
}
na ez most szép és jó, de túl sok értelme nincs... de inkább hagyom, annyira nem lényeges... esetleg majd ha unatkozom, rágooglezek még párszor
Gyuri16
senior tag
ezt pont igy meg lehet irni, olvasd el megegyszer shev7 es doc hszait.
a qsortnak adhatsz egy fuggvenyt, ami eldonti miszerint lesz rendezve. megirod ezt a ket fuggvenyt (varos es termek szerint), es beirod az ifedbe a megfelelo parameterekkel a qsortot
itt egy pelda: [link]
Nem vagyok egoista, csak uborkagyalu!
bpx
őstag
hát pl. az előbb linkelt megoldással qsort-tal és saját összehasonlító függvénnyel lehet rendezni, egy függvénypointer-tömbben (de szép szó ) eltárolod ezeket a fv-eket, és akkor elég a 'mit' változóval ezt a tömböt paraméterezni egy qsort hívásban
persze ha van összesen 2 fv-ed, akkor nem biztos hogy ennyire bonyolítani kell, és simán elég az amit te írtál
Sk8erPeter
nagyúr
Hali!
Van egy program, amiben egy reguláris kifejezés helyes értelmezésével akadtak problémáim, leírom a feladatot (benne a regexpet), aztán ahogy értelmeztem, légyszi javítsatok ki, hogy jó-e...
"Írjon C programot, amely a szabványos kimenetre kiír egy olyan 184 sor hosszú szöveget, amelyben pontosan 3 olyan egymástól különböző sor van, amelyre az alábbi reguláris kifejezés illeszkedik:
^[^#]_*(0x)*[0-9]+W6.*[a-z]+.+qqriq(A|a)
(Az utolsó sor végén is legyen \n karakter!)"
^ : Sor elején fordul elő a minta
[^#] : bármilyen karakter, ami nem #
_* : alsóvonás karakter után tetszőleges számú, bármilyen karakter
(0x) :
* : utána tetszőleges számú, bármilyen karakter
[0-9]+ : szám, mely legalább egyszer szerepel
W6 : W6 ...
. : egy db tetsz. kar.
* : tetszőleges számú, bármilyen karakter
[a-z]+ : a-z tartományból legalább egy betű
.+ : tetsz. kar. legalább egyszer (van ennek értelme? )
qqriq : qqriq...
(A|a) : 'A' vagy 'a' betű szerepel utána
Egy-két helyen nem ment az értelmezés.
Ezenkívül azzal van a gondom, hogy most automatikusan hogyan generáljak egy ilyen szöveget? Mert manuálisan is bevihetnék egy ilyen szöveget, amire ez illeszkedik, de lehet, hogy nem az a feladat lényege (ez nem derül ki világosan számomra)...
Előre is köszi a segítséget!
[ Szerkesztve ]
Sk8erPeter
cucka
addikt
_* : alsóvonás karakter után tetszőleges számú, bármilyen karakter
A * azt jelenti, hogy az előtte álló karakter(ek)ből tetszőleges számú van a mintában, tehát itt tetszőleges számú _ karakterről van szó. A tetszőleges szám bármilyen természetes szám lehet, beleértve a nullát is. Ha majd olyanról beszélnek az iskolában, hogy lezárás, vagy egy halmaz lezártja, na ez az .
(0x) :
* : utána tetszőleges számú, bármilyen karakter
Lásd az előbbi, tehát erre olyanok fognak illeszkedni, hogy epszilon, 0x, 0x0x, 0x0x0x, stb.
. : egy db tetsz. kar.
* : tetszőleges számú, bármilyen karakter
A . bármilyen karakterre illeszkedik, a .* tehát tetszőleges számú tetszőleges karaktert jelent.
.+ : tetsz. kar. legalább egyszer (van ennek értelme? )
Van.
Arra még figyelj oda, hogy a minta végén nincs ott a sorvége, tehát akkor is illeszkedni fog az adott sorra a minta, ha az illeszkedő rész után további karakterek is vannak a sorban.
bpx
őstag
bme prog alap 1?
manuálisan is be lehet adni az ellenőrző programnak a 3 kifejezést (+ a maradék 181 kamu sort valahogy), de mivel nálunk úgy volt, hogy a következő feladatban kaptunk egy viszonylag nagy bemenetet és el kellett dönteni, hogy melyik sorra illeszkedik a kifejezés, jobban jársz ha már most kódolsz
az ellenőrzés állapotgéppel megy, ha megtalálod a jó állapotokat, akkor nyilván lehet írni egy olyan verziót is, ahol az állapotokban az ellenőrzés helyett vmi random* (a feltételeknek megfelelő) kimenetet generál
[ Szerkesztve ]
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!