- AMD Navi Radeon™ RX 9xxx sorozat
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- HiFi műszaki szemmel - sztereó hangrendszerek
- RAID
- Amazon Fire TV stick/box
- Vezeték nélküli fülhallgatók
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Rendkívül ütőképesnek tűnik az újragondolt Apple tv
- Milyen videókártyát?
Új hozzászólás Aktív témák
-
kingabo
őstag
Ebben a témában erősen ajánlom Brian "Beej" Hall cikkét: magyar változat, angol több formátumban. (ez alapján írtam "chat" szervert minden benne van)
-
kingabo
őstag
Ne stringgel teszteld, vagy ha azzal, akkor karakterként irasd ki, illetve írd a végére a string lezáró \0 karaktert is. Egy int tömbbel sokkal látványosabb a dolog.
Az elmélethez: azt is érdemes megmondani, hogy mi történik, ha egy n elemű tömb n+1-edik elemére hivatkozol/írod. -
modder
aktív tag
Szerintem:
Ha eggyel növelem a mutatót eggyel tovább ugrik a memóriában ahol el van mentve a pointner.Nem egyel tovább ugrik a memóriában, ahol el van mentve a pointer, hanem:
A pointer értéke (egy memória cím, egy szám) nő annyival, ahány byte-os az adatstruktúra, amire a pointert deklaráltad.Ha új értéket adok utána - nos nem tudom ,uj értéket adtam a pointernek,de nem változott meg az értéke teljesen - maradt a régi értékéből és az újból is ? de viszont a memoria cime nem változott a pointernak
Nem a pointernek adtál új értéket, hanem annak a memóriának, amire mutat a pointered.
A programod elvileg azt csinlája, hogy 'b'-t kicseréli 'd'-re (gondolom az f az csak elírás, mert aposztrófok közé csak karaktert lehet írni)
-
kingabo
őstag
Nem tudom feladat-e, de célszerű lenne ellenőrizni, hogy tényleg számot adott-e meg a lyúzer.
Pár észrevétel a kódhoz:
- az itoa-t nem használod, szerintem felesleges a hozzá tartozó include
- if(!(mard == 0 || mard == 3 || mard == 6 || mard == 9)) helyet írhatod ezt is
if(mard != 0 && mard != 3 && mard != 6 && mard != 9)) (ha már 1 hamisat talál, akkor a többit ki se értékeli)
- nem tudom kötelezőe a fenti módon való számolás, de sokat gyorsíthatnál, ha simán csak összegzed a számjegyelet, esetleg a mard-nak a 3al vett maradékát néznéd, hogy 0-e (ez utóbbi valszeg lassabb lenne, de a kód átláthatóbbá válna, illetve könnyebben módosítható, ha 3 helyett a 9-el való osztás kell)
- for ciklus helyett egy while sokkal szebb lenne -
kingabo
őstag
Ciklusban kell végezned amit leírtam.
Tehát a példádnál maradva az első iterációban leszeded az 1-et, a szám 15 lesz, aztán a másodikban a 5-t, a szám 1 lesz, aztán a harmadikban a maradék 1 lesz, a szám 0.Szerk:
Ez azért így elég csúnya: data[sizeof(int)];!! 32bites gépen ez 4 lesz, viszont 9 számjegyű számot is lehet tárolni a változóban! -
kingabo
őstag
5let: A számot osztod maradékosan 10-el, így megkapod az utolsó számjegyet, amit hozzáadsz egy összeghez. Ezt kell addig csinálnod, amíg végül 0-t nem kapsz. Ezután megvizsgálod, hogy az összeget 3-al osztva 0-e a maradék.
C-s megvalósításhoz:
maradek = szam % 10;: a szám 10-el vett osztási maradéka (a szam változatlan marad)
szam = szam / 10;: a szám osztása 10-el (int osztás) -
Korcsii
őstag
sscanf-re gondoltam, csak rosszul... elfelejtettem, hogy fájlból olvasol...
Hogy hogyan kezeli őket, az attól függ, hogy hogyan olvasod be.
Mindenesetre fscanf-et és f(?)getc-t nem kéne keverni, elég a kettő magában is (az előbbi kódoddal levágsz egy karaktert, aztán beolvasol egy számot a maradékból).
Egyszerű programban én simán fscanf-fel olvasnék, esetleg vizsgálnám, hogy sikeres-e.
-
Korcsii
őstag
-
Jester01
veterán
Van több is
while(d != '1');
Ide nem karakter konstans kell, csak simán egy szám.Másik probléma, hogy a d-be számítod ki az új értéket de az a-t használod.
Kicsit letisztázva ilyesmi lehet:
#include <stdio.h>
int main(void)
{
int a;
scanf("%d",&a);
do
{
if (a % 2 == 0)
{
a = a / 2;
} else {
a = a * 3 + 1;
}
printf("%d\n", a);
} while (a != 1);
return 0;
} -
Jester01
veterán
Ugye a for(i = 1; i <= x; i += 2) ciklusod csak a páratlan számokon megy végig, így a végérték vagy x (ha x páratlan) vagy x - 1 (ha x páros). Ezért simán nem lehet megfordítani, mivel a kezdőértéket pontosan kell megadni. Például így: for(i = (x & 1) ? x : (x - 1); i >= 1; i -= 2)
Ú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!
- Xiaomi Mi 11 - értékesített büntető
- A fociról könnyedén, egy baráti társaságban
- Allegro vélemények - tapasztalatok
- sziku69: Fűzzük össze a szavakat :)
- AMD Navi Radeon™ RX 9xxx sorozat
- Budapest és környéke adok-veszek-beszélgetek
- Gumi és felni topik
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- HiFi műszaki szemmel - sztereó hangrendszerek
- eMAG vélemények - tapasztalatok
- További aktív témák...
- Hp Prodesk 600 G3/ G5/ G6 SFF/ i5 8-9-10 gen / Elitedesk 800 G4 /Win11- Számla, garancia
- Gamer PC-Számítógép! Csere-Beszámítás! I7 6700K / RTX 2060 6GB / 32GB DDR4 / 500 SSD
- Új FULL HD webkamera + Számla
- PROCASTER 40UNB700 40" 101cm televízió eladó
- Samsung Galaxy S9+ 64GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: FOTC
Város: Budapest