- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Magga: PLEX: multimédia az egész lakásban
- Tomasz72: Ventilátor upgrade
- Elektromos rásegítésű kerékpárok
- Chosen: Canon 5D II - portrézás 2025-ben
- Szevam: „Rendszerleállás” – egy AI képzeletbeli halál utáni élménye
- bambano: Bambanő háza tája
- Geri Bátyó: B550 szűk keresztmetszet, de mi és miért?
Új hozzászólás Aktív témák
-
Gergello
addikt
válasz
Fire/SOUL/CD #597 üzenetére
Szia! Félreértetted, ezt az ellenőrzést én is tudom.
A kérdés az lenne, hogy úgy kell működnie mint ahogy írtam?
Tehát pl, ha ezt vinném be: Aasdjfnognodgn akkor nem kellene az A mögötti karaktereke beolvasnia? vagy egy másik példa sdasadadsBdsadasd és itt is csak a B-ig olvas. Én arra számítottam, hogy ez így kihagyja a nem kívánt karaktereket, nem arra hogy csak addig olvas.a megoldásba amúgy is csak printf, scanf-et kell majd írni.
-
válasz
Gergello #596 üzenetére
Hali!
Nincs baj azzal amit írsz, csak ugye le kellene ellenőrizni, hogy van-e helyes adat a STR-be.
Ezt megteheted a strlen() függvénnyel, vagy ahogy a példa mutatja, magával a scanf()-el is.
A scanf() egy egésszel tér vissza, mely jelzi, hogy hány értéket tudott feldolgozni.
(ha egyszerre pl 5 adatot kérsz be scanf()-el, akkor 5-tel tér vissza, ha minden oké volt)
Jelen esetben 1-gyel fog visszatérni, ha a bevitt szöveg megfelel a scanf()-ben megadott szűrésnek.#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[256];
printf("Kérem a szöveget: ");
if (scanf("%20[a-z]",str)!=1) {
printf("Hibás adatbevitel");
return -1;
}
printf(str);
return 0;
}Fire.
-
Gergello
addikt
ez a feladat:
olvass be csupa kisbetűkből álló legfeljebb 20 karakteres sztringet, majd írasd ki 10 karakteren jobbra igazítva az első 8 karaktert. a bemeneten a kisbetűket bármi követheti.
scanf("%20[a-z]",str);
printf("\n%10.8s\n",str);Ezt írtam rá, de ha a sztring rögtön nagy betűvel kezdődik nem olvas be semmit vagy ha a sztring közepén van egy nagy betű, akkor az utána következőt részt nem olvassa be.
Ennek így kell működnie, jó ez így?
-
blaces
tag
Az előző hsz. alapján én is így logikáztam. Áttekinthetően leírtad, most már világos, hogy akkor mit csinál "valójában" az if függvényem.
Ez a 0, 1 igaz, hamis-os kiértékelés magyarázattal (jó ez a szemlélet mód), már tényleg értem, hogy miért így csinálta elsőnek
ezek után szerintem már én is megtudom csinálni, hogy mit csinál az if függvény, vagy leellenőrizni magam.
-
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 -
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...
-
blaces
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)
és ezért kell így külön kétszer megadni a feltételt... vagyis hogy a változót azt mindig egy reláció jellel kell szerepeltetni? (nem egyszerre kettővel ahogy én csináltam)
/csak egy artimetikai műveleti jelet kaphat, és nem kettőt/ -
blaces
tag
Miért hagyja figyelmetlenül az else ágat? a feltételben mit adtam meg rosszul, hogy nem nem veszi figyelembe?
#include<stdio.h>
main()
{
int szam, fszam;printf("Kerek egy otjegyu termeszetes szamot:");
scanf("%d",&szam);if (9999 <= szam <=100000)
{
printf("\nA fordítottja: ");do
{
fszam = szam % 10;
printf("%d",fszam);
szam /= 10;
} while ( szam != 0);
getch();
return 0;
}else
{printf("Nem otjegyu termeszetes szamot adtal meg! Probald ujra!");
getch();
}
return 1;
} -
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.
-
blaces
tag
válasz
Fire/SOUL/CD #582 üzenetére
köszi, nem egy létezőt akartam
már az első projektnél is ezt írta, ki, jót töltöttem le ahogy te is írtad, a beállítást meg mindjá meglesem
Egyenlőre a beadandóval kínlodok: ezt a részt nem tudom megcsinálni:
beolvass egy ötjegyű természetes számot,( a többi már működött ennek a kódját másoltam be.) ezt hogyan kell? -
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?
-
blaces
tag
válasz
Fire/SOUL/CD #580 üzenetére
ctrl+c és ctrl+v volt... valami a Codeblocks-sal nem jó... ha új C projektet hozzok létre, akkor kiírja hogy a projekt védett (és egy kis lakat jel rajta) illetve a main.c fájlnak az ikonja kettévan szakadva és nem nyitja meg, full új C projekt, érdekes ez a baj a C++-al is ha van valaki aki jártas ebben kérem segítsen... priviben
DevC++ alatt megy simán, de az egyik tantárgyból nem engedik használni ezt az eszközt.
-
-
PazsitZ
addikt
válasz
Fire/SOUL/CD #578 üzenetére
Azt hittem csak a böngésző barmolta el..., hogy nem volt kód-ban.
Bár tényleg fura dőlt idézőjel volt... -
-
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
-
blaces
tag
Hello! Mi ezzel a baj? nem hajlandó lefordítani a program (Codeblocks)?
A lényeg, hogy egy egész szám fordítottját írja ki.#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);
} -
Benmartin
senior tag
válasz
Fire/SOUL/CD #573 üzenetére
Szia!
Értem, hogy mire gondolsz és van is benne igazság, viszont több ponton nem értek egyet a mondandóddal.
- "conio.h mióta C létezik azóta van és használják".
Ez így azért nem igaz, mert az MS-DOS fordítókban használták először, a C pedig 1972-ben jelent meg és akkor még nem volt MS-DOS. Igazából ez most nem is számít igazán, nem kötekedésből mondom.- "Az viszont elég szomorú, hogy 2008-ban olyan feladatokat kapnak a tanulók, amikhez Console Application-okhoz kell nyúlni"
Attól függ mit oktatnak, bár még nem vagyok egyetemista nagyjából ismerem a tantárgyakat, vegyük például az algoritmusok és adatszerkezetek tárgyat, ahol megtanítják, hogyan kell pl. hasítótáblázatot létrehozni. Nem igazán számít, hogy milyen szép meg csicsás a programod, hanem, hogy jól működik-e, gyors, a többi itt sallang marad, nem lényeg, a hangsúly az algoritmuson van, hisz az a lelke az egésznek.
Később megtanítják majd az objektumokat, meg a grafikus interfészt is, ebben biztos vagyok. -
válasz
Benmartin #572 üzenetére
Hali!
Nos, a getch() ill a conio.h mióta C létezik azóta van és használják. Még a tankönyvek is mindenféle extra magyarázat nélkül alkalmazzák. Persze ma 2008-at írunk, és nem 1990-es évek elején vagyunk. Ezért teljesen egyetértek veled abban, hogy manapság(de csakis manapság), már más megoldásokkal kell(ene) operálni.
Az viszont elég szomorú, hogy 2008-ban olyan feladatokat kapnak a tanulók, amikhez Console Application-okhoz kell nyúlni"márpedig egyetemen úgy tudom standard ANSI C-t tanítanak."
Ehhez annyi a hozzáfűznivalóm, hogy ha ANSI C-t vagy CPP-t is tanítanak, akkor legalább olyan fejlesztőkörnyezetek segítségével(CodeGear Builder, VS C#, VS CPP) mutatnák meg a programozás rejtelmeit, szépségeit, amiket a későbbiekben hasznosítani is lehet.Mire gondolok? példáúl: írjuk ki 1-től 10-ig a számokat. Primitív feladat. De akkor legalább tennék hozzá hogy mondjuk egy StringGrid objektumban, annak legalább van értelme, nem pedig 80x25-ös karakteres képernyőn "maszatolni". A FOR ciklus ugyanaz, de legalább megismerkedne egy objektummal is egyúttal, ami hasznos is. Vagy
A korábbiakban volt olyan feladat hogy "sakktáblát" kellen kirajzolni, azon elhelyezni valamilyen betűt. Lehet pixelekkel dolgozni, ha ki tud rakni egy pixelt, adott színnel, adott helyre, akkor ki tud rajzolni is egy sakktáblát is(ami legalább hasonlít is valamelyest
), azután megtanulna két pixelt összekötni, már tudna vonalat rajzolni, ha tud vonalat rajzolni akkor azt meg lehetne forgatni 3D-be is, ha az is megy és tetszik a dolog, akkor meg neki lehet ugrani a DirectX programozásnak is... De nem, inkább a scanf() fx-t tanulja meg mert az fontos...
Tudom, hogy ezt most nagyon leegyszerűsítettem, de remélem a lényeg érthető belőle.
Mégegyszer: teljesen egyetértek a hozzászólásoddal, csak ez úgy "kikivánkozott" belőlem.
Fire.
-
Benmartin
senior tag
válasz
Fire/SOUL/CD #571 üzenetére
Szia!
Véleményem szerint nem jó dolog getch()-t ajánlani, mert a conio.h-ban található, ami nem szabványos C-library, márpedig egyetemen úgy tudom standard ANSI C-t tanítanak.
-
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)
-
blaces
tag
Sziasztok!
Tudtok C-hez olyan parancsot/függvényt (még kezdő vagyok) ami megállítja az exe-t (fordítás után a programot), hogy lássam az eredményt. Most tanuljuk és a C++-ból ismerős system("pause") parancsot nem engedik használni, mást helyette meg nem találtam.
Az első hozzászólásban lévő doksik közül is ez szerepelt a syste("pause")...
magamtól a do-while ciklusra gondoltam, hogy akarom-e újra futatni a programot, akkor látom, hogy mit akar, vagy esetleg karakter bekérést.
Vagy egy C könyvet amiben benne van ez (Programozunk C nyelvben nem találtam még, de ha lenne egy ilyen, a gyakvezér orra alá tudna rakni, hogy nézd mégis létezik)
Még egy kérdés, hol találhatok neten magyarul ilyen C függvény leírásokat, ami frissítve van? (google sok érdekeséget ad ki...)
-
-
rothkrisz
csendes tag
Sziasztok!
Ezt a programot kellene megírnom a forrás kód alapján
Készítsen C programot, amely bekér egy pozíciót (pl. B3), majd egy 8x8-as sakktáblán elhelyez egy gyalogot a megadott pozicióra. Ezután a gyaloggal egyesével lépeget "lefelé", azaz a kisebb indexű sorok felől a nagyobb indexűek felé.
A program rajzolja ki minden lépésben a sakktáblát a gyalog aktuális pozíciójával.
Pl. bemenet: D5. Ekkor a program kirajzol 4 darab sakktáblát egymás alá, amelyeken a gyalog rendre a D5, D6, D7, illetve D8 mezőkön áll.
#include<stdio.h>
#include<ctype.h>#define N 8
int oszlop,sor,sorix,ervenyes,oszlopix;
char szin,babu;
char tabla[N][N];
char inp[100];void init(){
for (sor=1;sor<=N;sor++)
for(oszlop=1;oszlop<=N;oszlop++)
tabla[sor-1][oszlop-1]=' ';
}void poziciobeker(){
do {
printf("pozicio: ");
scanf("%s",inp);oszlopix=toupper(inp[0])-'A';
sorix=inp[1]-'1';
babu=inp[2];ervenyes=((babu=='1' || babu=='2' || babu=='5') && toupper(inp[0])<'A'+N && inp[0]!='*');
if (ervenyes) tabla[sorix][oszlopix]=babu;
}while(inp[0]!='*');
}
void kirajzol(){
printf(" ");
for(oszlop=1;oszlop<=N;oszlop++) printf(" %c ", oszlop+'A'-1);
printf("\n");
for (sor=1;sor<=N;sor++){
printf(" ");
for(oszlop=1;oszlop<=N;oszlop++) printf("+--");
printf("+\n");
printf("%2d", sor);
for (oszlop=1;oszlop<=N;oszlop++){
szin=' ';
babu=tabla[sor-1][oszlop-1];
printf("|%c%c", szin, babu);
}
printf("|\n");
}
printf(" ");
for (oszlop=1;oszlop<=N;oszlop++) printf("+--");
printf("+\n");
}
int main(){
init();
poziciobeker();
kirajzol();
return 0;
} -
doc
nagyúr
válasz
cellpeti #559 üzenetére
kezdesnek nem rossz
de a getchar az getchar(), mivel fuggvenyt hivsz meg
a while magjaba meg be kell rakni az ellenorzest, ami a t, s vagy u erteket noveli, annak megfeleloen hogy mi volt a beolvasott karakter
persze ahhoz, hogy ellenorizni tudd, be kell tenni egy valtozoba az erteket -
cellpeti
nagyúr
az első feladatot nem úgy kell megoldani,hogy elösször billről bekérem a karaktereket?
Tehát akkor lesz egy olyan változóm,amibe a karaktereket belekérem,és kell még egy,amibe beleteszi a megszámolt karaktereket?!(szóköz,tabulátort,újsor)
utánna while és if-vel kell megcsinálni?!? -
doc
nagyúr
válasz
cellpeti #554 üzenetére
1) nem valaszoltal a kerdesre
2) a stilusodon nem artana csiszolni
3) most megis hogy varod el hogy a kod ismerete nelkul megmondja valaki, hogy adott valtozot mire hasznal?
4) ebben az esetben viszont NAGYON minimalis gondolkodassal teljesen egyertelmu a valasz
5) ha a konyv olvasasa soran ennyire nincs lovesed sem a feladatok megoldasarol, akkor olvasd el meg egyszer az adott fejezetet... -
cellpeti
nagyúr
Foggalmam sincs,hogy kell ezeknek a feladatoknak neki állni:
1.) Írjunk programot, ami megszámolja a bemenetre adott szövegben lévő szóközöket, tabulátorokat és újsor-karaktereket!
2.) Írjunk programot, ami a bemenetre adott szöveget úgy másolja át a kimenetre, hogy közben az egy vagy több szóközből álló karaktersorozatokat egyetlen szóközzel helyettesíti!
3.) Írjunk programot, ami a bemenetre adott szöveget úgy másolja át a kimenetre, hogy közben a tabulátorkaraktereket \t, a visszaléptetés-(backspace) karaktereket \b és a fordított törtvonal-(backslash) karaktereket \\ karakterrel helyettesíti!
-
cellpeti
nagyúr
EZ miért nem írja ki nekem a leütött karakterek számát???
#include<stdio.h>
main()
{doubel nc;
for(nc = 0; getchar() !=EOF; ++nc)
;
printf("%.0f\n", nc);
} -
cellpeti
nagyúr
Sziasztok!
Elkezdtem olvasni az ajánlott irodalmat:
Brian W, Kernghan és Dennis M. Ritchie: A C programozási nyelv
Értehetően írja le meg minden,de a fejezetek végén vannak feladatok és azokat nem tudom,hogy kéne megoldani.
Ötltetem van,de lehet nagy baromság. Nincs ehhez valami CD a neten esetleg,nem tudja valaki,vagy megoldás?? -
TomBoy1986
veterán
válasz
TomBoy1986 #548 üzenetére
Már rájöttem mi volt a gond. Rossz típusú projektet nyitottam. Szóval tárgytalan.
-
TomBoy1986
veterán
Sziasztok!
Egy kis segítséget szeretnék kérni, mert új felületen kellene programoznom, de valahogy sehogy sem tudok rájönni arra, hogy miképp is kellene működésre bírni.
Szóval, Visual Studio 2008 Exp. Edit. feltelepítve. Szeretnék egy egyszerű hello-t kiiratni, hogy lássam miben is különbözik a régitől, de sajnos ez olyan sokban, hogyha csak egy cpp-t nyitok, akkor le sem tudom fordítani
(vagy pedig ha mégis lehet, akkor nem tudom hogyan - tehát valami menüpont, hasonló kellene).
Maradt a projektes megoldás, amelynél pedig hiába addolok hozzá cpp-t és írom bele a main fgv.-t tojik a fejemre, s azt mondja, hogy nincs programkód.
Tehát szeretném megkérni, valamely hozzáértő kollégát, hogy az elindulásról világosítson fel, legyen szíves. Köszönöm szépen előre is!
-
sghc_toma
senior tag
válasz
Benmartin #546 üzenetére
Szia!
Igazad van, beadandóimban én sem mindig csinálok teljes input-validációt, mert minek. Viszont ez tudatos. Azért említettem meg a dolgot, mert ha a kezdő programozóba belerögzül, hogy gets, és nem ismeri annak veszélyeit, akkor simán elképzelhető, hogy production code-ban is használni fogja.
-
Benmartin
senior tag
-
sghc_toma
senior tag
válasz
Fire/SOUL/CD #544 üzenetére
Hello!
Semmi gond, én is találkoztam már beszólogató emberkékkel
Tény, hogy lehet szívni az stdin-nel, amíg az ember nem tudja, hogyan is működik az a fránya input buffer. Az a baj, hogy a gets-el akkor is szívhatsz, ha tisztában vagy a dolgok működésével - ugyanis semmilyen lehetőséged nincs biztosan elkerülni a túlcsordulást.
Azzal érvelsz, hogy a programozást oktató tanárok ezt nem tanítják. Ellopom az érvedet, és felhasználom
A tanárok pl. a gets veszélyeire sem hívják fel a figyelmet.
Azért nem tartom jó ötletnek a gets használatát példakódban, mert akkor a programozópalánta azt ismeri meg, azt fogja használni, pedig van biztonságos(abb) megoldás is. Persze ahhoz többet kell tanulnia, meg pötyögnie, de potenciális b0f-t nem szabad benthagyni egy programban. Szerintem.
-
válasz
sghc_toma #543 üzenetére
Hali!
Elöször is bocsesz a "költői visszakérdezésért", de már előfordult, hogy valaki minden szakmai alapot nélkülöző hozzászólással gazdagított, amikor meg visszakérdeztem, hogy hát azért mégis elmagyarázhatná nekem(amúgy nem kellett volna) hogy hogyis van az, na azóta nem hallottam felőle.
Való igaz (ahogy Te illetve dabadab kolléga is írta) a GETS magában rejti ezt a fajta hibalehetőséget, de csak ezt, és ez jól látható(money[255]). Nyílván nem létezik olyan bankautomata amibe be lehet írni 255 számjegyből álló összeget, hogy adja ki 20ezresekbe, vagy ha igen szóljatok, mert kérek kölcsön egy MTZ traktort azt elhozzuk, mert akkor k... sok pénz van benne...Azért nem szeretem a pl SCANF-t, mert az viszont rejtett "hibákat" tartalmaz és aki most ismerkedik a C-vel(lásd CELLPETI) azt nem tudhatja(mert sajnos a informatika vagy prográmozást oktató tanárbácsik is gyakran megfeletkeznek ennek elmagyarázásáról). Mire gondolok? Hát például Te is említést teszel ama bizonyos STDIN-ről ugyebár, amit a SCANF is "használ". Ha valaki tényleg korrekt INPUT-ot akar írni, annak erre oda kell figyelni. egy példával illusztrálom:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int n1,n2;
do {
printf("Enter 2 numbers [num1,num2]: ");
if (scanf("%d,%d",&n1,&n2)!=2) {
printf("Bad INPUT, try again or * to EXIT...\n");
continue;
}
printf("SUM(%d,%d) = %d\n",n1,n2,n1+n2);
} while (getch()!='*');
return 0;
}Nos, első ránézésre hibátlan, de mégsem. A következőképp működik az adott értékek mellett:
ha 5,7 akkor hibátlanul fut
ha 12345678901,12345678901, akkor hibás eredmény
ha a,b akkor hibás működés
ha 5.0,7.0 akkor hibás működésA hibás értékkel nem kell foglalkozni, az nyílvánvaló, azonban mi okozza a hibás működést? Nos annyit elárulok hogy a STDIN.
Természetesen nem Tőletek kérdem a megoldást(hisz biztosan tudjátok), hanem azoktól a leendő programozópalántáktól akik most ismerkednek a C-vel, és remélhetőleg elolvassák mások szakmai hozzászólását.
Szóval ezzel csak azt akartam illusztrálni, hogy kézenfekvő alap C input fx-ek is megtudják nehezíteni az ember életét, és ráadásul ezt úgy teszik hogy amúgy a kód hibátlan(vagy annak tűnik)Nos ezért szoktam kezdő programozóknál inkább a GETS-et alkalmazni.
Fire.
-
sghc_toma
senior tag
válasz
Fire/SOUL/CD #541 üzenetére
hello!
ahogy dabadab mondja, egy túl hosszú input csinálhat gonosz dolgokat.. próbáld ki mondjuk 300-400 számjeggyel, úgy tuti felülírod a return address-t a stack-en valami hülyeséggel, és kapsz egy segfault-ot.. persze a mai fordítókban vannak mindenféle védelmek overflow-k ellen, de azért nem szabad csak azokra támaszkodni..
-
dabadab
titán
válasz
Fire/SOUL/CD #541 üzenetére
Egyszeruen stdinen be kell adni a programnak. Semmi ellenorzes nincs arra nezve, hogy nem jon be 255-nel tobb karakter, siman felul lehet irni az egesz stacket.
-
-
sghc_toma
senior tag
válasz
Fire/SOUL/CD #539 üzenetére
egy tanács: a gets függvényt érdemes elásni.. jó mélyre.. olyan gyönyörű buffer overflow-t lehet vele gyártni, hogy ihaj.. ott van helyette pl. az fgets: harmadik paraméter stdin, és ugyanazt csinálja, mint a gets, csak kultúráltabban..
-
válasz
cellpeti #538 üzenetére
Hali!
Gyorsan megcsináltam(több megoldás is létezik persze), mielött ellépek itthonról. Ha valami nem tiszta írj. Késő este vagy holnap leszek majd.
(mivel ez csak példa, nem foglalkoztam azzal hogy kitudja mekkora számot lehessen beírni, ezért 2 gigánál nagyobbat ne írj be, mert hibásan fog működni. Bár kipróbálhatod)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define C_Y 14
int cimlet[C_Y] = {20000,10000,5000,2000,1000,500,200,100,50,20,10,5,2,1};
int hanyszor[C_Y] = {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0,0,0};
int main()
{
long int i, cash;
char money[255];
printf("Enter money: ");
if (!strlen(gets(money))) {
printf("\n\nMoney not found...EXIT");
return -1;
}
printf("\n\n");
for (i=0;i<strlen(money);i++)
if(money[i]<'0' || money[i]>'9') {
printf("Is NAN [Not A Number]...\nEXIT");
return -1;
}
cash=atoi(money);
for (i=0;i<C_Y;i++) {
hanyszor[i]=cash / cimlet[i];
cash-=hanyszor[i]*cimlet[i];
if (hanyszor[i]) printf("%5d db\t %d\n",hanyszor[i],cimlet[i]);
}
return 0;
}Fire.
-
dabadab
titán
-
PazsitZ
addikt
válasz
cellpeti #527 üzenetére
Azért írtam oda, hogy "letárolod a címletet"
Bár osztással tényleg gyorsabb.
Megtaláltam egy régi pascalos forráskódom.
Ez bankautomata és csak pár értékes, de hátha segít:write('K‚rt ”sszeg:');readln(be);
x:=be mod 1000;
if x<=0 then begin
y:=(be div 1000);
if y mod 10>=0 then begin
ossz10:=y div 10;
be:=y mod 10;
end;
if y mod 5>=0 then begin
ossz5:=be div 5;
y:=be mod 5;
end;
if y mod 1>=0 then begin
ossz1:=y div 1;
be:=y mod 5;
end;
writeln('kiadand˘ cˇmletek:');
writeln('10000ft-os cˇmlet:',ossz10:8:0);
writeln('5000ft-os cˇmlet:',ossz5:8:0);
writeln('1000ft-os cˇmlet:',ossz1:8:0);
end
else begin
writeln('Minimum 1000,5000,10000ft-os cˇmletek vehet‹ ki');
end; -
cellpeti
nagyúr
Hogyan kell bekérni a billről számokat?
Hogyan töltök fel tömböt C-ben?? -
PazsitZ
addikt
válasz
cellpeti #525 üzenetére
Haladsz a legnagyobb címlettől a legkisebbig. Ezeket berakhatod egy tömbbe. [20000,10000,5000...]
Ha az összeg nagyobb, mint a címlet: kivonod a címletet a pénzösszegből, letároloda címletet majd újravizsgálod.
Ha kisebb: kisebb címletre lépsz.
Ha a pénzösszeg nulla kiírod a letárolt címleteket.Szvsz ha aktualizálni akarod beolvasásnál szabd ki, hogy 5-re vagy nullára végződjön a pénzösszeg.
-
cellpeti
nagyúr
Sziasztok!
Van egy ilyen feladat,hogy:
Adott egy pozitív egész szám, mint forintban kifizetendő pénzösszeg. Fizessük ki a legkevesebb címlet felhasználásával!Tehát,ha jól értem a feladatot,akkor:
Be kell kérni egy összeget a billentyűzetről és azt felbontani,ugye?
Mivel pozitív egész számról van szó,ezt rakhatom nyugodtan "int" változóba,majd be kell kérnem a billről egy összeget. majd maradékos osztással kell kiszámolnom? Vagy sima osztással? -
speedtouch
csendes tag
válasz
Fire/SOUL/CD #523 üzenetére
Hali!
Uhh isten vagy. Köszi nagyon.
Prímán működik -
válasz
speedtouch #522 üzenetére
Hali!
A kód Code::blocks-ban íródott, sima Ansi C. Ha valami nem érthető esetleg, akkor írj nyugodtan.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CS_Y 38
#define CS_X 5
int LCD_Digits[CS_X][CS_Y]={
{0x20,0xC9,0xCD,0xBB, 0x20,0xCB, 0x20,0xCD,0xCD,0xBB, 0x20,0xCD,0xCD,0xBB, 0x20,0xCB,0x20,0xCB, 0x20,0xC9,0xCD,0xCD, 0x20,0xC9,0xCD,0xCD, 0x20,0xCD,0xCD,0xBB, 0x20,0xC9,0xCD,0xBB, 0x20,0xC9,0xCD,0xBB},
{0x20,0xBA,0x20,0xBA, 0x20,0xBA, 0x20,0x20,0x20,0xBA, 0x20,0x20,0x20,0xBA, 0x20,0xBA,0x20,0xBA, 0x20,0xBA,0x20,0x20, 0x20,0xBA,0x20,0x20, 0x20,0x20,0x20,0xBA, 0x20,0xBA,0x20,0xBA, 0x20,0xBA,0x20,0xBA},
{0x20,0xBA,0x20,0xBA, 0x20,0xBA, 0x20,0xC9,0xCD,0xBC, 0x20,0xCD,0xCD,0xB9, 0x20,0xC8,0xCD,0xB9, 0x20,0xC8,0xCD,0xBB, 0x20,0xCC,0xCD,0xBB, 0x20,0x20,0x20,0xBA, 0x20,0xCC,0xCD,0xB9, 0x20,0xC8,0xCD,0xB9},
{0x20,0xBA,0x20,0xBA, 0x20,0xBA, 0x20,0xBA,0x20,0x20, 0x20,0x20,0x20,0xBA, 0x20,0x20,0x20,0xBA, 0x20,0x20,0x20,0xBA, 0x20,0xBA,0x20,0xBA, 0x20,0x20,0x20,0xBA, 0x20,0xBA,0x20,0xBA, 0x20,0x20,0x20,0xBA},
{0x20,0xC8,0xCD,0xBC, 0x20,0xCA, 0x20,0xC8,0xCD,0xCD, 0x20,0xCD,0xCD,0xBC, 0x20,0x20,0x20,0xCA, 0x20,0xCD,0xCD,0xBC, 0x20,0xC8,0xCD,0xBC, 0x20,0x20,0x20,0xCA, 0x20,0xC8,0xCD,0xBC, 0x20,0xCD,0xCD,0xBC}
};
int main()
{
int i,j,LCD_Digit_Index,LCD_Digit_Width,k;
char num[255];
printf("Type INTEGER number: ");
if (!strlen(gets(num))) {
printf("\n\nINTEGER not found...\nShow all LCD digits and EXIT\n\n");
for (i=0;i<CS_X;i++) {
for (j=0;j<CS_Y;j++)
printf("%c",LCD_Digits[i][j]);
printf("\n");
}
return -1;
}
printf("\n\n");
for (i=0;i<strlen(num);i++)
if(num[i]<'0' || num[i]>'9') {
printf("Is NAN [Not A Number]...\nEXIT");
return -1;
}
for (i=0;i<CS_X;i++) {
for (j=0;j<strlen(num);j++) {
LCD_Digit_Index = num[j]-'0'>1 ? (num[j]-'0')*4-2 : (num[j]-'0')*4;
LCD_Digit_Width = num[j]-'0'==1 ? 2 : 4;
for (k=0;k<LCD_Digit_Width;k++)
printf("%c",LCD_Digits[i][LCD_Digit_Index+k]);
}
printf("\n");
}
return 0;
}Fire.
-
speedtouch
csendes tag
Bocsi a helytelen leírásért, még korán volt, mikor írtam
Bármilyen segítségnek nagyon örülnék, hátha el tudok indulni utánna -
válasz
speedtouch #520 üzenetére
Hali!
Így már más, LCD nem LDC, így érthető....NET-be sajna nem tudok segíteni(ezért most nem pakolom fel a VS-t), de ha sima C megfelel, akkor oké.
Fire.
-
speedtouch
csendes tag
http://e-oktat.pmmf.hu/webgui/www/uploads/images/677/hf2.pdf
Itt a 9-es feladat. (lehet, hogy rosszul fogalmaztam az előbb)
-
válasz
speedtouch #518 üzenetére
Hali!
Sajna VS-ben nem dolgozom, de ha egy példával illusztrálnád, hogy VS-ben mi is az a LDC formátum, az sokat segítene...
pl: 1234567 a szám és ebből lesz 1980.01.01 vagy valami
Fire.
-
speedtouch
csendes tag
Hali!
Lenne egy olyan gondom, hogy visual studioban olyan programot kell írnom, ami ha bekér egy számot, akkor azt LDC-el formátumban mutassa majd ki. Az lenne a probléma, hogy nem tudom, hogy állítsam be ezt a formát hozzá.
-
!wannabe
tag
válasz
Fire/SOUL/CD #516 üzenetére
Szerintem ez érdekli. Jaja ez a páratlan-páros dolog, viszont header file-okkal, szóval teljes kód az igény ha jól értelmezem.
-
-
ltz400
csendes tag
Nekem nem tudtok segíteni?
-
válasz
Fire/SOUL/CD #513 üzenetére
Hali!
Küldtem privbe.
Fire.
-
-
válasz
rothkrisz #511 üzenetére
Hali!
Kellemes feladatokat kaptok, nekem is jó, mert "retrózhatok".
Nos, több megoldása is lehet a feladatnak, Én az alábbi módszert választottam, elsősorban mert x64 Vista alatt ne futnak a DOS-os c/cpp editorok, ebből adódóan a kurzorpozicíóval, assembly betéttel, megszakításokkal nem tudok mit kezdeni.(ugyanis úgy is meg lehetett volna oldani, hogy egyből megjelenik a tábla, és egyből megjelenik rajt a bevitt mezőn az "érme"....)Lesz bent egy teljesen kikommentezett rész, azt csak azért hagytam bent, hogy még egy mátrix definíciót is láss. Sajna ott viszont már "keményen" mútatókkal lehet volna csak operálni, és ha valaki nincs tisztában velük, akkor tényleg nem fog érteni belőle semmit....
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CB_XY 17
/*
unsigned char ChessBoard_Matrix[][CB_XY]={
"╔","═","╦","═","╦","═","╦","═","╦","═","╦","═","╦","═","╦","═","╗",
"║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
"╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
"║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
"╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
"║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
"╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
"║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
"╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
"║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
"╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
"║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
"╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
"║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
"╠","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╬","═","╣",
"║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║"," ","║",
"╚","═","╩","═","╩","═","╩","═","╩","═","╩","═","╩","═","╩","═","╝"
};
*/
int ChessBoard_Matrix[CB_XY][CB_XY]={
{0xC9,0xCD,0xCB,0xCD,0xCB,0xCD,0xCB,0xCD,0xCB,0xCD,0xCB,0xCD,0xCB,0xCD,0xCB,0xCD,0xBB},
{0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
{0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
{0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
{0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
{0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
{0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
{0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
{0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
{0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
{0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
{0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
{0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
{0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
{0xCC,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xCE,0xCD,0xB9},
{0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA,0x20,0xBA},
{0xC8,0xCD,0xCA,0xCD,0xCA,0xCD,0xCA,0xCD,0xCA,0xCD,0xCA,0xCD,0xCA,0xCD,0xCA,0xCD,0xBC}
};
int main()
{
int i,j,k;
char str[256];
while(0==0) {
printf("Enter coordinate and value: ");
strupr(gets(str));
if (str[0]=='*') { printf("\nGenerating Chessboard\n\n"); break; }
if (!strlen(str) || strlen(str)>3) { printf("Bad SIZE found [%s=>%d], skipped...\n",str,strlen(str)); continue; }
if (str[0]<'A' || str[0]>'H') { printf("Bad COLUMN found [%c], skipped...\n",str[0]); continue; }
if (str[1]<'1' || str[1]>'8') { printf("Bad ROW found [%c], skipped...\n",str[1]); continue; }
if (str[2]!='1' && str[2]!='2' && str[2]!='5') { printf("Bad VALUE found [%c], skipped...\n",str[2]); continue; }
ChessBoard_Matrix[('8'-str[1])*2+1][(str[0]-'A')*2+1]=str[2];
}
for(i=0,k=8;i<CB_XY;i++) {
if ((i % 2)) printf("%d ",k--);
else printf(" ");
for(j=0;j<CB_XY;j++)
printf("%c",ChessBoard_Matrix[i][j]);
printf("\n");
}
for(printf(" "),i=0;i<8;printf("%c ",'A'+i),i++);
printf("\n\n");
return 0;
}Fire.
UI: remélem jól értelmeztem a feladatot...
-
rothkrisz
csendes tag
Sziasztok segítséget szeretnék kérni.
Sakktáblarajzoló programot kellen írnom ami a megrajzolt sakktáblán 1,2,5 ös számokat helyez el pl.A32(A oszlop 3 sor egy 2 érme kerül.)
a bekérés * jelig tart.
Remélem érthető
előre is Köszönöm
-
amargo
addikt
válasz
Fire/SOUL/CD #505 üzenetére
Jogos!
Én csak alakiságot figyeltem. -
doc
nagyúr
válasz
Fire/SOUL/CD #505 üzenetére
ja, kozben utananeztem hogy mit is csinal, de sosem volt ra szuksegem
ltz400: ez nem teljes program, csak egy fuggveny, ha mindenaron modf-et akarsz hasznalni, akkor meghivhatod a megadott szammal mint parameterrel -
Hali!
Hát szomorú ha nem hallottál róla, a MATH.H-ban van. Egy lebegőpontos számot "oszt" két részre, egész ill törtrészre. (vagy egyszerűbben a tizedespont jobb oldalára ill bal oldalára)
persze abban egyetértek, hogy eldönteni egy számról, hogy páros vagy páratlan tök felesleges használni(de lehet)Fire.
UI: amargo kódja, már kerekítéssel is foglalkozik(0,5-től felfelé kerekítünk, egyébként meg lefeleé)
Annyi "kritika", ha valami NEM NAGYOBB EGYENLŐ MINT 0,5, akkor felesleges az ELSE után az összehasonlítás....(Amargo kódjáról van szó)
-
amargo
addikt
A moduló jobb erre, de Te ezt kerested:
//------------------------------------------
int rounder(double pix)
{
double egesz = 0, tort = 0;
tort = modf(pix,&egesz);
if(tort >= 0.5)
{
pix = ceil(pix);
}
else if(tort < 0.5)
{
pix = floor(pix);
}
return pix;
}//int rounder
//------------------------------------------Szerk:
Kódba raktam -
ltz400
csendes tag
Sziasztok!
Még kezdő vagyok programozás terén.C nylvet kezdtem el tanulni.Segítségeteket szeretném kérni.Kellene egy olyan program amely bekér két számot majd eldönti páros vagy páratlan.Asszem modf-el kéne valamit ügyeskedni hogy ha elosszuk a számot 2-vel és nincs maradék páros ha van páratlan.
Ú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!
- Honor 200 Pro - mobilportré
- Milyen belső merevlemezt vegyek?
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Intel Core i3 / i5 / i7 / i9 10xxx "Comet Lake" és i3 / i5 / i7 / i9 11xxx "Rocket Lake" (LGA1200)
- Kerékpárosok, bringások ide!
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Fotók, videók mobillal
- Le Mans Ultimate
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Xbox Series X|S
- További aktív témák...
- Quadro FX 570 eladó
- Bomba ár! Lenovo ThinkPad Yoga 260 - i5-G6 I 8GB I 256SSD I 12,5" Touch I W10 I Cam I Gari!
- LG 55G4 - 55" OLED evo - 4K 144Hz & 0.1ms - MLA Plus - 3000 Nits - NVIDIA G-Sync - FreeSync Premium
- Új! HP 230 Vezetéknélküli USB-s Billentyűzet
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest