- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- erkxt: A Roidmi becsődölt – és senki nem szól egy szót sem?
- Magga: PLEX: multimédia az egész lakásban
- droidic: Így beszélhetsz élő emberrel EA supportban
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Elektromos rásegítésű kerékpárok
- sziku69: Szólánc.
- MasterDeeJay: Noname 1TB-os SATA SSD teszt
- hcl: MS Office365 Linuxon
Új hozzászólás Aktív témák
-
buherton
őstag
válasz
maestro87 #5447 üzenetére
Írásra törlődő regiszterek esetén határozottan célszerű a maszkolás, vagy ha nem direktben egy címre írsz, hanem mondjuk egy struktúra pointer által mutatt pointerre, ahol már nincs castolás, és kapásból memória korrupció léphet fel. Ez kvázi egy ököl szabály, hogy csak azokat a biteket engedjük át, ami valós értéket képviselnek. A többi maszkoljuk.
Közben eszembe jutott még egy példa. Mi van ha a változó értéke éppenséggel -1? Az egész változó tele van 1-esekkel.
MOD: ilyenekre nincs iromány.
-
maestro87
őstag
A 'badd' az egy 16 bites unsigned int változó. Az 'EEADR' az meg 8 bites regiszter. Szerintem így is úgy is elvész a felső bájt, nem? A 11. 12. ... bit meg nem is írható/olvasható.
buherton: Értem, megpróbálok akkor rászokni, de mi zavarhatja be ezt az egyszerű műveletet?
Meg van valamilyen iromány erről (lehetőleg magyar), hogy milyen esetekben célszerű ezt alkalmazni?(#5446) zka67: Szerintem meg csak megzavarja az egyszerű embert.
-
-
maestro87
őstag
Köszi, ezt így utólag sejtettem, csak sosem láttam/használtam még ezt a módszert. De most már fogom tudni és használni is fogom, hogy más kezdőknek se legyen egyértelmű az ÉN kódom.
Most találtam még egy számomra értelmetlen felesleges utasítást:
EEADRH = (badd >> 8) & 0x03;
EEADR = (badd & 0x0ff);1024 byte-os EEPROM, azaz 10 bites a cím, ezt osztja ketté (8+2 bit). Itt szintén feleslegesnek érzem, hogy 1-esekkel (&0x03, &0xff) 'és'-eli a cím biteket. Mert ha 1 volt, akkor 1 marad, ha meg 0 volt, akkor 0 marad. Kíváncsi lennék, hogy mikor írják a programot a nagy cégek programozói (pl. Microchip), milyen előre megfontolt szándékból tesznek be ilyen felesleges utasításokat?
Azért egy 'és' kapcsolat is csak helyet foglal a szűkös program memóriában...
-
Karma
félisten
válasz
maestro87 #5441 üzenetére
1) Nekem is feeslegesnek tűnik, mintha nem akartak volna üres zárójeleket írni.
2) A vessző egy alap C operátor, azt jelenti, hogy sorban végrehajtja a három műveletet, és az utolsónak az eredményét adja vissza. Az első két tag elég fontos, ezzel címezi meg az EEPROM adott celláját és engedélyezi az olvasást – ezek nélkül a harmadik tagnak semmi értelme.
-
maestro87
őstag
Sziasztok!
Lenne pár kérdésem egy gyári függvénnyel, mivel nem vagyok egy programozó zseni.
1. while (WR) continue; kifejezésbe minek a continue? Szerintem tök felesleges, vagy mégsem?2. #define EEPROM_READ(addr) ((EEADR=(addr)),(RD=1),EEDATA)
Ezt sem tudom értelmezni, hogy miért vesszővel és nem pontos vesszővel vannak elválasztva egymástól az utasítások.
Ráadásul ezt egy függvény return-nal meghívja: return EEPROM_READ(addr);
És elvileg az EEDATA-val kellene hogy visszatérjen, szóval miért nem egyszerűen return EEDATA?Valaki elmagyarázná ezt nekem?
-
dabadab
titán
"Adott egy stringet módosító függvény, elég egyszerű:"
...és hibás
Az "old = new" rész egyáltalá nem azt csinálja, amit te szeretnél, azok csak a stringedit két lokális változóját módosítják, nem a paraméternek megadottakat.
Ezenkívül az elég rossz gyakorlat, hogy hagysz nem feltűnően érvénytelen pointerek, márpedig amikor lefut ez a függvény, utána nem fogod tudni azt, hogy a new az érvényes-e, ezért ilyen esetekben nagyon praktikus lenullázni (plusz ez segít abban, hogy gyorsabban kibukjon az, ha ezután valahol mégis használni akarnád, annak ellenére, hogy érvénytelen).
Ja, és én a magam részéről a "new" használtatát kerülném még C kódban is.
-
EQMontoya
veterán
válasz
Szirikee #5438 üzenetére
Csak két probléma van:
1, Nem tettél fel kérdést
2, A kódod c++, aminek inkább a c++ topikban van a helye. -
Szirikee
újonc
Sziasztok.
Lenne egy fájlkezeléses problémám... Egy .dat kiterjesztésű fájlból olvasunk be adatokat. Pár diáknév van minden egyes sorban, és mellettük szóközzel tagolva a kapott érdemjegyük. A programban (amit bemásoltam) már megvannak az egységes számítások (az egész osztályra nézve), viszont az lenne a következő feladatunk, hogy minden egyes diákot nézzünk végig, és :
- irassuk ki az átlagukat (fejenként, egységesen már megvan)
- vizsgáljuk meg azt, hogy mekkora a legjobb átlag, és hogy kié.Itt az eddig megírt algoritmus (lejjebb személtetem a .dat kiterjesztésű fájlt is!):
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>using namespace std;
int main() {
int n,db_nev;
float db_jegy,jegy_ossz;
string s,nev;cout << "A jegyek.dat-bol olvasunk be." << endl;
ifstream f;
f.open("jegyek1.dat");
if (f.fail())
{
cout << "Hiba megnyitas soran" << endl;
cin.get();
return 1;
}
db_nev=0;
db_jegy=0;
jegy_ossz=0;
while(!f.eof())
{
f>>s;
n=atoi(s.c_str());if (n==0)
{
db_nev++;
cout<<endl<<s<<" ";
}else
{
db_jegy++;
jegy_ossz=jegy_ossz+n;
cout<<s<<" ";
}
}
f.close();cout<<endl<<endl<<"Nevek szama: "<<db_nev<<endl;
cout<<"Jegyek szama: "<<db_jegy<<endl;
cout<<"Jegyek osszege: "<<jegy_ossz<<endl;
cout<<"Az osztaly atlaga: "<<jegy_ossz/db_jegy<<"\n"<<endl;cin.get();
return 0;
}.DAT KITERJESZTÉSŰ FÁJL:
Andi 4 4 3 5
Bela 4 5 4 3
Geza 2 2 4 4
Aladar 3 1 4 5
Eva 5 5 5
Eszter 3 3 5 4
Sandor 4 5 3 2Előre is köszönöm a válaszokat!
-
EQMontoya
veterán
-
EQMontoya
veterán
Ez ebben a formában így nem fog menni.
A scanf ignorálja a sor eleji whitespace-eket, így a \n-t is.
Ha kizárólag stringet szeretnél olvasni, akkor használj fgets-t.És a megoldás:
Csinálsz egy ÚJ buffert. (char tömb)
Beleolvasol fgets-el.
Megnézed az új buffert. Ha csak egy "\n" van benne, akkor nem adott meg semmit a user, nem használod a stringet. Ha van benne bármi más, akkor meg használod. (okosan: strlen) -
r4z
nagyúr
válasz
EQMontoya #5431 üzenetére
Akkor megpróbálom szemléletesebben:
- kiírja a régi stringet a program
- új sor, jön a scanf, beolvasok egy stringet
- meghívom a stringeditetHa nem akarok változtatni, akkor újra le kell írnom a teljes stringet a második lépésben, ezt szeretném elkerülni mondjuk egy tab és az enter leütésével. A tabot és az entert viszont nem érzékeli érvényes inputként a scanf, így ő fut tovább, és várja a stringet.
-
r4z
nagyúr
Sziasztok!
Adott egy stringet módosító függvény, elég egyszerű:
void stringedit(char *old, char *new){
if (strcmp(new, old) != 0){
free(old);
old = new;
}
else
free(new);
}A régi string mindig adott (és mindig van tartalma), az újat egy scanf-fel olvasom be a következőképpen, mert szóközöket is tartalmazhat:
scanf(" %[^\n]", new);
A kérdésem az lenne, hogy hogyan lehetne a legelegánsabban megoldani azt, ha nem akarok változtatni az eredeti stringen, de mégis meg kell hívnom a scanf-et és a függvényt?
-
alapz@j
tag
válasz
#36268800 #5427 üzenetére
Írj egy one time pad alkalmazást. Egy hex és base64 kódolót/dekódolót. Aztán valami egyszerűbb ciphert (pl. rot13) használó kis programot. Aztán írj egy programot, amiben egy külső titkosító könyvtár (wincrypto, libnettle, openssl, akármi) egyszerű szimmetrikus titkosítását használod (xxtea, aes, chacha, stb.). Közben ismerkedj meg a secure random, a kriptográfiai hash, a keyed hash fogalmával és használatával. Ezután jöhet az authenticated titkosítás, a nyilvános kulcsú kriptográfia és a többi finomság. És mindeközben sajátítsd el azt, hogyan lehet biztonságos C programot írni, amelyik nem szivárogtat ki információkat az általa kezelt adatokról.
-
sztanozs
veterán
válasz
asuspc96 #5425 üzenetére
Nem megoldást, hanem csak számítási kapacitást tudsz venni. Nem tudsz bármit feltölteni, hogy ott majd jól megoldják.
-
EQMontoya
veterán
-
#36268800
törölt tag
Sziasztok!
Kaptam még jó pár hónapja egy RAR fájlt, ami tele van hasznos dolgokkal, de sajnos jelszóval védett, amire nem emlékszem. Akitől kaptam, nyilván tudja és meg tudnám kérdezni, DE én arra gondoltam, hogy írni kellene egy C programot (nem letölteni egy már kész szoftvert), ami megfejti nekem a jelszót. Érdekel az IT biztonság, a vírusok, a vírusok elleni védekezés, az "ethical hacking", viszont totál zöldfülű vagyok ezen a téren, még soha nem foglalkoztam ilyesmivel. Valakinek van ötlete, hogyan lehetne belekezdeni egy efféle program megírásába? Akár együtt is elkészíthetnénk, soha nem dolgoztam még csapatban, jó lenne tapasztalatot szerezni ilyen téren is.
A kihívásoktól nem riadok vissza, az idő pedig nem sürget, tehát ha csak hétvégente foglalkozunk vele néhány órát, az sem akadály!
Köszi előre is a válaszokat, üdv!
-
asuspc96
senior tag
él még a topic ?
-
Ver'alor
tag
Nem értem, hogy ez miért olyan fontos, de én is tudom, hogy át lett nevezve, de ha megkérdezel egy ottani diákot, hogy hova jár, 100%, hogy azt mondja, hogy a ságváriba.
-
Ver'alor
tag
Heló, lenne efy kicsit másmilyen jellegű kérdérem.
Most fogok kezdeni a szegedi ságvári endre gyak. gimnáziumban, mégpedig infó orientált osztályban. Hallottam, hogy tanulni fogunk programozást, és úgy gondoltam, hogy hát csak legyen már egy megalapozott tudásom, elkezdtem tanul(gat)ni a c nyelvet. Az lenne a kérdésem, hogy esetleg valaki ismer-e olyat, aki itt tanul/végzett, mert érdekelne, hogy egészen pontosan milyen programozáso nyelvet tanul(t). Meg esetleg úgy a 4 év nagyobb témaköreit, mert gondolom ottár csaktán nem tanártól függ a tananyak, mert eddig általánosban 2 évig egy olyan tanárom volt, akivel painten kellett rajzolgatni (persze volt, aki élvezte, de voltunk páran, akikkel a hajunkat téptük, hogy legyen már vége az órának)
-
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.
-
Ver'alor
tag
Heló, köszi a választ, pow()-val sikerült
Még egy kérdésem lenne:
Lehet-e olyan epágazást csinálni, amiben a felhasználó nem egy számot ít be, aminek függvényében ugrik a program arra a bizonyos ágra, hanem egy szöveget ír be. Pl beítok egy országot, és kiírja annak a fővátosát, vagy valami hasonlót. -
Ver'alor
tag
Heló, megint én vagyok.
Az lenne a kérdésen, hogy hogyan lehet egy számot az n-edik hatványára emelni?
Lehet, hogy ezek alap dolgok, de elég kezdő vagyok, bocsi. :/ -
Ver'alor
tag
Eltaláltad, osztani szeretnék
.
Így gondoltad:
printf ("A ket szam hanyadosa: %f", (float)a/b);
??
Csakmert így működött, köszönöm! -
Ver'alor
tag
Heló, olyan problémám akadt, hogy egy program elején bekérek két számot integer típusban, de ezeket a program egy bizonyos szakaszában float típusban szeretném használni. Erre van valami megoldás?
Ú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!
- Debrecen és környéke adok-veszek-beszélgetek
- Milyen videókártyát?
- Hobby rádiós topik
- Luck Dragon: Asszociációs játék. :)
- Kompakt vízhűtés
- Vélemény: nem úgy tűnik, de Lip-Bu Tan most menti meg az Intelt
- Feketehalálra váltja a kékhalált a Microsoft
- Mobil flották
- sziku69: Fűzzük össze a szavakat :)
- Vicces képek
- További aktív témák...
- Dell Latitude 5450 Intel Core Ultra 5 135U 4nm 32GB DDR5 érintőképernyős laptop Dell gari 2027.09.hó
- PlayStation 4/5 kontroller analóg cseréje HALL TMR érzékelősre, 1 év garancia!!! Nincs többé drift!!
- PlayStation 5/4 kontroller analóg cseréje HALL TMR érzékelősre, 1 év garancia!!! Nincs többé drift!!
- XBOX ONE/Series kontroller analóg cseréje HALL TMR érzékelősre, 1 év garancia!!! Nincs többé drift!!
- XBOX Series S 512GB, 6 hó garanciával Bp-i üzletből eladó!
- Update 07.01. Bomba árak 2025-ben is! Üzleti - Consumer laptopok DELL FUJITSU HP LENOVO
- Eladó ÚJ, BONTATLAN Samsung Galaxy A05s 4/64GB ezüst / 12 hónap jótállással!
- Eredeti Windows 10 / 11 Pro aktiválókulcs AZONNALI SZÁLLÍTÁSSAL!
- BESZÁMÍTÁS! Intel Core i9 9900K 8 mag 16 szál processzor garanciával hibátlan működéssel
- LG 77G4 - 77" OLED evo - 4K 144Hz 0.1ms - MLA - 3000 Nits - NVIDIA G-Sync - AMD FreeSync - HDMI 2.1
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged