- Karácsonyfaként világíthat a Thermaltake új CPU-hűtője
- Az USA vizsgálja a RISC-V kínai terjedésének kockázatát
- Kicsit extrémre sikerült a Hyte belépője a készre szerelt vízhűtések világába
- Egészen nagy teljesítményspektrumon fedné le a mobil piacot az AMD
- Kihívás a középkategóriában: teszten a Radeon RX 7600 XT
- Kormányok / autós szimulátorok topicja
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Modern monitorokra köthető 3dfx Voodoo kártya a fészerből
- Gaming notebook topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Milyen alaplapot vegyek?
- VR topik (Oculus Rift, stb.)
- Micro Four Thirds
- Milyen videókártyát?
- Épített vízhűtés (nem kompakt) topic
Hirdetés
-
Már tudjuk, hogy mikor jön az idei Xbox Games Showcase
gp A showt egy külön Direct előadás követi, ami szinte biztosan az idei Call of Duty lelepelzése lesz.
-
AMD Radeon undervolt/overclock
lo Minden egy hideg, téli estén kezdődött, mikor rájöttem, hogy már kicsit kevés az RTX2060...
-
Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
it Egyre nagyobb probléma az AI hallucinálása – most az osztrák adatvédelmi hatóság veheti elő a ChatGPT miatt az OpenAI-t, alapvetően a GDPR megsértése miatt.
Új hozzászólás Aktív témák
-
-
félisten
Hali!
Használd a getch()-t csak így simán, ez egy billentyűleütésre vár.
Codeblocks alkalmas rá, mert amikor új projectet kreálsz, akkor kiválasztható, hogy C vagy C++ project legyen.magyarul függvényleírást meg keresgélek, bár nem ártana az angol alapfok
Fire.
UI: bár ha megvan a "Programozzunk C nyelven" című könyv, akkor nem ártana a 483. oldaltól átolvasni(ott vannak a függvények leírása)
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
PazsitZ
addikt
Nekem fordul, fut.
Innen kimásolva egyedül a dupla fölülvonás vagy milyen karaktert hibázott.#include<stdio.h>
main()
{
int szam, jegy;
printf("Kérek egy egész számot:");
scanf("%d",&szam);
printf("\nA fordítottja: ");
do
{
jegy = szam % 10;
printf("%d",jegy);
szam /= 10;
} while ( szam != 0);
}mod: ma mindenki megelőz
[ Szerkesztve ]
- http://pazsitz.hu -
-
félisten
Hali!
ha nem jó, akkor telepítsd újra. Innen letöltheted :[link]
Lehetőleg a MinGW-s változatot töltsd le, mert abban bent van GCC compiler meg a GDB debugger is, amit normálisan a telpítés után konfigurál is.Ha megvan indítsd el, aztán settings/compiler and debugger/toolchain executables fülön auto-detect gomb, okézd le aztán próbáld meg újra létrehozni egy új projectet.
Fire.
UI: gondolom nem egy létező project nevével akarsz új projectet létrehozni?
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
blaces
tag
javítok: az ötjegyű természetes szám: azaz hogy megszámolja a számjegyeket és ha kisebb !=5-el akkor kiír egy hibaüzenetet és vége a programnak, azt már sejtem, hogy if-fel kell (bocs de tényleg amatőr vagyok még...), csak ennek az ötletét nem sejtem, hogy hogyan lehet számjegyeket számolni.
-
ArchElf
addikt
mert if (9999 <= szam && szam <=100000) kellene...
szerintem...
Amit írtál, ott az egyik egyenlőségjelet kiértékel, és a "kiértékelt" eredménnyel számol utána.AE
[ Szerkesztve ]
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
ArchElf
addikt
Nem. Kiértékeli az egyiket, és a kiértékelés eredményével számol tovább (false|true illetve 0|!0 - a true értéke implementációfüggő, lehet 1, -1, akármi, ami nem 0).
AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
sghc_toma
senior tag
Kösz, szóval ha kiértékeli az egyik egyenlőség jelet, akkor már nem foglalkozik a másikkal? (erre nem gondoltam)
nem erről van szó.. kiértékeli azt a kifejezést, hogy 9999 <= szam.. ez vagy igaz, vagy nem.. utána ezt az értéket (igaz, vagy hamis) hasonlítja össze 100000-rel.. a hamis 0, az igaz 1, mindkettő kisebb százezernél -> mindig igaz lesz a feltétel..btw, ha a számod egyenlő 9999-cel, akkor csak négyjegyű.. illetve a 100001 is ötjegyű.. szóval a feltétel helyesen: x > 9999 && x < 1000000
// ehh, elkéstem...
[ Szerkesztve ]
in asm we trust
-
ArchElf
addikt
Gyakorlatilag így néz ki az IF végrehajtása a te programodban:
0.lépés:
9999 <= szam <=100000
1. lépés:
9999 <= szam ?
Értéke 0, vagy 1, attól függően, hogy hamis vagy igaz
2. lépés:
0 vagy 1 <= 100000 ?
Ez pedig mindig igaz, mivel 1 és 0 is mindig kisebb, mint 100000AE
:mod:
hát igen, a magyarázattal meg elkéstem[ Szerkesztve ]
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
blaces
tag
Mivel erősen az órai vázlatra építettem, ezt hogyan lehetne szebben is megírni, hogy a case ágakban ne ismétlődjön a képlet (mert csak az aa, ab, ac változokat kell módosítani).
Erre gondoltam, hogy if else else-vel készíteném el, hogy
printf("Kerem a kezdosebesseget:\n");
scanf ("%lf", &b);
v=b/3.6;
s1=v*t;
if (választottmenüpont == 1) {
s2=v*v/2*aa;}
else (választottmenüpont ==2){
s2=v*v/2*ab;}
else (választottmenüpont == 3){
s2=v*v/2*ab;}
s=s1+s2;
printf("Gepkocsi fekutja normal uton: s=%lf", &s);(vázlatosan)
-
doc
nagyúr
es ez miert szebb, mintha ugyanezt switch-csel csinalnad?
(amugy gondolom a 3. esetnel csak veletlenul irtal ab-t ac helyett)printf("Kerem a kezdosebesseget:\n");
scanf ("%lf", &b);
v=b/3.6;
s1=v*t;
switch (választottmenüpont)
{
case 1: s2=v*v/2*aa; break;
case 2: s2=v*v/2*ab; break;
case 3: s2=v*v/2*ac;break;
}
s=s1+s2;
printf("Gepkocsi fekutja normal uton: s=%lf", &s);vagy akar:
printf("Kerem a kezdosebesseget:\n");
scanf ("%lf", &b);
v=b/3.6;
s1=v*t;
s2=v*v/2;
switch (választottmenüpont)
{
case 1: s2*=aa; break;
case 2: s2*=ab; break;
case 3: s2*=ac;break;
}
s=s1+s2;
printf("Gepkocsi fekutja normal uton: s=%lf", &s); -
doc
nagyúr
az elso harom a vegtelen, mivel ezekben a feltetel nem 0 (es ami nem 0, az a C-ben igaz)
eloszor ugye a feltetel az i valtozo, aminek az erteke 10, tehat igaz
a masodik esetben a feltetelben az i-be 10-et raksz, igy a kifejezes erteke is 10, tehat igaz
a c-nel ugyanaz az eset mint a masodiknal
a harmadiknal viszont egyszer sem fut le a ciklus, mivel a feltetel az, hogy i egyenlo 10-zel, de ez sosem teljesul (i erteke 1, igy be sem megy a ciklusba) -
doc
nagyúr
no, a harmadik:
elso lepesben i erteke 1 lesz
utana megvizsgalja a feltetelt (mivel a C-s for ciklus lenyegeben egy specialis while), a feltetel pedig az, hogy i erteke legyen 10, ami a 10-es erteket adja vissza, ami ugye igaznak szamit, es ezt minden egyes ciklusban vegrehajtja (vagyis i erteke mindig 10)a negyediknel meg nem egeszen az a szitu, eloszor ugye i 1 lesz, utana ellenorzi a feltetelt, es akkor megy bele a ciklusba (szep parasztosan megfogalmazva) ha i erteke 10, de mivel nem annyi, igy sosem hajtodik vegre a ciklusmag
-
nemmegyaC
csendes tag
Haliho mindenkinek!
Nekem lenne 4 (rövidebb...állitolag... ) prog házim. És nem boldogulok vele. C-ben kéne megirni, ömmm...holnapra És futnia kell, csak ugy fogadják el
Tudna nekem ebben segiteni vki okos-lelkes programozo?
A feladatok:
1.,Írjon és deklaráljon C függvényt, amely egy nullavégű sztringben
kicseréli az angol abécé kisbetűit a nekik megfelelő nagybetűkre.
Használjátok a isupper, toupper, islower, tolower függvényeket.int islower(c): TRUE if c is any lowercase char
int isupper(c): TRUE if c is any uppercase char
int tolower(c): convert c to a lowercase
int toupper(c): convert c to uppercase2., Írjon és deklaráljon C függvényt, amely összefűz két, paraméterként
kapott NULL terminált sztringet! Az eredményt ne visszatérési értékként adja
vissza, válasszon más módszert! (Nem használhatjátok a string.h-t.)3., Írjon és deklaráljon C függvényt, amely egy nullavégű sztringben, amely
egyes karaktereket ('1') és nullákat ('0') tartalmaz, minden EGYMÁST KÖVETŐ
ötödik egyes után beír egy nullát ('0')! Az eredmény számára a függvény
foglal helyet. (Ez kicsit hasonlít ez első házi 3., feladatához, de muszáj
gyakorolni, szóval rágjátok át rendesen.)4., Amit az órán lediktáltam: void reverse(char* str,char* rev); A fv. a
rev-t állítja elő a str megfordításával (Pl.: str "Hello" rev "olleH").
Vigyázzatok, hogy a rev nullterminált legyen, és ebben a feladatban hívó
foglal helyet a rev-nek. Írjatok teszt main-t is.Elöre is nagyon köszönöm!
Szép napot mindenkinek
-
Gyuri16
senior tag
tudod mi a kulonbseg e ketto kozott: ++i es i++ ?
a masik dolog hogy a c hogyan ertekeli ki a && et.ellenorzeshez tegyel meg egy printf-t a ciklus utan, hogy lasd mi maradt a valtozokban
int i=5, j=0;
while ( --i>0 && j++<5)
printf("%d, %d\n", i, j);ha lefuttatod ezt irja ki:
4, 1
3, 2
2, 3
1, 4
azt jelenti, hogy i=1, j=4, es ekkor megy a feltetelre a whilenal. mivel az i-nel prefixes a --, ezert a i>0 kiertekelese elott egyel csokkenti az erteket, igy i=0 lesz, es mar nem igaz a i>0, tehat a && jel utan mar lenyegtelen mi van, j marad 4.int i=0, j=0;
while (i++<5 && j++<5)
printf("%d, %d\n", i, j);odaig rendben van hogy i=5, j=5. itt jon a kovetkezo iteracio: i<5 nem ervenyes, igy a ciklus mar nem fog vegrehajtodni, de a postfixes ++ a i<5 utan meg teljesul, ezert 6 lesz
int i=0
for (i++; ++i<=10; i++)
printf("szöveg");lefuttattam, nekem 5 szor irja ki..
//remelem ertheto amit irok, mar kicsit faradt vagyok..
Nem vagyok egoista, csak uborkagyalu!
-
Gyuri16
senior tag
en ilyet nem irnak, c-ben lehet ilyennel jatszani, de szvsz nem szep. viszont amit te irtal nem mukodne tobb okbol sem.
eloszoris a mertekegyseg az char es '0' != 0
aztan while (!(szam && mertekegyseg))
ha mindketto int lenne, akkor pl 1&&1 = 1, !1 = 0 (false), tehat a ciklus nem hajtodik vegrete azt akarod, hogy akkor legyen false (0) ha mindketto 0
tehat a helyes megoldas szerintem while (szam || mertekegyseg)Nem vagyok egoista, csak uborkagyalu!
-
Benmartin
senior tag
szia!
a gond a beolvasással van, a két számláló változód végig nulla marad, vagyis egyik feltétel sem teljesül a programod futása során.
a gond a scanf("%c %c")-el van ugyanis egy lehetséges "p k" input beütésénél a programod egy "p k\n" stringet kap meg, amit nem tudsz feldolgozni "%c %c"-vel.
megoldás: scanf("%s %s",&elso,&masodik);
ja és: elso, masodik típusa char legyen, ne int.
üdv.
[ Szerkesztve ]
-
Benmartin
senior tag
globális meg lokális deklaráció között a foglalás helyében van nagy különbség (előbbi RAM, utóbbi verem).
igazából nem tudok magyarázatot adni, hogy miért ment globálisan deklarált változónál (bár sejtem: valószínűleg %s-nél megpróbálta beleírni a '\0' karaktert a pointer végére és az egyik allokációnál sikerült a másiknál meg nem, talán ez lehet). mindenesetre a megoldás, amit mutattam nem túl szép, pontosan amiatt, hogy igazából nem szabadna char-ba %s-el olvasni, mert string beolvasásnál +1 karakter mindig kell a végére (emiatt lehet túlcsordulás).a scanf("%c %c")-vel az a probléma, hogy amikor beolvasol bármit az inputról, akkor jön vele mindig egy '\n' karakter az enter miatt és ezt nem tudod hol eltárolni, szóval bennemarad billpufferban, a következő beolvasásnál meg szépen előveszi a puffer tartalmat és beleteszi a változódba, viszont ha kiüríted ezt a puffert, akkor rendesen fog működni a beolvasás.
a szabványos inputra (stdin) kell meghívnod az fflush függvényt, szóval a while előtt, majd minden scanf("%c %c") olvasás után hajtsd végre a következő utasítást: fflush(stdin), ezáltal eltűnnek a pufferból az input végén "varakozó" soremelés karakterek.
remélem segítettem és érthető.
-
Jester01
veterán
Ahogy Benmartin írta, az a baj, hogy az enter amit a felhasználó lenyom szintén bekerül a pufferbe. A %c önmagában nem ugorja át a whitespace-t (mi ennek a magyar neve?) de a szóköz az igen.
Tehát pl. ha a következő két sort adta be a felhaszáló: A<szóköz>B<enter>C<szóköz>D<enter> akkor a "%c %c" mit csinál? Berakja az A-t az első változóba, a szóköz miatt átugorja a bemenetben lévő szóközt, majd a B-t berakja a második változóba. Eddig szép és jó. Na de ha most még egy "%c %c" olvasás következik, az szembetalálja magát a pufferben lévő soremeléssel és azt teszi be az első változóba a C helyett. A formátumban lévő szóköz most a C karakterrel foglalkozik, de mivel az nem whitespace ezért nem történik semmi. A második változóba ezután szépen bekerül a C a D helyett. Ha viszont van egy szóköz a formátum elején is, akkor az megeszi a soremelést és minden megint jó.
Jester
-
Jester01
veterán
Van egy felesleges bezáró kapcsos zárójeled és hiányzik egy #include <string.h> Ettől mondjuk még nem működik, de legalább lefordul.
Ezek így nem jók: if (nev[ i ]=='a' || 'A') helyette if (nev[ i ]=='a' || nev[ i ] == 'A') kell. Így talán jó lesz.
Amúgy a tömbös megoldásnál egyszerűen mejegyzed mi volt az előző lenyomott gomb és ha a mostani ugyanaz, akkor kiteszed a szóközt.
[ Szerkesztve ]
Jester
-
Lortech
addikt
jó sok if. nekem valami ilyesmi szimpibb lenne.
char * tomb[] = {"2\0", "22\0", "222\0","3","33","333","4","44",
"444","5","55","555","6","66","666","7","77","777","7777","8",
"88","888","9","99","999","9999"};
int abetu = 'a';
int Abetu = 'A';
char nev[10000];
gets(nev);
int i = 0;
//* char elozo=0;
while(i<(strlen(nev)))
{
if (i > 0 && nev[i] == nev[i-1]) {printf(" "); }
//*vagy if (elozo == nev[i]) {printf(" ");}
//* elozo = nev[i];
if (nev[0] < abetu) {printf("%s",tomb[nev[0]-Abetu]);}
else {printf("%s",tomb[nev[0]-abetu]);}
i++;
}Thank you to god for making me an atheist
-
Jester01
veterán
Hirtelen csak a prímtényezőkre bontás jut eszembe mint alternatíva.
MOD: ha konkrétan nem mondták, hogy a 3 ciklus baj, akkor azon még lehet csiszolni. Nyilván elég akkor futtatni a belső ciklust, ha a külső változó osztója a térfogatnak. Ha osztója, akkor gyorsan le is kell osztani és belső ciklusban már csak ezt felbontani.
[ Szerkesztve ]
Jester
-
Jester01
veterán
Itt van egy ciklussal ... van helyette viszont rekurzió
(a ciklus gyorsabb)int factor(int x, int start, int depth)
{
int count = 0;
int max = sqrt(x);
int i;
for(i = start; i <= max; i++)
{
div_t q = div(x, i);
if (q.rem == 0)
{
count += (depth > 1) ? factor(q.quot, i, depth - 1) : 1;
}
}
return count;
}A feladat eredményét a factor(terfogat, 1, 3) adja.
Ez az én gépemen (2.2GHz) kevesebb mint 5ms alatt lefut bármit is adtam be neki eddig. Na jó, 2 milliárdra már 12msJester
-
Jester01
veterán
Na hát a baj az, hogy a második szám összes jegyét végigszorozza nullával, és ezért lesz annyi nullád. Ha más probléma nincs, akkor egyszerűen speciális esetként lehet kezelni ha bármelyik szám 0, és simán 0-t írni ki.
Egyébként én személy szerint inkább úgy csinálnám, hogy egyáltalán nem törődnék a nullákkal csak a legvégén a kiírásnál szépen elhagynám őket. A szorzást abszolúte nem zavarja, ugye, csak kicsit tovább tart.
Jester
-
Jester01
veterán
-
félisten
Hali!
Mondjuk az nem ártana ha ilyenkor azt is leírnád, hogy milyen fejlesztőkörnyezetet használsz.
Vagy hibás a környezet, vagy olyan kapcsoló(k) vannak beállítva(compiler. linker, stb), amik ezt az eredményt adják. (pl memória modellek)Fire.
UI: csak átfutottam, kipróbálni most nem tudtam, de nem látok bent olyan hibát, ami miatt ilyen "hiba" állna elő, mármint hogy befordul simán(az viszont gyanús hogy nem is lehet futtatni, majd 15-óra után ki tudom próbálni, még az is lehet, hogy kékhalált fog dobni)
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Jester01
veterán
Már majdnem megdícsértelek, hogy milyen ügyesen használod a valgrind-ot.
Az első hiba amit a vg talált, hogy az 57-es sorban nem inicializált változót használsz. Ez konkrétan az strlen(sz) és nyilván azért mert az sz nincs inicializálva. Ráadásul a cikluson belül is csupa szóközzel akarod feltölteni, 0 byteok helyett.
A második az az első folyománya, ha azt javítod, ez is eltűnik.
A harmadik a 37. sorban a main-ben inicializálatlan fej változók miatt van.
A következő a 42. sorban gondolom a fordított while feltétel miatt van.
#1000
[ Szerkesztve ]
Jester
-
félisten
Hali!
Na megnéztem a "gyakorlatban". Valóban a CodeBlocks befordítja minden hiba nélkül, még csak warning sincs. Persze ez csak azt jelenti, hogy formailag helyes a kód, de tartalmilag nem.
Szerencsére kék halált nem dobott, de a hibajelentés küldése MS-nek, az befigyelt. Amellett, hogy javítod Jester01 kolléga válaszában található feltárt hibákat, azonkívűl gondoskodsz arról is, hogy ha egy program paraméterezve fut, akkor MINDEN ESETBEN ELLENŐRIZNI KELL A PARAMÉTEREK MEGLÉTÉT!Különben jön a kékhalaál, meg hibajelentés, meg szegmenshatár túllépés, meg még sok sok minden...
Fire.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Jester01
veterán
Ez meg nem is hasonlít a feladatkiírásra. Eleve egész számokról van szó. A fa elemeknél nem is értem a mezőket. A két bejárást sehol nem látom, ahogy a kiírandó igen és nem szavakat sem. A beolvasás meg úgy látom tetszőleges számú fájlból akar olvasni és sehová nem ír, pedig a feladat szerint egy darab bemeneti és egy darab kimeneti fájl van.
Biztos, hogy ez a program ehhez a feladathoz tartozik?
Jester
-
Jester01
veterán
Na így már jobban hasonlít, bár a feladatkiírás szerint minden szót pontosan egy szóköz választ el egymástól, te meg mindenféle mást is elválasztójelnek tekintesz. Ez okozhat problémát.
De ami biztos rossz, hogy a fájl végén ha éppen soremelés után vagyunk (ami pedig szokás) akkor beszúrsz egy üres szót is a fába. Ettől eltekintve az általam használt tesztadatra jól működött.
Jester
Ú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!
- Apple AirPods Pro (2. generáció) - csiszolt almaságok
- Kormányok / autós szimulátorok topicja
- League of Legends
- Ukrajnai háború
- Call of Duty: Modern Warfare III (2023)
- Eredeti játékok OFF topik
- Szevam: Érzelmi magabiztosság/biztonság - miért megyünk sokan külföldre valójában?
- DIGI kábel TV
- Helldivers 2 (PC, PS5)
- Az USA nem akarja visszafogni Kína növekedését
- További aktív témák...
- Új Hp Pavilion 15-eh Fémházas Szuper Laptop 15,6" -30% AMD Ryzen 7 5700U 8Mag 16/1TB FHD MATT
- ATI RADEON RX 480 -8 gb DDR5 256 bit videokártya
- Geforce GTX 460-1 gb DDR5 256 bit videokártya
- Geforce G 210 -1 gb videokártya
- Díszdobozos Lenovo Yoga Slim 7i Pro "Kis Gamer" Ultrabook 14" -40% i5-11300H 16/512 QHD+ 2,8K OLED