Új hozzászólás Aktív témák
-
kispx
addikt
A readme-ben le van írva, hogy mit kellene csinálni, viszont ahogy nézem ahhoz a msys is kell. Itt most nincs egyszerű út.
Egy próba elejéig megpróbálhatod, hogy a *.c és a *.h fájlokat hozzácsapod a projekthez. Viszont azt ki kell majd találni, hogy melyik előfordítói direktívákat kell definiálnod, hogy leforduljon ez a pár fájl.
-
kispx
addikt
Milyen fordítót használsz a code::blockhoz?
Alapértelmezetten MinGW van hozzácsomagolva, ehhez van pár csomag:
https://stackoverflow.com/questions/3781211/c-regex-library-with-mingw
https://sourceforge.net/p/mingw/regex/ci/master/tree/ -
kispx
addikt
válasz
atkamaly #5893 üzenetére
A elkezded debuggolni az alkalmazást, akkor látszik a colour változóba az előző sor '\n' kódját rakja bele. Számot pedig nem olvasott be. If-ek nem futnak le, viszont kiírja az előző állapotot. Majd a rákövetkező ciklusban sikeresen beolvassa az adatot.
Érdemes a bemenő adatok számát ellenőrizni.
if (scanf("%c%d", &colour, &number) == 2)
{
// A program többi része
}[ Szerkesztve ]
-
kispx
addikt
válasz
Milgram1 #5845 üzenetére
fread(&nevek,sizeof(nevek),1,fp);
A nevek az egy típus, nem változó. Egy típusnak nem tudod lekérdezni a memóriában elfoglalt címét. Szerintem azuj
változóba szeretted volna beolvasni.aktualis=fread(&nevek,sizeof(nevek),1,fp);
A fentebb lévő hiba ugyanitt is előfordul. + Az fread visszatérési értéke a sikeresen beolvasott elemek száma size_t (nálam ez unsigned int) formátumban. unsigned intből sehogy nem lesz struct nevek típus.[ Szerkesztve ]
-
kispx
addikt
válasz
#29810176 #5827 üzenetére
Offline könyv: Programozzunk C nyelven!
-
kispx
addikt
válasz
Milgram1 #5755 üzenetére
1)
char * strcpy ( char * destination, const char * source );
Paraméterek sorrendjére ügyelj. Így a csere így néz ki:strcpy(tmp1, nevek[j]);
strcpy(nevek[j], nevek[j+1]);
strcpy(nevek[j+1], tmp1);2) for ciklus feltétele rossz volt. A második részt nézd meg.
for(int j=0; db-i-1; j++)
helyen inkábbfor(int j=0; j<db-i-1; j++)
-
kispx
addikt
válasz
DasBoot #5758 üzenetére
Akkor manuálisan kell beállítanod a toolchain-t.
Settings menu -> compiler menüpont -> Toolchain executables fül
Felül válaszd ki a GNU GCC Compiler-t
A legfelső szöveges mezőbe, add meg a Mingw gyökérkönyvtárát.
Majd ellenőrizd le, hogy az alatta található exe-k megtalálhatóak a mingw\bin könyvtárban (kétfajta mingw van és a C/C++ compiler exe-jének a neve eltér) -
kispx
addikt
válasz
Milgram1 #5752 üzenetére
C != C++
Tömböt nem tudsz értékadó utasítással másolni.
char tmp1[100];
char nevek[max][100];
tmp1=nevek[j];for ciklussal a tömb egyes elemeit másold a a másik tömb megfelelő elemei közé.(Szerk.: bamba voltam; használd a beépített stringkezelő fv-eket.)
Előtte olvasd át ezt.[ Szerkesztve ]
-
kispx
addikt
-
kispx
addikt
válasz
DasBoot #5747 üzenetére
#include <stdio.h>
A fájl elejérekiírni pedig
printf("Szoveg");
utasítással tudsz;
A printfről egy kicsit részletesebben. -
kispx
addikt
-
kispx
addikt
Ha csak else ág lenne, akkor azokat a karaktereket számolná össze, ami nem szóköz, új sor vagy tabulátor.
Így a szavak kezdőkarakterét számolja össze, ami megegyezik a szavak számával (mivel minden szónak csak egy kezdőkaraktere van).Ezért kellett az állapotgép (KINT, BENT), hogy meglehessen különböztetni a kezdőbetűt, a szó belsejében lévő betűtől.
-
kispx
addikt
válasz
Ver'alor #5410 üzenetére
Az strcmp 0-val tér vissza ha a két paramétere megegyezik. De a linkelt leírásban benne van.
if Return value < 0 then it indicates str1 is less than str2.
if Return value > 0 then it indicates str2 is less than str1.
if Return value = 0 then it indicates str1 is equal to str2. -
kispx
addikt
válasz
Ver'alor #5408 üzenetére
if (strcmp(valtozo, "Magyarorszag") == 0){
printf("Magyarorszag");
} else if (strcmp(valtozo, "Nemetorszag") == 0){
printf("Nemetorszag")
} else {
printf("Nincs ilyen orszag");
}strcmp függvénnyel két stringet össze lehet hasonlítani.
if ... else if ... részhez egy kis leírás.
[ Szerkesztve ]
-
kispx
addikt
válasz
#34322688 #5047 üzenetére
> "Valaki tudna ezzel kapcsolatos könyvet?"
A parancssorban lévő betűk nagyításával kapcsolatban?Ha C nyelvről szeretnél könyvet akkor a téma összefoglalóban van egy pár felsorolva.
Ha az IDE használatáról keresel akkor arról csak egy wiki tudok mutatni.
-
kispx
addikt
válasz
don_peter #4835 üzenetére
Nincs közelembe C fodító, de...
ha eltolod balra a biteket, akkor a legutolso helyen 0 vagy 1 lesz, tehat vagy paros vagy paratlan a szam. Ezt egy modulo kepzessel meg is lehet mondani.
if(bitek>>i % 2 == 0)
paros (0)
else paratlan (1)Szerk.:
nezopont kerdese, de szerintem mindketten forditott sorrendben fogjuk megkapni a biteket[ Szerkesztve ]
-
kispx
addikt
válasz
don_peter #4635 üzenetére
Nem egészen.
Az egy számjegyű számokat eltudod menteni char típusba mivel egy betűből áll. A 2 vagy több karakterből álló számokhoz string kell. (és ide a lezáró nullát bele kell számolni.). (És ennél a pontnál már az 1 jegyű számokat is úgy tárold)
> "És ha 12-őt akkor az már 2bájtot igaz?"
És még a lezáró '\0' karaktert is hozzá kell számolni.> "Viszont int típusként 0-255-ig 1bájt igaz?"
Nem. Az int típusnak fix a mérete (általában 4 bájt). A charnak is fix a mérete 1 bájt.[ Szerkesztve ]
-
kispx
addikt
válasz
superfinest #4284 üzenetére
Nem egy a kettő, sok különbség van.
-
kispx
addikt
válasz
PumpkinSeed #3902 üzenetére
Melyik fordítót használod?
-
kispx
addikt
válasz
PumpkinSeed #3755 üzenetére
Ha jól tudom, akkor ezt öröknaptárnap hívják.
Egy kis Google után:
Lent egy algoritmus
Pascal program, 2 -
kispx
addikt
válasz
PumpkinSeed #3726 üzenetére
Az strcmp-nek van visszatérési értéke. Típusa int.
A következő visszatérési értéke lehet:
- egy negatív szám => az első paraméter kissebb mint a második (ABC sorrendben előrébb van)
- nulla => a két sztring megegyezik
- egy pozitív szám => az első paraméter nagyobb mint a második[ Szerkesztve ]
-
kispx
addikt
válasz
PumpkinSeed #3724 üzenetére
Stringeket az strcmp függvénnyel hasonlítunk össze. (És nem az == operátorral)
-
kispx
addikt
válasz
PumpkinSeed #3660 üzenetére
case (400-al osztható 100al nem)
case (400-al osztható 4-el nem)
FeleslegesDe hol a 4-gyel oszthatóak?
[ Szerkesztve ]
-
kispx
addikt
válasz
PumpkinSeed #3658 üzenetére
"Én switch case-re gondoltam először.
"
Azt, hogy?Szerintem if
ha (szokoev_feltelei igazak)
szokoev
else
nem szokoevEgyébbként ugyanaz mondtuk a szökőév definíciójának.
[ Szerkesztve ]
-
kispx
addikt
válasz
PumpkinSeed #3655 üzenetére
"Mely évek a szökőévek?
Szökőévek a következők: minden néggyel osztható év, kivéve a százzal is oszthatókat. Szökőévek viszont a 400-zal osztható évek. Vagyis a századfordulók évei közül csak azok szökőévek, amelyek 400-zal is oszthatók."
Igaz, wiki, de most nem lő mellé
[ Szerkesztve ]
-
kispx
addikt
válasz
PumpkinSeed #3653 üzenetére
Nem az történt.
Hanem, hogy float változot szeretett volna beolvasni a program, de karaktersorozatot kapott. Így a beolvasás sikertelen volt. (Ezt a scanf visszatérési értékkel letudod ellenőrizni). A változók tartalmát nem írta felül, viszont a ciklus újra végrehajtódott. -
kispx
addikt
válasz
Retekegér #3586 üzenetére
Tömbbe kell beszúrni vagy a képernyőre kiírni? (Bár ez nem sokat számít)
Az alg. szerkezete nagyjából így néz ki:
while ()
{
ch = getchar() //vagy getch() ?
if ( strchr("öüóaéáűíÖÜÓŐÚ...", ch) != NULL) ;
{
//hozzáfűzöd a tömbhöz vagy kiaratod a 'v+'ch karaktereket
}
}[ Szerkesztve ]
-
kispx
addikt
-
kispx
addikt
válasz
bandi0000 #3479 üzenetére
Akkor kezdjük az elejétől.
"bekérek egy legfeljebb 4 jegyű számot"
A legnagyobb 4 jegyű szám 9999, ami binárisan 10011100001111 (14 karakter ha jól számolom). Tehát lefoglalsz egy 14 elemű karaktertömböt, ebbe rakod a végeredményt.Az eljárás: (úgy mint papíron)
bekéred a számod (legyen x)x-et elosztod kettővel. A maradékot (0 vagy 1-et beleírod a karaktertömbbe)
A hányadost megint elosztod kettővel és a maradékot megint beleírod a karaktertömbbe.
.
.
.
Egészen addig csinálod míg a hányados nulla nem lesz. Végül a karaktertömböt fordítva írod ki.Tehát példával illusztrálva:
x = 5
5 / 2 == 2 (maradék 1)
2 / 2 == 1 (maradék 0)
1 / 2 == 0 (maradék 1)101
[ Szerkesztve ]
-
kispx
addikt
válasz
bandi0000 #3469 üzenetére
Na kerestem egy IDE-t a gépen. Elbeszéltünk egymás mellett
#include <stdio.h>
int main()
{
int x = 566;
printf("Szam = ");
scanf("%d", &x);
if(x>=1000)
{
printf("M");
x=x-1000;
}
while(x>900)
{
printf("CM");
x=x-900;
}
while (x >= 500)
{
printf("D");
x = x - 500;
}
while (x>=400)
{
printf("CD");
x=x-400;
}
while (x>=100)
{
printf("C");
x=x-100;
}
while (x>=90)
{
printf("XC");
x=x-90;
}
while (x>=50)
{
printf("L");
x=x-50;
}
while (x>=40)
{
printf("XL");
x=x-40;
}
while (x>=10)
{
printf("X");
x=x-10;
}
while (x>=9)
{
printf("IX");
x=x-9;
}
while (x>=5)
{
printf("V");
x=x-5;
}
while (x>=4)
{
printf("IV");
x=x-4;
}
while (x>0)
{
printf("I");
x = x - 1;
}
return 0;
}Nekem ez a 660-at jól írja ki.
MÁS:
A Qt Creator miért nem ír ki semmit sem debugolás alatt? Ha terminálból futtatom csak akkor ír ki valamit ez a program. -
-
kispx
addikt
válasz
sztanozs #3447 üzenetére
Jogos, egy gyors wikipedia keresés alapján mondtam
És még egy kiegészítés, nem x>500 hanem x>=500
(#3446) Bobrooney
A WinForms-nak nincs magyar nyelvű irodalma. De tudtommal már nem fejlesztik tovább.(#3452) bandi0000
(#3447) sztanozs hozzászólásában szereplő számokat is tedd bele, mert a wikiből nem jól mondtam én sem. És vannak olyan számok pl I ami háromszor is előfordulhatnak, szóval azokat rakd bele egy ciklusba.[ Szerkesztve ]
-
kispx
addikt
válasz
bandi0000 #3442 üzenetére
Nem kellettett volna szétbontanod. Bekéred egy int-be. Utána...
1) ha 1000, akkor kiiratod az "M" sztringet
2 ha nem 1000 akkor
megnézed, hogy nagyobb mint 500, ha igen akkor kiiratod a "D" sztringet, majd ebből a számból kivonsz 500-ataz így kapott számot ellenőrized, hogy nagyobb mint 100, ha igen akkor kiiratod a "C" sztringet, majd ebből a számból kivonsz 100-at (Ha jól emlékszem, három C lehet egymás mellett, szóval ezt a lépést 3X csináld meg)
az így kapott számot ellenőrized, hogy nagyobb mint 50, ha igen akkor kiiratod a "L" sztringet, majd ebből a számból kivonsz 50-et
.... stb, egyészem 1-ig
[ Szerkesztve ]
-
kispx
addikt
-
kispx
addikt
válasz
shinodas #3402 üzenetére
Hogy érdemben is válaszoljak:
Jelenleg Qt Creatort-t használok a Qt része miatt. Kényelmes IDE, ha megszokod.
Egyetemi éveim alatt egy fél évig Netbeans-t használtunk C-hez. Nem volt vele probléma. De úgy vettem észre, hogy egy kicsit lomha a CB-hez képest, de lehet, hogy egy jobb gép is kelletett volna. (2-3 éve volt, szóval az akkori verzióról beszélek, nem tudom, hogy azóta mennyit fejlődött)[ Szerkesztve ]
-
kispx
addikt
-
kispx
addikt
Jah, megnéztem a forráskódot és az előző hozzászólásom tárgytalan.
Este van
int main(){
int a=5, b=2;
a= b ? b=b+(a=a+b--) : b+++--a;
a b nem nulla volt azért a kif1 ? kif2 : kif3 operátor a kif2 kifejezés kiértékelődésével folytatódik.
b=b+(a=a+b--) Értékadó kifejezés a kif jobb oldalának a kiértékelődésével kezdődik.
(a=a+b--)
a = 5+2 majd a b értéke a zárójeles kif kiért. után csökken eggyel. Ez okozza, hogy a végén a két szám eggyel eltér.
b=2+6 (mert a zárójeles kifnél csökkent a b értéke eggyel)
Majd végül
a = 2+7Szerk.: (bocs a megfogalmazásért, fáradt voltam
)
[ Szerkesztve ]
-
kispx
addikt
Listát vagy tömböt ad vissza? Első látásra én inkább a tömbre tippelnék..
"a kerdesem az lenne, hogy a fgv masodik parametere (**handleList) mi akar lenni?"
Egy kis olvasnivaló. A tömb nulladik elemére mutató pointer címe. Pl. (Szerk.: felesleges példa, jobbat írtak, de azért meghagyom)void f(int **y)
{
cout << **y;
}
int main()
{
int *x = (int*)calloc(10, sizeof(int)); //A tömb nulladik elemére mutat
int **ptr = &x;
f(ptr); /*vagy*/
f(&x);
return 0;
}"vagyis ket int-et ad vissza az fgv" (a mondat második felét nem értettem
)
Nem feltétlenül ad vissza két int-et a fv. Az első paraméter tuti, hogy egy unsigned-ra mutató pointer lesz. (Hogy módosítja az értéket vagy sem az nem derül ki, ehhez kellett volna a dokumentációs is). A második paramétert meg fent kifejtettem.
[ Szerkesztve ]
-
kispx
addikt
válasz
shinodas #3314 üzenetére
A függvényed így néz ki:
int massal_magan (char result[], int *magan, int *massal)
Tehát második paraméterként egy int-re mutató pointert vár.A függvényhívásod így néz ki:
int *magan=0;
//...
massal_magan(result, *magan, massal);A második paraméternél a mutatott objektumot adtad át és nem a rá hivatkozó pointert.
Röviden nem kell az índirekció művelete. ( * )Szerk.: de érdekes, hogy a 3. paraméternél jól használtad a mutatót.
[ Szerkesztve ]
-
kispx
addikt
válasz
cooldongo #3240 üzenetére
még egy valami:
"írjon fv-t amely paraméterként kap két kor típusú struktúra címet és visszaadja hogy a két kör középpontja egybeesik vagy nem"
az fv függvény ha jól látom nem a kor címét várja.
És a memórialefoglalásnál és a for cikluson belül is bajok vannak.
És a feladat szerint a b feladatban definiált függvény meg kéne hívni
[ Szerkesztve ]
-
kispx
addikt
válasz
cooldongo #3235 üzenetére
Ha paraméterként kapja meg annak azt a két kör aminek a középpontját összeakarod hasonlítani, akkor miért definiálsz két másik kört?
A paraméterként kapott köröknek kell a középpontját összehasonlítani.b = kor1.x==kor2.x && kor1.y==kor2.y ? egybeesik : nem;
Gondolom előtte van egybeesik, és nem nevű konstansod definiálva. És ezekkel az értékekkel mikor tér vissza? (kell egy return b utasítás). És mi a függvény visszatérési típusa?[ Szerkesztve ]
-
kispx
addikt
válasz
cooldongo #3223 üzenetére
A feltételt nem értem, mert "van egy fv amely paraméterként kap egy stringet és egy betűt"
gondolom akkor a függvény hívása így néz ki
fv ("ez itt a string", 'e')int fv(const char* p, char c)
{
int i = 0;
int v=-1;for (; i< strlen(p); i++)
if (p[ I ]== c)
{v = i; break;}return v;
}Szerk.: jelenleg nem tudom kipróbálni, mert nem olyan gép előtt vagyok amin van C fordító, de kb így néz ki az a, a b-t meg már innen be tudod fejezni.
[ Szerkesztve ]
-
kispx
addikt
válasz
cooldongo #3221 üzenetére
Meddig jutottál el benne?
shinodas
http://stevenkobes.com/ctest.html
Ebben egy-két feladatot érdekesnek találtam (személy szerint). Viszont ez csak tesz jellegú-[ Szerkesztve ]
-
kispx
addikt
válasz
Jester01 #3098 üzenetére
De akkor miért nullázza ki az egyiket és miért nem a másikat? Főleg, hogy ha a két változódeklarálást felcserélem akkor pont a másikat nem nullázza ki, azaz mindig a második tömb az inicializálatlan.
(Megjegyzem a MinGW ritkán fent nálam, most is csak azért mert beadandót kell készíteni, szóval nem ismerem ezt a fordítót)
Egyébként ott a pont
-
kispx
addikt
válasz
hruodnand #3095 üzenetére
Nos, debuggoltam egy kicsit a Code :: Block alatt és ugyanaz a hiba mint neked. Egy pár említésre méltó érdekesség:
1) ha a tömbdeklaráció után egy printffel kiíratom az u3 tömb egyik elemét, akkor a deklarálásnál mindkét tömböt normálisan kinullázza.
2) ugyanúgy kinullázza az u3 tömböt, ha az u1 tömb egyik elemét íratom ki
3) a szokásos memset(u1, 0, N); memset(u3, 0, N) kezdőértékadásnál is a deklarációnál kinullázza a tömböket.[ Szerkesztve ]
-
kispx
addikt
válasz
kovacsakos91 #3076 üzenetére
Kisebb játékot akarsz írni? Vagy milyen témájút? Több fórumon is láttam, hogy ezt a kérdést felraktad, és gyakorlatilag az összes használható feladatgyűjteményt felsoroltuk.
Esetleg egy-két házi van még, amit az egyetemen kaptunk.
-
kispx
addikt
válasz
kovacsakos91 #3069 üzenetére
-
kispx
addikt
Üdv,
Az alábbi kódrészletet miért lehet lefordítani? Mármint definiálunk egy switch szerkezetet, majd az egyik case ágában egy do-while ciklust írunk és ebben a ciklusban folytatjuk tovább a case ágakat.switch (count % 8) {
case 0: do { *to = *from++;
case 7: *to = *from++;
case 6: *to = *from++;
case 5: *to = *from++;
case 4: *to = *from++;
case 3: *to = *from++;
case 2: *to = *from++;
case 1: *to = *from++;
} while ((count -= 8) > 0);
}[ Szerkesztve ]
-
kispx
addikt
válasz
Retekegér #2688 üzenetére
Inkább Code:: Blocks. A Dev-C++ kicsit bugos, és ha jól látom akkor már fejlesztik tovább.
[ Szerkesztve ]
Ú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!