Új hozzászólás Aktív témák
-
bucsupeti
senior tag
végigiterálsz a sztringen karakterenként. a karaktert átalakítod 0-15 közti számértékké (ascii tábla tanulmányozása után egy egyszerű kivonás lesz az átalakítás) megszorzod 16-al, majd beolvasod a következőt számmá alakítod és az előző értékhez hozzáadod. ez lesz a tömböd első eleme. ezt a metódust folytatod amíg a végére nem érsz a sztringnek.
-
bucsupeti
senior tag
válasz
#34322688 #5098 üzenetére
két egymásba ágyazott for ciklust használj. egyet a mátrix sorainak, másikat az oszlopok indexelésére...
pl kereszt pszeudókódban:
számolj 0-tól 20-ig (x)
számolj 0- tól 20-ig (y)
ha x=11 vagy y=11 akkor kiír("*")szerintem itt a "nehéz" az hogy hogyan rajzold ki az adott mintát. Ehhez jó ha lerajzolod a mintát, esetleg leírod egymás után sorról sorra a kiírandó karakterpozíciókat a mátrixmban.
ha kell még segítség szólj!
-
bucsupeti
senior tag
Pontosan erre gondoltam. Azért kérték hogy bekérés és kiiratás a main()-ban legyen és ne a függvényben, mert így csupán az infót adja vissza a függvény csak a lényeget csinálja. Az hoyg azzal mit kezdesz (pl kiiratod) az már a függvénytől független lesz.
Itt már el is lehetne kezdeni az MVC modellről, de szerintem az még nem időszerű
A két kolléga tanácsait fogadd meg! Sokkal olvashatóbbá és egyszerűbbé lehet tenni a kódot ezekkel a módszerekkel.
-
bucsupeti
senior tag
válasz
lotuska #4978 üzenetére
A billentyűzet pufferbe bennmarad egy enter és azt olvassa ki a scanf a %c-re
Ezt úgy lehet kezelni, hogy a scanf-nek megadod az elválasztó karakter, amit a beolvasáskor elnyel.
Az elválasztó karakter ez esetben a \r.Érdemes kiíratni hoyg mit is olvasott be, így hamar kiderülnek a hasonló hibák.
Javítsd ki így a scanf-es sort:
scanf("%d\r%d\r%c",&a,&b,&c);
így nekem működött linux alatt. a scanf_s nem ansi C szabvány, hanem a microsoftnak a találmánya, azzal nem tudom kipróbálni.
-
bucsupeti
senior tag
válasz
DrojDtroll #4966 üzenetére
bash scriptben akarod megtenni?
-
bucsupeti
senior tag
válasz
BTminishop #4958 üzenetére
grafikus felület programozásánál felejtsd el a C-t! Természetesen lehet azzal is, csak nem épp a legjobb választás. Ha desktop alkalmazást akarsz készíteni akkor C++ (esetleg nagyon óvatosan mondom: Java Swing).
Ha suliban Visual Studiot használtok akkor hazsnáld azt.
-
bucsupeti
senior tag
válasz
BTminishop #4953 üzenetére
Előszöris a programozás szerintem az hogy egy probléma megoldására algoritmust készítesz. Ha ez megvan akkor az algoritmus köré felhasználói felületet tenni már "nem nagy ügy".
(Valójában persze a legfontosabb a felhasználói élmény, az hogy az alkalmazást használók szívesen dolgozzanak a szoftverrel.)A lényeg hogy ha C-ben tudsz algoritmusokat írni, akkor rendben vagy. Most már csak meg kell ismerni a különféle GUI keretrendszereket. Ahogy látom neked most egy picit a komponens alapú GUI fejlesztéssel kellene megismerkedned, ahol majd egy gomb megnyomására lefut az említett programod és valamilyen grafikus komponens segítségével (pl datagrid) megjeleníti az eredményt.
Rengeteg GUI építő tutorial létezik a youtobe-on. Ha C/C++ akkor én javasolni tudom a QT környezetet. Tényleg egyszerű és jól használható (ráadásul Linuxon és windowson is elérhető).
Itt egy QT oktató videósorozat.
Sok sikert!
-
bucsupeti
senior tag
"Viszont az algoritmus az algoritmus barmelyik altalanos celu nyelvben,"
+1
Ezt a mondatot, gondolkodást kellene megtanítani a mai programozótanoncoknak. Sokszor hallom hogy "C-ben simán megírom, de Java-ban ez bonyolult". Ehh.
Én HT-1080Z-n írta meg ezt a számkitaláló programot majd harminc évvel ezelőtt
-
bucsupeti
senior tag
Előszöris az igazzy C programozó, valamiféle Unix féle rendszert használ, természetesen c-shellel
De komolyra fordítva a szót. Szerintem először célszerű átlátni hogy a programozás egyes fázisaiban mi is történik, milyen programokat és miért kell futtatni. (szerkesztés, fordítás, futtatás, hibakeresés) Ezeket a részleteket az integrált fejlesztői környeztek jól eltakarják, ezzel "egyszerűsítve" a programozást.
Szóval az IDE-k használata (pl. Dev-C, Code-Blocks, Visual Studio, Netbeans, Eclipse) szerintem csak akkor jó ötlet ha tudod mi történik és hogyan. Ha ez a lépés kimarad akkor nagyon sok minden bonyolultnak, érthetetlennek tűnhet.Később valamelyik professzionális IDE megismerése mindenképp javasolt. Én az Eclipse mellett döntöttem, de van más lehetőség is.
-
bucsupeti
senior tag
úgy látom vége a vizsgaidőszaknak, meg a féléves beadandók határideje is letelt már...
-
bucsupeti
senior tag
A while feltétel így elég "bonyolultan" néz ki. Nem látszik belőle hogy gyakorlatilag te az "ennyi" szó beírásakor hagynád abba a ciklust (holott a feladatban a "stop" volt megadva
)
Inkább csinálj egy függvényt rá, vagy használd a string.h-ban lévő strcmp() függvényt. Sokkal kellemesebb lesz a kódod.
pl:
do {
printf("Add meg a tulajdonos nevet!\n)"); scanf("%s",domain);
printf("Add meg az elofizeto havidijat!\n"); scanf("%d",&hd);
} while (strcmp(domain,"ennyi"));Gyakorlatilag bekéregeted az adatokat és nem csinálsz velük semmit. Kivéve azzal az adattal aminél a domain nevű stringbe azt írod hogy "ennyi"
Pl ha azt írod be hogy "alma" akkor nem történik semmi újból fut a ciklus.Ezután beírod hogy "ennyi" akkor a ciklus befejeződik. Ezek után szándékod szerint ezt kiíratod egy vmi.txt nevű fájlba.
Sok értelme ennek nincs, mert a többi adat nincs elmentve.
A fájlba írást a ciklusmagban kell elvégezned, vagy tömbbe (láncolt listába) kell az adatokat bekérni, majd a bekérő ciklus után az egészet kiírni egyben.A progi elején a vmi nevű struktúra az mi akar lenni? Nem használod sehol.
-
bucsupeti
senior tag
A bekérések után van ez a két sor:
arany = ar[j] / szam[i];
if(arany>4.5)Ugyebár ez helyett kell egy függvényt csinálni. Pontosabban kell egy olyan függvény ami kiszámolja az arányt és visszaadja azt eredményül. Ezt kellene az if()-ben meghívni. Több lehetőség van.
A függvény formális paraméterei ilyenek lehetnek pl:float aranyszamitas(float*, float*, int) :ebben az esetben a két tömböt adjuk át és a tömbindexet amit arányosítani kell.
float aranyszamitas(float, float): ebben az esetben két float számot adunk át, amit arányosítani kell.
Az aktuális paraméterekkel az if() így néznek ki:
Első paramétrezés: if(aranyszamitas(ar,szam,i)>4.5)
Második paraméterezés: if(aranyszamitas(ar[i],szam[i])>4.5)Mostmár csak a két függvény közül az egyik változatot ki kell választanod és megírni
Szerintem meg tudod oldani! Ha nem megy írd le meddig jutottál.
-
bucsupeti
senior tag
Én értem a feladatot. Azt írtad hogyha számmal csinálod a ciklusfeltétel ellenőrzését akkor minden jó, de szöveggel nem működik. Ekkor kértem, hogy írd be a forráskódot ide, hogy lássuk, mi az ami nem működik.
Ne haragudj, de a programot nem írom meg helyetted. Szívesen adok tanácsot, vagy véleményt mondok a megoldásodról, de ahhoz konkrét forráskódot kéne látni.
Kíváncsi vagyok arra, hogy pl milyen módon hasonlítod össze a szövegeket, illetve érdekel még az is hogy a while()-ban a zárójelek között mi van?
-
bucsupeti
senior tag
Igazad van, egyetértek veled abban hogy változnak a dolgok és más értelmet kapnak így nem biztos hogy egy programozó a jövőben foglalkozni akar azzal, hogy mi és hogyan tölti be a programokat a memóriába, (egyáltalán mi az a memória) és hogy hogyan kapja meg a vezérlést, majd ha a futásnak vége van akkor mi történik. Egyszerűen elkészíti a szoftvert ami megoldja a problémáját.
De ez nekem akkor is furcsa.... Bár az is igaz hogy az első programomat 30 éve írtam, így valóban egy korábbi generáció tagja vagyok és mást gondolok az informatikus/programozó/IT szakember stb szavakról. -
bucsupeti
senior tag
válasz
alapz@j #4298 üzenetére
igazad van. én sem kezdeném így. Azt viszont elmondanám hogy van a processzor, meg a memória stb. Aztán van egy olyan hogy oprendszer, ami müködteti az egészet. a programok hogyan hová töltődnek és hogy indulnak el stb... Ez nélkül nehéz elképzelni hogy valaki jó programozó lesz...
-
bucsupeti
senior tag
válasz
alapz@j #4296 üzenetére
Én azt vettem észre hogy akik programozást kezdenek tanulni azok közül sokan nem tudják hogy mi is az a program, hogyan készül, mi van az egész programozás mögött. Annyit látnak hogy begépelik a programsorokat, jó esetben tudják a programnyelv elemeit használni és azt tudatosan teszik, de sajnos azzal hogy a forráskód megírása után mi is történik, miért szükséges fordítani (vagy egy virtuális gépnek átadni, esetleg egy interpreterrel feldolgoztatni) arról nincs fogalmuk.
Egy képletes példa: A király elhatározza hogy palotát épít, olyat amilyet még nem látott a világ. Az utazók kíváncsian fogják felkeresni a várost, hogy csodájára járjanak majd ennek a nem mindennapi építmények. A kőfejtőben, ahol a palotához hasítják a kőtömböket, megkérdeznek két munkást hogy mit gondolnak, mit csinálnak itt egész nap.
Az első azt mondja: Egész nap izzadok, fejtem a követ itt a koszos, poros bányában. Nem tudom meddig bírom, már nagyon unom az egészet, lehet hogy más munka után nézek.
A második ezt mondja: Én palotát építek!A tanmesének vége. A lényeg hogy ha tudja az ember hogy mit csinál, sokkal nagyobb kedvvel, elhivatottsággal, lelkesedéssel, izgalommal telve végzi a munkáját.
Így van ez a programozással is. Kell hogy a programozó tisztában legyen a háttérben zajló dolgokkal, mert sokkal izgalmasabb lesz az egész programozás ettől! Akkor is ha interpretert használ, akkor is ha köztes bájtkódot és akkor is ha gépikódra fordított programot készít. -
bucsupeti
senior tag
válasz
superfinest #4290 üzenetére
Ahogy a többiek írták, rosszul gondolkodsz a dologról. Olyan mintha szeretnél egy sportautóval megtanulni száguldani, de előtte a biztonság kedvéért veszel egy markológépet amivel tök sok mindent meg lehet csinálni, és azon kezdesz tanulni vezetni, hiszen annak is négy kereke van.
Ha modern dolgokat akarsz akkor valamilyen objektum orientált nyelvet válassz, amihez van valamilyen jó framework. Ilyen nyelvek/környezetek a Java, C#, és a C++ is, de előtte keményen oop elméletet kell elsajátítani.
Ha rendszerprogramozás a cél akkor tökéletes a C.Ha egyszerüen csak meg akarod tanulni a programozás alapjait, vezérlési szerkezeteit, akkor jó lehet a Pascal.
-
bucsupeti
senior tag
válasz
Bobrooney #4147 üzenetére
Nem tudom de nekem simán elfogadták a saját megoldásomat. Vagy fgets-el vagy getc-vel csináltam és mindig a helyzetnek megfelelő inputot írtam. Soha nem használtam a Bauer féle getline-t. Igaz hogy ez 16 éve volt már, de akkor is ugyan azt a getline-t használta mint amit most. Neki rohadtul bejöhetett ez a módszer
-
bucsupeti
senior tag
Az órát átszámolni percekbe, hozzáadni a perc részt. Ezt mindkettőnél megcsinálni.
Az elsőből kivonjuk a másodikat és vesszük az abszolút értékét.
A kapott eredmény / 60 lesz az óra a kapott eredmény % 60 lesz a perc.Ennyi.
C-ben számolás+kiiratás (draft):
kulonbseg=abs((o1*60+p1)-(o2*60+p2))
printf("%d:%d",int(kulonbseg/60),kulonbseg%60Szerintem az ellenőrzött input és annak feldolgozás sokkal "bonyolultabb".
-
bucsupeti
senior tag
SZE vizsga.
Van egy tanítványom aki szintén tegnap volt vizsgázni. Neki sikerült az alapfeladatot megcsinálnia úgyhogy sikeres vizsgát tett.Tök véletlenül a vizsga előtt egy hétig éppen egy időátszámító feladatot adtam neki (éjféltől eltelt másodpercekkel kellett számolnia moduló képzéssel).
A lényeg hogy úgy csináltattam meg vele az időpontátszámítót hogy készíetett egy ctoi() függvényt amit hivogatott. Kiszámolta másodpercekben az órát a percet és a másodpercet, majd úgy modulózott tovább.Boldogan mesélte hogy sikerült a vizsga, én is örültem neki. Nem is kérdeztem hogy mi volt a vizsgafeladat, ma meg látom itt ezt a sze feladatlapot. Fel is hívtam hogy szégyellje magát, mert az alapfeladat gyakorlatilag készen volt már egy hete és sokkal tovább kellett volna jutnia.....
-
bucsupeti
senior tag
válasz
hunterrop8 #4089 üzenetére
irj egy függvényt ami bekér egy adott hosszuságú egész számot és visszaadja azt.
ezt hivogasd egy for ciklusba és tedd bele a visszaadott értéket a tömbbe.
a main lényege kb ez lenne:
for(i=0;i<10;i++)
t=egeszbeker(4);az egeszbeker() fv paraméterezésében én megadnám a max hosszat.
persze ellenörzések stb kell még hozzá.
-
bucsupeti
senior tag
válasz
hoffman_ #4043 üzenetére
100-tól csökkenve 100 db páratlan szám csak úgy van, ha negatív számokat is veszünk, vagy ha egy páratlan számot többször is értékül adunk. Van valami pontosítás a feladattal kapcsolatban ezen a téren?
Mert ha nincs akkor én úgy csinálnám hogy 99-től visszafelé indítok egy ciklust (for), úgy hogy kettesével lépked visszafelé. Tárolnám a számot az aktuális és az aktuális+1 indexű elemben.
Ezzel kész is a feltöltés csökkenő sorrendben.
Ezután egy újabb ciklusban feldolgoznám a tömböt. A ciklus végigmegy a tömbön és összeadogatom két változóban az elemeket. Egyikben a páros indexűeket, másikban a páratlan indexűeket. (Vedd észre, hogy mivel két egyforma elem követi egymást, ezért az összeg pontosan ugyan annyi lesz a végén mindkét változóban, mivel a tömb valahogy így néz ki: 99,99,97,97,95,95...1,1)
Ezután kiírom a páros indexűek összegét, majd a páratlan indexűek összegét elosztom 50-el és azt írom ki (ez lesz az átlag).Ne erőltesd bele egy ciklusba az egészet (persze úgy is meg lehet csinálni).
Számomra a kérdés a tömb feltöltésének pontos szabálya.
-
bucsupeti
senior tag
válasz
it_service #3274 üzenetére
tömbbe (listába) olvasod be a sorokat, majd beindexelve kiíratod.
-
bucsupeti
senior tag
válasz
cooldongo #3240 üzenetére
Figyuszmá!
Ne "bazz"-ozz itt légyszíves, hanem inkább köszönd meg a segítséget! Az meg hogy leírod a számtechórán kapott feladatodat és oldjuk má' meg, nem éppen jó módszer a kezdésre. Ha beírtad volna a kódot ameddig eljutottál (amit később kérésre megtettél) akkor sokkal könnyebben tudunk segíteni, javasolni.És hogy tanulj is. Kérdezed, hogy if-el nem lenne-e egyszerűbb az egybeesés vizsgálata.
Az itt leírt módszer egy tipikusan C programozók által használt eszköz. Én magam is inkább az if szerkezetet használnám, nem pedig ezt a kiértékelő kifejezést. Egyébként mindegyik jó megoldás. Az if talán olvashatóbb.Jó programozás!
-
bucsupeti
senior tag
válasz
cooldongo #3226 üzenetére
A feladat nem bonyolult, aki picit (tényleg picit) foglalkozik programozással, az ezt kb 5 perc alatt megoldja.
Ha megírod hol akadtál el akkor segíteni fogok a továbblépésben.
Egy kis konkrétumot azért írok. A két kör középpontja akkor esik egybe, ha a középpont koordinátái páronként egyenlőek. Csak annyit akarok ezzel mondani hoyg nem kell sehogy "kiszámolni" a kör középpontját. -
bucsupeti
senior tag
Picit értetlenül állok a kérdéseid előtt. Ha 3-4 napja tanulod, akkor lehet hogy inkább algoritmus szintjén kell meghatározni a hatványt és a pi értékét?
Standard C-ben a math.h tartalmazza ahogy olvashattad. Nemtudom hogy ez mond-e neked valamit (3-4 nap után nem tudom hogy az #include-ot tanultátok-e)
Algoritmus szintjén pedig triviális. (Összeszorzod az alapot annyiszor amennyi a kitevő. A pi pedig a kerület és a sugár hányadosa.)
Persze a változók értékhatárai problémát okozhatnak. Lehet hoyg épp az a célja az oktatónak hogy ezt bemutassa.
Ú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!
- Eladó ÚJ BONTATLAN Honor Magic6 Lite 8/256GB fekete / 12 hónap jótállással!
- Bomba ár! Lenovo ThinkPad X390: i5-G8 I 16GB I 256GB SSD I 13,3" FHD Touch I Cam I W11 I Gari!
- DELL Universal Dock D6000 dokkolók, RTX Legion Pro laptopok 4 év Lenovo garanciával, licencek
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB DDR5 RAM RX 9070 16GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! Intel Core i9 9900KF 8 mag 16 szál processzor garanciával hibátlan működéssel
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged