- iPhone topik
- Samsung Galaxy S23 Ultra - non plus ultra
- Honor Magic5 Pro - kamerák bűvöletében
- Samsung Galaxy A56 - megbízható középszerűség
- Yettel topik
- Fotók, videók mobillal
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Szívós, szép és kitartó az új OnePlus óra
- Ingyen beszerezhető pár SEGA klasszikus mielőtt lekerülnek a Play Áruházból
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
Új hozzászólás Aktív témák
-
maathe
senior tag
válasz
PumpkinSeed #4345 üzenetére
.
-
dabadab
titán
válasz
PumpkinSeed #4024 üzenetére
De hat ezt kb. ranezesre lehet torni, ennel az is durvabb lenne, ha minden karaktert az elozovel xorolnad.
-
skylaner
senior tag
válasz
PumpkinSeed #4019 üzenetére
Például csinálsz egy structot ami a c++ MAP-hez hasonlóan kulcs-érték párt tárol.
A kulcs lesz az eredeti sztring adott karakterének indexe, az érték pedig a hozzá kódolt string.
Így nem muszáj, hogy a kódolt rész-stringek is ugyan olyan sorrendben legyenek a tömben mint az eredeti string karakterei.struct Crypt
{
int index;
char crypt_text[3]
};
struct Crypt encrypted_text[20];original_string = a l m a
0 1 2 3encrypted_text[0]:
---- index=3 (original_string[3] --> a)
---- crypt_text=3hr
encrypted_text[1]:
---- index=0 (original_string[0] --> a)
---- crypt_text=3hr
encrypted_text[2]:
---- index=2 (original_string[2] --> m)
---- crypt_text=as7
encrypted_text[3]:
---- index=1 (original_string[1] --> l)
---- crypt_text=tz5Megj: Amúgy az nem valami jó titkosító alg. ami két ugyanolyan bemenetre ugyanazt a kimenetet produkálja
a --> 3hr -
dabadab
titán
válasz
PumpkinSeed #4021 üzenetére
Miert, amugy hogy dekodolnad? Na, teljesen ugyanugy
Csinalsz valami ilyen fuggvenyt, hogy:
char decode(char x[3])
es ezt hivogatod:
for (c=0; c < length; c++)
{
decoded_str[ c ] = decode( &encoded_str[c*3] );
} -
dabadab
titán
válasz
PumpkinSeed #4019 üzenetére
Az, amit irtam: a kodolt szoveget haromszor akkora karaktertombben tarolod, mint amekkora az eredeti szoveg volt.
-
dabadab
titán
válasz
PumpkinSeed #4017 üzenetére
Aha, gondoltam, hogy itt valami felreertodott.
Egy char tomb egy helyere csak egy betu fer. Amit te megprobaltal, az a "multicharacter constant", ami igazabol int tipusu, a konkret erteke implementaciotol fugg es eroteljesen ellenjavallott az alkalmazasa (a maximum merete meg szinten implementaciofuggo, van, ahol negy karakterbol is allhat). Ha egyebkent levitted volna ket karakterre, akkor se azt csinalna, amit akarnal, hanem minden bizonnyal a kettobol vagy az egyik vagy a masik karakter kerulne a char tombodbe, nem mind a ketto. -
dabadab
titán
válasz
PumpkinSeed #4015 üzenetére
"egy string elem helyére max 2 darab karaktert lehet betenni,"
Ezt tovabbra sem ertem. Ha az a string[] char tipusu, akkor ott egy elem helyere csak egy karakter fer be. Ha mas a tipusa, akkor meg a konkret tipustol fug, hogy mennyit tudsz oda bezsufolni es mondjuk a logikusan adodo int meg barmilyen modern rendszeren 4 byte-os.
Ha valami olyan kodolast akarsz csinalni, ami fixen egy karakter -> n karakter, akkor a kezdeti char cleartext[20]-at egy char encoded[20*n] tombbe rakd at, semmi ertelme az ilyen trukkozesnek.
-
dabadab
titán
válasz
PumpkinSeed #4013 üzenetére
"Azt tudom, hogy egy pl egy string(i) helyre max 2 karaktert lehet tenni"
Ezt hogy?... Vagy arra gondolsz, hogy az a string tomb intekbol all es azoknak a kulonbozo byte-jait hasznalod fel?
Igazabol nem ertem az egesz felvetest, hogy mit akarsz csinalni es az miert jo -
dabadab
titán
válasz
PumpkinSeed #4009 üzenetére
"van egy n elemű szo[20] karaktertömböm"
Most akkor n vagy 20?
Amugy igazan at se kell rakni, hiszen a szo[20]-ban eleve a betuk ascii kodja van benne. -
buherton
őstag
válasz
PumpkinSeed #4009 üzenetére
Nem tudom kipróbálni, de ez lehet, hogy működik:
for(i = 0; i < 20; i++)
{
szam[i] = (int) szo[i]
} -
Karma
félisten
válasz
PumpkinSeed #3978 üzenetére
Elkezdtem szerkeszteni a hozzászólást, csak közben spontán meeting lett
Van egy nagyon súlyos hiba: 1-től indexeled a tömböt, nem pedig 0-tól. Ezzel az első elem kimarad az összehasonlításokból, így hülyeség a vége.
A fordított sorrend, amit bizonyára tapasztalsz, az meg azért van, mert a belső ciklusodat nem az első elemtől, hanem i+1-től kell indítani. Enélkül amellett, hogy túl sokszor mész végig a teljes tömbön, még egyszer megfordítod az egészet...
Ha ezt javítod (0-tól kezdeni a külső, i+1-től a belső ciklust), már működő négyzetes lépésszámú (azaz lassú) rendezést kapsz.
De nem lesz ettől még buborékrendezés, mert annak a sajátossága, hogy az összehasonlítások és cserék mindig szomszédos elemek között történnek (pl. J és J+1).
Papírforma szerinti kiválasztásos rendezéssé könnyebb átalakítani, ha nem cserét végzel a belső ciklusban, csak megjegyzed a legkisebb szám indexét, és a belső ciklus után csinálsz egy cserét az i. és a minimumelem között. De annyira nem kritikus.
-
Karma
félisten
válasz
PumpkinSeed #3976 üzenetére
Nem, akkor lenne buborék rendezés, ha a szomszédos elemeket cserélgetnéd.
Ez most egy sok felesleges kört futó valami -
overclockerr
tag
válasz
PumpkinSeed #3947 üzenetére
C-re meg Java-ra akarok rámenni, akkor html, php lényegtelen, ugye?
-
buherton
őstag
válasz
PumpkinSeed #3914 üzenetére
Conio vagy ncurses?
Készíts egy olyan progamot, ahol menüben lehet kiválasztani, hogy egy adatbázissal mit szeretnél csinálni.
Menü:
1. Adatbázis fájl beolvasása
2. Fájl mentése
3. Új adat felvitele
4. Régi adat törlése
(ez eddig 200 sor-ban meg lehet csinálni, tudom, mert már egyszer megírtam)
5. Adatok sorba rendezése -> lehessen választani mely oszlop szerint rendezzen sorba
Opcióként lehet benne csinálni formai ellenőrzést is, mint pl. dátumok helyes formátumban vannak-e megadva, megadott tartományon belül van az adott szám (lásd perc, óra, hónap, nap), névnek helyes-e a formátuma (nagy betűkkel keződik-e, van-e szóköz), stb...Ha ncurses, akkor készíts egy több ablakos UI-t, ahol ablakonként más és mást lehet csinálni, mint pl. egyik ablakban Fibonaccit kiszámoltatni, másikban a prímszámokat, másikban a tökéletes számokat, másikban a faktoriálist, stb...
Amiket írtam, azokat szét is bonthatod kisebb projektekre is.
Ajánlom a mi hamarabbi komolyabb programírását, mert ez a pár soros algoritmusokkal még nem fog az ember megtanulni, hogy hogyan lehet jól felépíteni egy nagyon hosszú programot.
-
Bobrooney
senior tag
válasz
PumpkinSeed #3914 üzenetére
1, Töltsünk fel egy tömböt egész számokkal, határozzuk ennek a tömbnek a pozitív elemeinek a
számát.2, Töltsünk fel egy tömböt egész számokkal, majd határozzuk meg a tömb értékeinek átlagát.
3, Töltsünk fel egy tömböt egész számokkal, majd határozzuk meg a tömb elemeinek szorzatát.
4, Töltsünk fel egy tömböt egész számokkal, a tömb elemeinek a maximum, minimum és (számtani és
mértani) közép értékét.5, Töltsünk fel egy tömböt egész számokkal, majd írjuk ki a páros elemek pozícióját.
6, Töltsünk fel egy tömböt egész számokkal, csak páros számokat tartalmazhat!
-
buherton
őstag
válasz
PumpkinSeed #3911 üzenetére
Miért nem gcc-t, vagy mingw-t használsz? Parancssoros ablakban kiválóan lehet használni a ncurses-t, de ezt csak egy alternatíva
.
-
Karma
félisten
válasz
PumpkinSeed #3909 üzenetére
Egy egyszerű Windows alatti megoldás, ha fogod az econio forrását, és együtt fordítod a programoddal. Nem véletlen, hogy Czirkos is ezt ajánlja
A C Free-t nem ismerem, de biztos van valami egyszerű módja, hogy a projektedhez add.
-
bpx
őstag
válasz
PumpkinSeed #3904 üzenetére
"dos.h-t kell includolni"
biztos?
ez nem standard fuggveny, de en azt latom tobb helyen is (Google), hogy conio.h kell hozza -
kispx
addikt
válasz
PumpkinSeed #3902 üzenetére
Melyik fordítót használod?
-
bpx
őstag
válasz
PumpkinSeed #3902 üzenetére
include-olod, amit kell?
vagy mi a kerdes? -
Karma
félisten
válasz
PumpkinSeed #3899 üzenetére
Egy egyszerű megoldás, ha a koordináták azonnal léptetése előtt megnézed, hogy lehetséges-e az adott lépés (korlát, pályaszéle, akármi), és ha nem, akkor nem állítod be
-
Karma
félisten
válasz
PumpkinSeed #3845 üzenetére
Noshát. A game loop nagyon leegyszerűsítve egy végtelen ciklus, ami addig tart, ameddig a játéknak nincs vége. A ciklusmagban pár dolgot kell elvégezned kötötten:
1) Fogadnod kell a felhasználótól a bemenetet. Ez lehet polling jellegű (amikor ideérsz, megnézed milyen gombok vannak lenyomva), vagy eseményalapú, de az előbbi egyszerűbb.
2) Frissítened kell a szereplők állapotát egy lépéssel (folyamatos idejű játéknál egy valamekkora időszelettel). Ehhez felhasználod az előzőleg begyűjtött inputot, meg az esetleges AI döntéseket.
3) Frissíted a világ állapotát, azaz kezeled az ütközéseket, halálokat, születéseket.
4) (legegyszerűbb eset) Újra kell rajzolnod a képernyőt.
5) Be kell aludnod párszáz milliszekundumra.Ezt kell ismételgetned.
Az SDL, Allegro és társai mind ehhez adnak alapot. -
Karma
félisten
válasz
PumpkinSeed #3843 üzenetére
Mi a kérdés? A kígyó mozgása konkrétan (azaz hogyan tárold a kanyarodásokat), vagy maga a folyamatos léptetés (game loop)?
-
buherton
őstag
válasz
PumpkinSeed #3835 üzenetére
Tudtommal nem igazán, csak nagyoltan, hogy ha 0 - 255 kell, akkor unsigned char, ha -128 - 127-ig akkor char stb...
-
Davs
tag
válasz
PumpkinSeed #3835 üzenetére
max ugy, hogy pl egy fuggveny segitsegevel allitod be az erteket, amiben ellenorzod, hogy a megadott intervallumban van-e az ertek..
int x ;
void setVar(int y) {
if(5<y && y<10)
x=y ;
}
void main() {
setVar(6) ;
} -
buherton
őstag
válasz
PumpkinSeed #3794 üzenetére
Tudtommal sehogy, csak mókolással. De hisz miért is kellene? A probléma inkább az szokott lenni, hogy a double kevés.
Kókányolni így tudsz:
float f = 1,23;
int i;
i = 10 * f;
f = (float) i / 10;Ez így nem biztos, hogy működik, de az elv az látszódik. Azzal hogy 10-el szoroztuk meg, a tizedesjegyet tudjuk átvinni, azzal hogy int levágja a tizedes veszző utáni részt, majd osztjuk 10-el.
-
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 -
buherton
őstag
válasz
PumpkinSeed #3755 üzenetére
Szerintem az ilyet ne algoritmusból próbáld megcsinálni, főleg hogy mások már megoldották. Ha Ubuntut használsz, akkor próbáld ki a terminálban a cal parancsot. C-ből szintén lehet parancsokat kiadni, de lehet, hogy kernelnek is van ilyen függvénye, amit csak szimplán meg kell hívni.
Vagy megírod C-ben: [link]
-
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 -
kispx
addikt
válasz
PumpkinSeed #3724 üzenetére
Stringeket az strcmp függvénnyel hasonlítunk össze. (És nem az == operátorral)
-
bpx
őstag
válasz
PumpkinSeed #3722 üzenetére
miért kellene?
hozzá se kell nyúlnod, nincs ez előírvaez is egy program (bár sok haszna nincs), sehol nincs for ciklus
{
char arr[] = {'c','o','d','e','\0'};
} -
Bobrooney
senior tag
válasz
PumpkinSeed #3706 üzenetére
????????????????
-
Jester01
veterán
válasz
PumpkinSeed #3702 üzenetére
Beolvasod az egész sort fgets-el majd strtol vagy sscanf segítségével felbontod. Ha nem tetszett amit kaptál akkor újra olvasol egy sort. Bónusz pontért lekezeled azt is, ha túl hosszú sort ír be az ember.
-
Bobrooney
senior tag
válasz
PumpkinSeed #3700 üzenetére
Hát gets() vagy getline, a getline(...) fv-t nagyon sok könyvben megtalálhatod, vagy google.
scanf("%c", &ch); így 1 db karaktert kér be. (többet is beírhatsz de csak az elsővel foglalkozik. -
Bobrooney
senior tag
válasz
PumpkinSeed #3693 üzenetére
Nem tudom, nem is érdekel. Csak már annyiszor javasoltátok itt a switch-t, de néha nem engedik alkalmazni. scanf is tilos nálunk... Persze ez a vizsgalapra nincs feltüntetve
-
sztanozs
veterán
válasz
PumpkinSeed #3693 üzenetére
Gondolom, mert nem tudja hibátlanul megírni
-
Karma
félisten
válasz
PumpkinSeed #3688 üzenetére
Miért, a switch szerinted mégis micsoda?
-
Bobrooney
senior tag
válasz
PumpkinSeed #3684 üzenetére
printf ("The solution: %d\n",&c); A kiírásodban a c változó memória címét iratod ki!
Módosítsd:
printf ("The solution: %d\n",c);
és jó lesz !
Valamint az ismétlődő kiíratást érdemes lehet kivinned csak az utolsó else if mögé
else if (op == '/')
{
c=a/b;
}
printf ("The solution: %d\n",c);
formában. -
Jester01
veterán
válasz
PumpkinSeed #3674 üzenetére
-
sztanozs
veterán
válasz
PumpkinSeed #3671 üzenetére
Ja és a kolléga időben kijavított, mielőtt rögzült volna
-
Jester01
veterán
válasz
PumpkinSeed #3671 üzenetére
Sokat ivott és hülyeségeket írkált
-
sztanozs
veterán
válasz
PumpkinSeed #3660 üzenetére
if(ev % 400 == 0){
/* szökőév */
}
else if(ev % 100 == 0){
/* nem szökőév */
}
else if(ev % 4 == 0){
/* szökőév */
}
else
/* nem szökőév */
} -
kingabo
őstag
válasz
PumpkinSeed #3660 üzenetére
Ne vedd sértésnek, de erre a két esetre kérnék pl-t.
case (400-al osztható 100al nem)
case (400-al osztható 4-el nem)Írd Clipperbe, ott lehet a case-ben ilyet írni.
-
Karma
félisten
válasz
PumpkinSeed #3660 üzenetére
Sajnos C-ben ez nem így működik, a case-eknek konstans értékeknek kell lennie. Na meg a switchbe is számot, vagy annak megfefelő értéket kell odaadni, hogy az alapján ugorjon.
-
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?
-
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.
-
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é
-
Davs
tag
válasz
PumpkinSeed #3655 üzenetére
Szokoev az az ev, ami oszthato neggyel maradek nelkul, nem?
szoval 2000, 2004, 2008 szokoevek, 2001-3, 2005-7 nem -
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. -
WonderCSabo
félisten
válasz
PumpkinSeed #3572 üzenetére
-
sztanozs
veterán
válasz
PumpkinSeed #3506 üzenetére
Itt leírtam, mit kell csinálnod.
D = B * B - 4 * A * C;
if (D > 0) {
M1 = (-1 * B - sqrt(D)) / (2 * A);
M2 = (-1 * B + sqrt(D)) / (2 * A);
}
else if if (D == 0) {
M1 = (-1 * B) / (2 * A);
}
else { // kizárásos alapon (D < 0)
// Nincs megoldás
}Ja és célszű a determinánst nem lebegőpontos számokkal számolni, hanem egészekkel, mert különben a determináns számításban a kivonás okozhat 0-hoz közeli számot (kerekítési hiba miatt).
-
sztanozs
veterán
válasz
PumpkinSeed #3503 üzenetére
Pfff (nem mintha nem reagáltam volna, nekem úgy tűnt te nem válaszoltál a kérdésemre).
De legyek kicsit konkrétabb:
0) Csak valós vagy immaginárius gyököket is szeretnél?
1) Matematikailag le tudod írni a megoldóképletet?
2) C szintaktika megy?
3) Alapvető függvények (alapműveletek, sqrt) megvannak?
4) Feltételes szerkezetet tudsz készíteni C-ben?Ezek közül melyik pontnál akadtál el?
-
sztanozs
veterán
válasz
PumpkinSeed #3440 üzenetére
Az nem ciklus. A ciklus az amikor egy adott műveletsorozatot többször (több ciklusban) végrehajtasz. Amúgy miért kellene 0-nál nagyobbnak lennie?
egy -4x^2 + 3x - 19 teljesen értelmes másodfokú egyenlet... -
sztanozs
veterán
válasz
PumpkinSeed #3438 üzenetére
Mármint mire kell a ciklus?
if D > 0 { két valós gyök }
else if D = 0 { egy valós gyök }
else { két komplex gyök } -
Korcsii
őstag
válasz
PumpkinSeed #3428 üzenetére
Nincs mit.
Mondjuk előbb lehet vizsgálni kéne, hogy a valóban nagyobb-e, mint b, és ha nem, akkor felcserélni...
-
sztanozs
veterán
válasz
PumpkinSeed #3430 üzenetére
A myFunction a függvény neve (lehetne akár legnagyobbKozosOszto is)...
-
Korcsii
őstag
válasz
PumpkinSeed #3425 üzenetére
Megkeresi a két szám legnagyobb közös osztóját.
-
Davs
tag
válasz
PumpkinSeed #3425 üzenetére
int myFunction(int A, int B) {
int maradek ;
while(B!=0){
maradek = A%B ;
A = B ;
B = maradek ;
}
return A;
}nemtudom, helyesen fogtam-e fel..
-
sztanozs
veterán
válasz
PumpkinSeed #3404 üzenetére
TerminateProcess WINAPI a barátod.
-
Karma
félisten
válasz
PumpkinSeed #3404 üzenetére
Csinálj egy batch fájlt, és írd bele, hogy taskkill /F /IM explorer.exe.
Ehhez nem kell C program...
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Csere-Beszámítás! Számítógép PC Játékra! I5 14400F / RTX 4060ti 16GB / 32GB DDR5 / 1TB SSD
- BESZÁMÍTÁS! 860W Fractal Design ION + 2 Platinum tápegység garanciával hibátlan működéssel
- Bontatlan SteelSeries QcK 3XL egérpad
- Samsung Odyssey G6 S27BG650EU - 27" QHD 2K 240Hz Ivelt - Gaming monitor - 1,5 év Gyári garancia
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RTX 4070Ti Super GAMER PC termékbeszámítás
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged