Új hozzászólás Aktív témák
-
cellpeti
veterán
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);
}[ Szerkesztve ]
Tigris, tigris, csóvafény...
-
cellpeti
veterán
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!
Tigris, tigris, csóvafény...
-
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
veterán
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?!?Tigris, tigris, csóvafény...
-
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 -
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;
} -
félisten
-
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...)
-
-
félisten
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)
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
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.
-
félisten
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.
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
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. -
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);
} -
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
[ Szerkesztve ]
- http://pazsitz.hu -
-
félisten
Hali!
Azért megy nálad, mert Te idézőjeleket használsz(ahogy kell), a rossz kódba meg valami dupla "valami" van(nem idézőjel), ahogy Lortech kolléga is említí.
Fire.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
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...- http://pazsitz.hu -
-
félisten
-
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.
-
félisten
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?
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
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? -
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
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;
} -
ArchElf
addikt
mert if (9999 <= szam && szam <=100000) kellene...
szerintem...
Amit írtál, ott az egyik egyenlőségjelet kiértékel, és a "kiértékelt" eredménnyel számol utána.AE
[ Szerkesztve ]
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
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/ -
ArchElf
addikt
Nem. Kiértékeli az egyiket, és a kiértékelés eredményével számol tovább (false|true illetve 0|!0 - a true értéke implementációfüggő, lehet 1, -1, akármi, ami nem 0).
AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
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...
[ Szerkesztve ]
in asm we trust
-
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[ Szerkesztve ]
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
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.
-
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?
-
félisten
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.
[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
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.
Ú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!
- Poco X6 Pro - ötös alá
- Kormányok / Autós szimulátorok topicja
- Nem indul és mi a baja a gépemnek topik
- Autós topik látogatók beszélgetős, offolós topikja
- Miskolc és környéke adok-veszek-beszélgetek
- Zyxel 542 Párosítása
- Politika
- Építő/felújító topik
- SSD kibeszélő
- AMD GPU-k jövője - amit tudni vélünk
- További aktív témák...
- -65% Dell Latitude 7310 2in1: i7 10610U,16GB,256GB,13.3" Touch 100%sRGB 350nit,WWAN eSIM,Win11
- Samsung Galaxy S22 - Fekete - Független - 2025.03.05-ig garancia - Tökéletes állapot
- Endorfy Fortis 5 ARGB CPU hűtő áron alul! (3 db)
- Forradalmasítsd a digitális világodat a HoloLens 2-vel!
- ÚJ Dell Inspiron 7430 2-in-1 - 14" FHD+ IPS TOUCH 360 / i5-1335U / 16Gb DDR5 / 512Gb PCIe 4.0 / 3 ÉV
- Formd t1 v1.1 mini-itx, sub-10liter (több kép leírásba)
- Lenovo Legion 1 Tulajos Gamer Laptop 144Hz i7 9750H 16GB 512GB SSD GTX 1660 Ti 6GB 192bit Dobozában
- Lenovo 2024.10.hó-ig Garis Gamer Laptop i5 10300H 16GB DDR4 512GB SSD GTX 1650 4GB GDDR6 Dobozában
- KERESEK! DDR5 6000mhz+ 32GB (2x16gb) garancias ramot BUDAPESTEN !40K-ig!
- LG 19M38A MONITOR!!!!