- Kormányok / autós szimulátorok topikja
- Fujifilm X
- Elképesztően drága az új Ryzen Threadripper PRO generáció
- Iszonyatos mennyiségű hulladékkal járhat a Windows 10 terméktámogatásának vége
- Soundbar, soundplate, hangprojektor
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Házimozi haladó szinten
- Milyen TV-t vegyek?
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- iPad topik
-
PROHARDVER!
Új hozzászólás Aktív témák
-
bdav
őstag
.NET az az ''MS Javája'' valóban hasonló koncepció, és igen gondolom a C#, VB.net kódot a .net interpreter által végrehajthatóra fordítja. Jövő félév után már többet tudok róla mondani
ja c/c++ ben mindent lehet. de mindent lehet assemblyvel is csak kicsit nehezebb. el kell dönteni hogy a hatékonyság / könnyebb programozás közül mit akarsz.
Delphi manapság nem túl népszerű, nagyon kevesen fejlesztenek benne
igen, a modern nyelvek jó része a C-ből ''származik'', érdemes megtanulni kicsit. Symbian az egy oprendszer, opengl meg sztem függvénykönyvtár (de ebben nem vagyok biztos).
64bites kód sztem a fordítón múlik igazán.
Kedvenc ide: Eclipse javához, visual studio c++-hoz és majd gondolom .nethez is -
sonar
addikt
Nem nagyon akartam új topicot nyitni, ezért inkább ide irom:
Kb 2 éve tanulok programozni teljesen autodidakta módon, különböző tutorokból
könyvekből... Annak idején a választás VisualBasic6 ra esett. Azt mondták nem
egy nehéz nyelv... A 2 év alatt elég sokmindent megtapasztaltam, megtanultam.
Olvasgattam a különböző programozó fórumokat és beszélgettem hozzá és hozzáértőnek
látszó emberekkel, hogy melyik programnyelvnek(fejlesztőkörnyezetnek) mégis mi
az előnye hátránya.
Eddigi tapasztalataim alapján a MS-VB6 egy nem rossz fejlesztőkörnyezet, ami
igazán hiányzik belőle NEKEM az a bitműveletek.
Csak hát itt vagyunk a 64bit küszöbén! És ez csak 32bites kódot generál,
ami mondjuk önmagában nem gond, csak akkor ha 64 bites alkalmazásból van meghívva.
(ugyanúgy mint ha 32 bites alkalmazásból hívunk 16bitest akkor az átkapcsolások
igen sokáig tartanak)
Gondolkodtam, hogy haladni kellene a korral és meg kellene tanulni valami másik
nyelvet (+fejlesztőkörnyezetet; nekem a környezet megismerése is eltart addig mint
a programnyelv megismerése)
Böngészgetem a netet és ugye van most ez a .NET láz. Olvastam róla jót rosszat.
De megmondva nem igazán értem az egészet. Ez a .NET framework elvileg olyan
mint a java virtual machine?. És .NET-en belül is van Basic, C# és még???
(ado, asp)
Ahogy olvastam és amiket leszürtem a C/C++ a legvagányabb nyelv.
Ebben elvileg mindent lehet!?
És akkor ott van még a Delphi. Abból láttam haverom Borlandos fejlesztőkörnyezetét
és megkérdeztem tőle, hogy mi ez a sok bisz basz? De igazából nem tudom
hogy mennyivel tud többett mint egy Basic (ha jól tudom akkor delphibe
lehet asm kódot beszurni, vb-be nem, csak vmi api-n keresztül cifrázva )
A C szintaktikáját elnézve nyerő lenne ha valamerre tovább akar lépni az ember
php, javascript, java, symbian, opengl - is mind nagyon hasonló, és majdnem minden
mikrovezérlőre is van C compiler.
A hosszú monológ után arra a kérdésre szeretnék többek között választ kapni, hogy
mivel lehet (most/majd) 64 bites kódot generálni?
Kinek melyik IDE jön be a legjobban?
Tapasztalatok vélemények az egyes progrmanyelvekkel kapcsolatban.
üdv sonar -
doc
nagyúr
meg még egy (eddig sima C-t használtam, na
)
hogy tudok (szintén Dev-Cpp, wxWidgets) a formom egy elemére hivatkozni?
pl. a form neve lapperFrm
van rajta egy Edit (a neve Text), ennek a tartalmát (a benne levő szöveget) szeretném megváltoztatni
így próbáltam:
lapperFrm->Text->SetValue(s);
de ezt mondja:
expected primary-expression before '->' token
és már az első -> -nél elhasal -
doc
nagyúr
sziasztok!
elég láma kérdésem van
a C++-ban ugye létezik String osztály. hogyan kell szépen és szabályosan másolni egy stringet egy másikba? ha azt mondom hogy s=s2 akkor az s-be bemásolódik az s2 értéke, nekem nem kell figyelnem pointerekre, lefoglalt memóriaméretre, stb, ugye?
[Szerkesztve] -
Pelmar Jasra
csendes tag
Hello én moddelezni szeretnék a Jedy academy nevü játékhoz skint késziteni csak az a problemam hogy nem találok olyan moddellezőt ami .gml kiterjesztésbe menti le a cuccot tudnátok segiteni hogy mi a progi neve?? THX
-
Mr-Pamacs
senior tag
Elég furi embőcke vagy. Az objektum orientál programozás az egyik legjobb dolog. Én már 11 éve programozok pár nyelvben irogattam már szép dolgokat, de nekem nagyon tetszik az objektumorientált programozás.Ha még Delphit sem használtál akkor ismerkedj meg vele! Nagyon jó dolgokat lehet benne alkotni és legalább elsajátítod a programozási elméletet.
-
Jester01
veterán
Ja, hogy devcpp volt a tettes, akkor nem szóltam
Mindesetre a system parancs használatától lehetőleg tartózkodni kell ha platformfüggetlen programot akar írni az ember. Ha meg nem platformfüggetlen, akkor meg tessék használni a megfelelő függvényeket/apikat és ne egy külső progit indítani (tipikus példa a pause és a cls).
Jelen esetre ez nyilván nem vonatkozik, ez csak az én áltános meglátásom. -
cucka
addikt
válasz
Jester01 #1885 üzenetére
(Ez a példa szerintem nem volt szerencsés a kollega úr részéről, bár tény, hogy nem egyszerű billentyű lenyomásra várni C++ban.)
ez a system(''pause'') sor a dev c++-ból származik, ami új (konzolos) projektnél odarakja a generált ''üres'' main függvénybe. (innen van a return EXIT_SUCCESS; sor is, szerintem a return 0 sokkal egyszerűbb, még ha nem is teljesen korrekt).
mondjuk egy system(''dir'') példa sokkal szebb lett volna. -
-
Jester01
veterán
1. using namespace
C++ban lehetőség van névterek használatára, hogy a névütközést el lehessen kerülni. (namespace akarmi { ... } )
Az alap könyvtár az ''std'' névteret használja. Using nélkül pl. ki kellene írni mindenhol, hogy std::cout. A using használatával az adott névtér elemeire közvetlenül lehet hivatkozni. Bizonyos (tipikusan régebbi) fordítók nem támogatják a névtereket vagy pedig az std névteret automatikusan úgy kezelik mintha lenne rá using.
2. a main paraméterei
A main függvény helyes prototítpusa az int main(int argc, char *argv[]), ahol argc a parancsori argumentumok száma és argv az argumentumok tömbje. A 0. indexű elem tipikusan a program neve. A függvény visszatérési értéke pedig egy int ami egy tetszőleges kód, tipikusan 0 a sikeres lefutás jelzésére.
A void main() forma véletlenül működik, mivel a C hívási konvenció ezt lehetővé teszi. Ilyenkor a parancssor nem érdekes és a visszatérési érték pedig valami véletlen szám lesz. Használata nem javasolt, visszatérési értéket mindig célszerű megadni, ha pedig nem akarod használni a parancssort, akkor egy int main(int, char**) sorral ez korrekten megtehető.
3. cstdlib
Igen, ebben a C stdlib függvényei érhetők el, többek között a system is. (Ez a példa szerintem nem volt szerencsés a kollega úr részéről, bár tény, hogy nem egyszerű billentyű lenyomásra várni C++ban.)
4. EXIT_SUCCESS
Ez egy előredefinált konstans a sikeres lefutás jelzésére (0). Lásd 2. pont.
MOD: hú de nagyon lassú voltam
[Szerkesztve] -
cucka
addikt
using namespace std;
azt jelenti, hogy a standard névteret használod. itt jól le van írva: [link] (egyszerű példák, utolsó paragrafus szól az std-ről)
int main(int argc, char *argv[])
a main paraméterei a program argumentumait jelentik, vagyis ezekből olvasható ki, hogy pl. milyen paraméterekkel indítottad el parancssorból a programodat. argc a paraméterek számát jelöli (arg. count) másik meg egy argc elemszámú tömb amiben maguk az argumentumok vannak (arg. value).
#include <cstdlib>
gondolom ez tartalmazza a system(''pause'') parancsot pl, ami a press any key-t okozza bezárás előtt?
igen. a system paranccsal külső parancsokat/programokat tudsz futtatni. a pause (beépített) parancs dos/win alatt, próbáld ki parancssorban. [link]
return EXIT_SUCCESS;
ez azt jelenti, hogy a main függvény EXIT_SUCCESS értéket ad vissza kilépéskor. ez az érték a 0. [link]
[Szerkesztve] -
Balux
tag
válasz
Jester01 #1880 üzenetére
na ugy tünik nem én voltam a lámi, leszedtem mindent (borland, decpp...) és letöltöttem a devcpp régebbi verzióját (rev. 4) és qvára működik minden!!!!
nem tudom mi lehetett a baj de amig egy forditóprogi mükszik addig boldog vagyok....
már csak pár dologra válaszoljatok légyszi, hogy tisztában legyek önmagammal és azzal amit csinálok...
ez a program tökéletesen lefut:
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
cout<< ''hello world\n'';
system(''PAUSE'');
return EXIT_SUCCESS;
}
de kihagyva részeket, átalakítva is is:
#include <cstdlib>
#include <iostream>
void main()
{
cout<< ''hello world\n'';
system(''PAUSE'');
}
akkor légyszi világosítsatok fel a következő dolgokban:
using namespace std;
mire jó?
int main(int argc, char *argv[])
a main 'hasában' lévő cucc mit jelent és miért lehet elhagyni?
#include <cstdlib>
gondolom ez tartalmazza a system(''pause'') parancsot pl, ami a press any key-t okozza bezárás előtt?
return EXIT_SUCCESS;
ez mit jelent?miért megy nélküle is?
ezeket az apróságokat légyszi korrigáljátok tudásomban, és akkor boldogan tanulhatom tovább a könyvemet...
előre is kössz -
Balux
tag
válasz
Jester01 #1880 üzenetére
mármint ez nem helyes?
#include <iostream>
void main(void)
{
cout <<''Hello World!'';
}
hát ez a gondom nekem is csak ez van a könyvben...
amugy most már semmilyen progit sem tudok lefordítani, tutorialokat olvasgatok neten
a borland is azt mondja linker error minden programra...
amúgy ha ennyi a megoldás
A könyvet nem kell kidobni, csak a using-ot kell mindig beírni, illetve a main függvényből int-et kell visszaadni.
akkor annak örülök, csak ne legyen több ilyen rész a könyvben ahol dolgokat másképp kell csinálni mert az ember magától nehezen jön rá
mindenesetre köszi a segítséget
de még ugyis leszek hisz még mindig nem szuperál a stuff... -
Jester01
veterán
Itt valami telepítési probléma lett ...
Egyébként mint már említettem Cucka progija helyes, a te verziód az sajnos nem:
t.cpp:3: error: '::main' must return 'int'
t.cpp: In function 'int main()':
t.cpp:5: error: 'cout' was not declared in this scope
A könyvet nem kell kidobni, csak a using-ot kell mindig beírni, illetve a main függvényből int-et kell visszaadni. -
Balux
tag
válasz
Jester01 #1876 üzenetére
igen télleg kopipészt volt
de sajna rendes idézőjelekkel sem megy...
a legelszomorítóbb az hogy akkor a chris jamsa könyvből tuti nem fok
megtanulni programozni mert egyszerűen nem úgy kell mint ami le van írva!!!
amugy kiskoromban egyszer a Bálu nevet a Scorched Earth-be (überállesz)
szarul ütöttem be él balux lett belőle, azóta ezen a néven kockulok, de még
sosem jutott eszembe a linux-fan csengése... -
Balux
tag
válasz
Lortech #1877 üzenetére
egy tutorial alpján sem sikerült lefordíttattnom a progit ([link])
ugyhogy nyomtam egy reinstallt, de sajna semmi sem változott
a Lortech féle progit sem sikerült lefordítani a köv. üzenet:
A megadott nevet (C:\DOCUME~1\n) a rendszer nem ismeri fel
bels‹ vagy kls‹ parancsk‚nt, futtathat˘ programk‚nt vagy k”tegf jlk‚nt.
A rendszer nem tal lja a megadott el‚r‚si utat.
make.exe: *** [main.obj] Error 1
Feladat befejezve
egyre jobban el vagyok keseredve
van egy kib. könyvem de abból nem lehet megtanulni a c++ alapjait
még linux alatt sem működne olyan formában mint amit legutóbb írtam
akkor kidobhatom a kukába a könyvet?
ráadásul a Lortech féle program felét nem is értem...
mondjatok nekem légyszi valami okosat, valahogy mindenki elkezdi!? -
Lortech
addikt
-
Jester01
veterán
Csak a szokásos probléma: a fórummotor cseréli az idézőjelet két aposztrófra.
Vagyis Cucka példája jó, csak idézőjel kell. (gondolom copy&paste volt).
Ez linux alatt is ugyanez lenne (főleg mivel a devcpp gcc alapú ha jól tudom.)
MOD: Ha nem vagy linuxos, akkor miért Tux az avatarod? Mert aranyos?Engem nem zavar, nyugodtan hagyhatod, csak mást sugall...
[Szerkesztve] -
Balux
tag
nem eszi meg!
arról nem is beszélve, hogy egy szót sem értek az újjonan beírt részekből!
ezek a bajai:
C:\Documents and Settings\n&b\Asztal\hello.cpp:5:8: empty character constant
C:\Documents and Settings\n&b\Asztal\hello.cpp: In function `int main(int, char**)':
C:\Documents and Settings\n&b\Asztal\hello.cpp:5: error: expected `;' before ''Hello''
C:\Documents and Settings\n&b\Asztal\hello.cpp:5:22: empty character constant
cout és std::cout-tal is!
Könyörgöm valaki mentsen meg!
honnan lehet megtanulni a win alatti c++ programozást!???
itt van elöttem egy könyv (témavezetőm adta, aszonta olvassam végig...)
: Chris Jamsa: c++
és még egy hello world-öt sem lehet belőle megírni mert a win-alatti
fordítóprogramok nem értik meg
Szerintetek mit csináljak?
Van olyan fordítóprogram ami szopakodás nélkül lefordít egy H.W-öt ilyen formában:
#include <iostream>
void main(void)
{
cout <<''Hello World!'';
}
ugyanis ez van a könyvben amiből tanulok, az lenne a legegyszerűbb
ha nem kéne átirogatni semmit, mert akkor ahogy haladok tovább a
tanulmányaimban sorra fognak jönni az újabb nem működő parancsok stb.
tegyek fel egy linuxot?
ott a fenti zokszó nélkül lefutna??
(ettől csak azért óckodom mert nincs perpill linux telepítőm, életemben nem raktam fel linuxot és használni is csak ritkán használtam....) -
cucka
addikt
devcpp így kéne tudja futtatni, legalábbis nálam.
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
cout<<''Hello World!'';
}
iostream.h elvileg deprecated, ezért nem ajánlja használni
cout-ot pedig akkor találja meg, ha megmondod neki, hogy a standard namespace-ben van, vagy std::cout formában használod. (hű ez a mondat elég pongyolán volt megfogalmazva)
[Szerkesztve] -
Balux
tag
segítsetek légyszi c++ -t fordítani!
mega kezdő vagyok, és win-alatt elkezdtem (elkezdeném) tanulni a c++ -t
de egy hello world-öt se tuttam még megcsinálni
linuxban fordítottam már le progit, halál egyszerű volt, zsirul ment
de nem akarok itthonra linuxot felrakni...
na eddig egy lerakat fordítóprogramot kipróbáltam, egyikkel sem jutottam düllőre
de leirom a gondjaim azokkal kapcsolatban amiket fennhagytam a gépen:
devcpp:
#include <iostream.h>
void main(void)
{
cout << ''Hello World!'';
}
ezt képtelen volt lefordítani, a következő problémái voltak
-void main() must be int----->ezt áthidaltam azzal hogy
int main() majd a végén return 0
ez eddig rendben, de nem értem mért nem volt jó neki void main-nel...
-másik gondja az volt hogy nem akarta betölteni az iostreamet
azt irta ki hogy a .h-t el kell hagyni a végéről, igy sem ment aztán
egy külföldi forumon ugy értettem hogy nagybetűvel kell irni az include
fileokat, megtettem de ez is csak akkor működött ha .H-t kitettem a végére...
bár kinok közt de orvosoltam a problémákat, amik elég szőrszálhasogató
dolgok voltak, és nem is voltak egyértelműek, de mindegy, megoldottam
az így keletkezett programot:
#include <IOSTREAM.H>
int main(void)
{
cout << ''Hello World!\n'';
return 0;
}
már lefordította, éjjen, de az alkalmazást futtatva
fekete 'dosos' képernyő jött csak fel, semmit helló world kiirás
borland
az előző szőrőzésekkel, és anélkül is sikerült lefordítani vele
de ugyanúgy fekete képernyő jelenik meg az exe-filet futtatva...
cygwin, digital mars
ezeket egyszerűen képtelen vagyok használni, de ez nem is lenne ba csak
pont ezek az egyszerűbb programok lennének jók a kezdő embereknek...
visual c++
hát ezt fél óra szenvedés után olyan gyorsan letöröltem ahoogy tudtam
mindent egybevetve szeretnék továbblépni programozás ügyben de nem
tudok addig amig egy értelmesen lefutó hello world-öt sem vagyok képes készíteni
légyszi segítsetek
köszi előre is -
Norbo03
őstag
Hali!
Nem tudnátok olyan oldalt mondani ahol pascal-hoz vannak gyakorló feladatok külön minden részhez? Előre is köszike mindenkinek! -
orbano
félisten
válasz
Forest_roby #1858 üzenetére
használj double-t, egész jó
-
orbano
félisten
mondjuk prímszámok keresése?
valahol a tízezer számjegyes nagyságrendben mozognak az eddigi legnagyobbak azt hiszem. ráadásul ha ezzel még kódolni is akarsz...
de nagyon sok tudományos számításhoz is jól jönnek az extra nagy/pontos számok. ide pedig a string elég marharépe dolog, mert pazarolja a helyet és lassú vele számolni -
bdav
őstag
javaban van BigInteger osztály, onnan lehet lopni az ötleteket
amugy ezzel az osztállyal már relative könnyen lehetne rsa-t implementálni (ha gyors a modpow amit csináltak benne), ha lesz időm meg kedvem meg is csinálom
(persze h. használható cucc legyen belőle az lényegesen több meló)
ugyanakkor c++ ban sokkal kényelmesebb, ha egyszer megvan a bigintegered, az operator overload miatt (ez hiányzik nekem igazán a javaból)
[Szerkesztve] -
cucka
addikt
uh, ezt a long long típust csúnyán benéztem..
-
Forest_roby
őstag
Bocs a sok egymás utáni hozászólások miatt, de már egyiknél se tudtam módosítani a régit!
Javítanom kell!
#1860 #1863 #1864 --->
mindenhol a bit helyet bájt-ot kellett volna írnom!
8 bájt-ot vagy 64 bit-et
tiszta égés! -
Forest_roby
őstag
szerintem van olyan, hogy 'long long int'!
#include <stdio.h>
#include <limits.h>
#include <stdlib.h>
int main(){
printf(''long long int %d bit\n'', sizeof(long long int) );
}
fordítás:
forest@forest-gep:~/prohardver$ ./a.out
long long int 8 bit
forest@forest-gep:~/prohardver$
próbáld ki! -
Jester01
veterán
válasz
Forest_roby #1858 üzenetére
Veszel egy 64 bites procit
MOD: hopp, tévedésben vagyok. A (nem létezõ) long long int mûködik 32 bites gépen is. Neked csak annyi baj volt, hogy a kiírásban nem %lld formátumot használtál.
[Szerkesztve] -
cucka
addikt
válasz
Forest_roby #1860 üzenetére
egy: nincs olyan, hogy long long int.
kettő: semmilyen különleges tudás nem szükséges hozzá. van 2 számod string-ben, számjegyenként kell velük műveleteket végezni (összeadás, szorzás, amire szükség van). ezeket neked kell kézzel megírni. az egész úgy működik, mint ahogyan elemi iskolában megtanítottak papíron összeadni/szorozni.
c++ - ban elegánsabb dolog nagyszámok osztályt írni, és átírni a használt operátorokat (+,*,<<, satöbbi).
egyébként meg milyen feladat az, amelyiknek nem elég a long?
[Szerkesztve] -
Forest_roby
őstag
Először is köszi a segítséget!
-------------------------------------------
további kérdések:
A long long int ( 8 bit ) már jó lenne, de nem tudom használni. Miért?
ill.
Ha nem lehet, hát jó! Hol tudok erről: ''(string-ben tárolod a számokat, megírod rá a műveleteket vagy operátorokat (c++), satöbbi)'' többet olvasni, tájékozódni? -
cucka
addikt
válasz
Forest_roby #1858 üzenetére
long-ba ekkora érték fér bele. ugye (nálad) 4 byte-on ábrázolja, az ~4 milliárdig jó, de mivel előjeles, ezért az előjel-bitnek is kell hely, ezért ~2milliárd a vége. unsigned long-al tehát ~4 milliárdig tudsz értéket tárolni.
ha még nagyobb számot szeretnél, akkor kénytelen leszel kézzel megírni (string-ben tárolod a számokat, megírod rá a műveleteket vagy operátorokat (c++), satöbbi). -
Forest_roby
őstag
megint én!
nem tudok 2147483647 -nél nagyobb változót létrehozni.
forrás:
#include <stdio.h>
#include <limits.h>
/*#include <math.h>*/
int main(){
long int a;
printf(''long int max.: %11d\n'', LONG_MAX);
printf(''long long int max.: %11d\n'', LLONG_MAX);
a = 2147483647;
}
fordítás:
forest@forest-gep:~/prohardver$ gcc kerdes.c -std=c99
forest@forest-gep:~/prohardver$ ./a.out
long int max.: 2147483647
long long int max.: -1
forest@forest-gep:~/prohardver$
ha az 'a' értékét növelem átugrik negatívba, vagy hibás értékeket ad ki vagy le se lehet fordítani.
Persze ha az 'a'-t long long int -re változtatom az se segít.
Hogy tudok nagyobb változót létrehozni/használni/lefordítani ?
Előre is köszi minden segítséget! -
Forest_roby
őstag
válasz
Forest_roby #1856 üzenetére
okay
hülye vagyok! : (
fordítás: gcc -lm prog.c -
Forest_roby
őstag
Hi!
A fentiekben írt prímes progit most próbáltam lefordítani Linux alatt és ezt a hibaüzenetet írta ki:
forest@forest-gep:~/Desktop/programok_modositott/prim$ gcc prim.c
/tmp/ccobEY1w.o: In function `main':
prim.c.text+0x63): undefined reference to `sqrt'
collect2: ld returned 1 exit status
Nem tudjátok mi lehet a baj? A math.h include -olva van. -
L_ajos
őstag
Sziasztok!
Olyan kérdésem lenne (leszögezem nem vagyok programozó szal ne fikázzatok) hogy SMF (simple machines forum) alá lehetne-e rakni egy OFF gombot. Ugy mint pölö itt a PH!-n is van. Valami ilyat tudtam meg hogy azt kell kideríteni hogy az OFF támogatja e a CCS-t. De sajna hülye vagyok hozzá. A lényeg hogy egy elválasztó színt takarjon ha valaki posta offot akar írni (szürke) és esetleg egy ''dobozban'' jelenjen meg (mint a quote).
Ha valaki érti a halandzsámat és tudna segíteni az a adataimnál megtalálja az MSN címem, talán az az egyszerübb
Köszönöm előreis! -
Asmarat
csendes tag
válasz
Forest_roby #1830 üzenetére
Köszönöm a segítséget!
Természetesen cuckának is..
Megpróbálok megbirkózni vele, nagyon érdekel a téma,
remélem egy pár hónap múlva érdemben is hozzá tudok szólni a
a totyikhoz...
[Szerkesztve] -
-
shev7
veterán
válasz
Forest_roby #1844 üzenetére
ez nem 23 bites szam
A legnagyobb szam a windows szamologepe kezel az 64 bites. Erteke: 18446744073709551615 -
cucka
addikt
válasz
Forest_roby #1846 üzenetére
nem véletlenül mondtam, hogy nézz utána a kettes számrendszernek, számábrázolásnak, satöbbi
10es számrendszerben 23 számjegyen ábrázolod.
2es számrendszerben x ''számjegyen'', amit más néven bitnek hívunk. tehát a bit az egy bináris szám számjegye.
[Szerkesztve] -
cucka
addikt
válasz
Forest_roby #1839 üzenetére
shev7 - #1835-ben valóban igazad van
Forest_roby - igen, pont a te általad leírt módszer az, ami túl sok időt vesz igénybe. utánanéztem, arra, hogy megállapítsd, egy n számjegyű szám prím-e, van log(n)^12 körüli műveletigényű algoritmus, ez mondjuk majdnem polinomiálisnak tekinthető. a gond az, hogy prímtényezőkre való bontásnál az összes lehetséges osztót végig kell nézni, ami n számjegy esetén 10^n nagyságrend, tehát exponenciális az algoritmusod.
ja, és az általad leírt 62484751362947029755811 sokkal több, mint 23 bit. nem keverni a bitet a számjeggyel. tessék utánanézni a kettes számrendszernek
[Szerkesztve] -
-
shev7
veterán
válasz
Forest_roby #1841 üzenetére
Nem nekem van igazam, hanem azoknak, akik az RSA-t kitalaltak
-
VladimirR
nagyúr
elege zavaro, mikor a [i] tombindexek a ph motor miatt eltunnek, ugyhogy csinaltam egy aprosagot, ami ezt kikuszoboli
lustasagom miatt egyelore csak ie ala irtam meg es csak a [i] tag-eket csereli, de ha van ra igeny megcsinalom bugroka es opera ala esetleg mas kodokkal is
telepitesehez csak le kell tolteni, kicsomagolni, es elinditani az install.bat-ot
hasznalatahoz a mar megirt hozzaszolasablakon jobbklikk es ph kodatalakito menupont
Bovebben: [link] -
shev7
veterán
válasz
Forest_roby #1839 üzenetére
Meg ahogy azt moricka elkepzeli
Utananeztem, jol emlekeztem. Valasztasz ket nagy prim szamot. A ket prim szorzata lesz a nyilvanos kulcs egyik fele. Ha ezt felbontani primtenyezokre olyan egyszeru lenne, akkor torheto lenne az RSA. Csakhogy: ''No polynomial-time method for factoring large integers on a classical computer has yet been found'' Ha a programodat nekiereszted egy altalam valasztott ket ~100 jegyu prim szorzatanak, es megmondod a primtenyezosfelbontasat, akkor mar jo uton haladsz
Egy erdekes adat a wikipediarol: ''As of 2005, the largest number factored by general-purpose methods was 663 bits long, using state-of-the-art distributed methods. RSA keys are typically 1024–2048 bits long.''
[Szerkesztve] -
Forest_roby
őstag
Lehet, hogy én is hülyeséget írok ide, de innen a prímtényezős felbontás már csak 1 lépés.
1245234634567453451 ---> megnézed, hogy prím -e, ha nem megkeresed az első osztóját, elosztod és vissza az elejére....
megnézed, hogy prím -e, ha nem megkeresed az második osz.........
....
....
és a végére megvan a prímtényezős felbontás. ( meg is csinálom )
\bár ezt csak a gyökös módszerrel lehet csinálni, a szita nem erre jó\
Sztem az RSA nak az a titka, hogy gigantikusan nagy prímeket használnak ( és vagy azok szorzatát ). Persze ezt úgy kell elképzelni, hogy a számjegyek száma milliós nagyságrendű. A long long int elbújhat mellette. : ) -
Forest_roby
őstag
Bár már nekem is megvan, azért köszi! Tényleg jó ötlet volt.
ui.: a szitában feleslegesen sokszor nullázol ki számokat ( már ha jól értem a progidat ). Elég a tomb feléig keresni a primeket és a többszörökűket kinullázni mert akkor már biztos, hogy a megmaradt számok a tombben primek. -
Forest_roby
őstag
Látom lassú volta.
Én is megcsináltam, ma fél 1 -kor fejeztem be.
forrás:
#include <stdio.h>
/*#include <stdlib.h>*/
/*#include <math.h>*/
main(){
int n;
int k;
int lepteto;
int tomb[ 100000 ];
for(n=0;n<(sizeof(tomb)/sizeof(int));n++){
tomb[ n ] = n + 2;
}/* Tomb feltoltese! */
for(n=0;n<((sizeof(tomb)/sizeof(int))/2);n++){
lepteto = tomb[ n ];
k=n;
for(k; tomb[ n ] != 0 & (k+lepteto)<=(sizeof(tomb)/sizeof(int)); k=k+lepteto){
tomb[ k+lepteto ] = 0;
}
}/* kinullazas! Elég a tomb feleig. */
for(n=0;n<(sizeof(tomb)/sizeof(int));n++){
if( tomb[ n ] != 0 ){
printf(''%d\n'',tomb[ n ]);
}
}/* kiiratas! */
getchar();
} -
shev7
veterán
nem. Arra, hogy adott szam prim-e. Eleg gyorsan nagy valoszinuseggel (99%) valaszt tudunk mondani. Az RSAnak szerintem az az alapja, hogy ha van egy szamod, ami ''nagy'' primszamok szorzata, akkor a szorzotenyezok eloallitasa nehez feladat.
(egyebkent most lehet, hogy total hulyeseget mondtam, de majd utananezek, vagy megcafolja valaki)
-
cucka
addikt
jó ez, ha hozzáképzeljük azokat az [ i ] indexeket, amelyeket a fórum engine átalakított
egyébként az előző megoldásnak és ennek is n^2 a műveletigénye, de ez gyorsabbnak tűnik, tekintve hogy a gyökvonás elég lassú művelet.
másrészt emlékeim szerint arra a problémára, hogy adott szám prím-e, nem igazán van villámgyors megoldás. általában a kódolások ezért törhetők annyira nehezen (rsa legalábbis)
[Szerkesztve] -
Coyot
őstag
válasz
Forest_roby #1820 üzenetére
Naszóval, az Eratoszthenész szita. lényege h egy K korlátig előállítja az összes prímszámot, mégpedig ugy h kilövi az összes prímszám többszöröseit, előről haladva K-ig.
Nem garantálom, h műxik majd, már nem kell tudnom C-be progzani, javaslom értsd meg inkább és progizd le, a működése nagyon egyszerű.
for(i=2;i<=k;i++)
{
a=1;
}
p=2;
/*szita*/
while(p<=k)
{
if(a[p])
{
i=2*p;
while(i<=k)
{
a=0;
i=i+p;
}
p=p+1;
}
/*kiirás*/
for(i=2;i<=k;i++){
if(a) printf(''%d'',i);
}
mod.: kicsit rondábban rakta be mint ahogy vártam, remélem azért érthető.
[Szerkesztve] -
cucka
addikt
válasz
Forest_roby #1826 üzenetére
találtam win alá is valami hasonlót, mint a linuxos time. úgy hívják, hogy timeit.exe és a Windows Server 2003 Resource Kit Tools nevű csoda része. sok sikert hozzá, nekem nem sikerült használnom, bár nem is próbálkoztam vele túl sokat. [link]
[Szerkesztve] -
Asmarat
csendes tag
Sziasztok!
Volna-e valami ötletetek, hogy hol tudnék hozzájutni az 1978-ban megjelent Kernigham és Ritchie által írt ''The C Programming language'' c. könyvhöz. Vagy tudnátok-e ajánlani mást a C nyelvvel kapcsolatban? -
válasz
Forest_roby #1820 üzenetére
Igaz, erről el is felejtkeztem.
-
cucka
addikt
válasz
Forest_roby #1826 üzenetére
linux alatt time paranccsal szoktam, windows alatt elvileg tudom, gyakorlatilag nem.
általában egy algoritmusnál nem a futási időt nézik, hanem a műveletigényt, ez független a megvalósítástól, azt ''méri'', hogy n számosságú bemeneti adathalmazra hány iterációt végez az algoritmus. -
cucka
addikt
válasz
Forest_roby #1823 üzenetére
ide tényleg gyorsabb lenne az erasztotenész szitája nevű módszer. a probléma az, hogy keresed az x-nél kisebb prímeket. felírod 2-től x-ig a számokat. ezután megkeresed az első olyan számot, ami nincs áthúzva, és még nem foglalkoztál vele. (ez első körben a kettes lesz). áthúzod minden második számot a 2-es után (vagyis a 4-est, 6-ost, stb.). ha vége, kezded az elejéről. a következő szám a 3-as, áthúzod minden harmadik számot(6,9,stb). a következő szám az 5-ös (a 4-es már át van húzva, így azzal nem foglalkozunk), és így tovább.
viszonylag egyszerű leprogramozni, szóval hajrá. a végén össze lehet hasonlítani a futási időket, kíváncsi vagyok. -
shev7
veterán
válasz
Forest_roby #1823 üzenetére
pontosan erre gondoltam
-
Forest_roby
őstag
Teljes mértékben igazad van!
Így sokkal gyorsabb. ( csomo cikluslefutást megsporol )
Azt hiszem erre gondoltál:
#include <stdio.h>
/*#include <stdlib.h>*/
#include <math.h>
main(){
int a,b;
a = 2;
b = 2;
for(a=2; a <= 1000000; a++){
float x = a;
float xgyok = sqrt(x);
for(b=2; a>=b; b++){
if( (a%b) > 0 ){
if( b >= xgyok & b < (xgyok+1) ){
printf(''%d\n'', a);
break;
}
}else break;
}
}
getchar();
} -
shev7
veterán
válasz
Forest_roby #1821 üzenetére
if( (a%b) > 0 ){
if( b >= sqrt(x) & b < (sqrt(x)+1) ) printf(''%d\n'', a);
}else break;
en ezt itt nem teljesen ertem. Megnezed, hogy a maradek nagyobb-e mint nulla. Ha nem akkor break, ez vilagos. De ha nem nulla, akkor hogy gyoknel nagyobb-e. Ez is ok. De itt nem kene kilepni a kiiratas utan? Es akkor a for-ciklusban mindegy, hogy meddig szamolsz b-vel... -
Forest_roby
őstag
válasz
Forest_roby #1820 üzenetére
''.... egy szám legnagyobb 'prím' osztója nem lehet nagyobb mint....''
javítás:
''.... egy szám legelső 'prím' osztója nem lehet nagyobb mint....'' -
Forest_roby
őstag
Érdekel!
Xpod:
egy számot a gyökéig kell vizsgálni, egy szám legnagyobb 'prím' osztója nem lehet nagyobb mint a szám gyöke, ha a gyökéig nem találsz osztót, akkor prím!
pl: 35. gyöke 5.91. Bár 5,91-nél is van nagyobb prím osztója, 7, de már előtte el tudtuk osztani 5-el. ---> köv.: 35 nem prím
pl2: 37. gyöke: 6,08. 6,08-nál kisebb prímek: 2,3,5 --> egyikkel se osztható, tehát prím!
( azért fontos, hogy az osztó prím legyen, mert ha nem prím, akkor felbontható prímekre és találunk kisebb osztót is! )
[Szerkesztve] -
Coyot
őstag
válasz
Forest_roby #1810 üzenetére
Esetleg próbáld meg az Eratosztenész szitáját, az elég gyors módszer, ha érdekel bepötyögöm neked.
-
Nem elég, mert attól, hogy nem lehet gyököt vonni egy számból attól az még nem prím.
pl.: 24 nem prím, de nincs is gyöke az egész számok halmazán.
Úgy értettem amit írtam, hogy, a felnti példát alapul véve, 24/3=8 tehát elég 8-ig menni a for ciklusnak, addigra minden szóbajöhető osztó kiderül, a többi csak ezeknek a többszörösei.
[Szerkesztve] -
válasz
Forest_roby #1813 üzenetére
Ja még egy rövidítési lehetőség, csak a prímszám feléig ossz, 10ezres szám esetén elég 5-6ezerrel osztani, fölötte nincs értelme.
-
Forest_roby
őstag
válasz
Forest_roby #1812 üzenetére
ok, észrevettem egy nagy hibát!
a belső ciklusban számolja ki az x gyökét, feleslegesen sokszor, mikor elég lenne egyszer is.
ez lényegesen lassít a dolgon.
ui.: hülye vagyok -
válasz
Forest_roby #1810 üzenetére
Úgy tudom, gyököt lasabban tud vonni, mint összehasonlítani.
-
Forest_roby
őstag
hi!
Van egy nem tul kifinomult, de működő progim primek kiszámolására. Gondoltam gyorsítok rajta egy kicsit, de ellenkező hatást értem el. Minnél nagyobb a prim annál több ciklust spórol meg az uj progi, de mégis egyre lasabb lesz. Mi ennek az oka?
első változat:
#include <stdio.h>
main(){
int a,b;
a = 2;
b = 2;
for(a=2; a <= 100000; a++){
for(b=2; a>=b;b++){
if ( (a%b) > 0) {
if (b==(a/2)) printf(''%d\n'',a);
}
else break;
}
}
getchar();
}
második változat:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main(){
int a,b;
a = 2;
b = 2;
for(a=2; a <= 1000; a++){
float x = a;
for(b=2; a>=b; b++){
if( (a%b) > 0 ){
if( b >= sqrt(x) & b < (sqrt(x)+1) ) printf(''%d\n'', a);
}else break;
}
}
getchar();
}
ui.: biztos sok helyen máshogy is meglehetett volna írni a progit és még sokat is fogok rajta változtatni, de akkor se értem mért lett olyan lassú! -
cucka
addikt
-
Drizzt
nagyúr
-
Drizzt
nagyúr
Sziasztok, elég rég nem írtam ide, de most szeretnék nyáron tanulni, programozásban szeretném magamat továbbképezni. Na lássuk miből élek eddig: Kezdtem Pascallal magamtól, meg egy picit C-t is, aztán BME-n C++, C, Java, Prolog, SML volt eddig. Igazából Windows alatti dolgok érdekelnének a közeljövőben főleg. Van egy elég vaskos könyv C# alatti adatbáziskezelés, vagy valami hasonló címmel ''mesteri szinten''. Namost: ez a könyv milyen? Ha C#-ot még soha nem tanultam, akadhat vele valami gondom, vagy az alapokról épít?
Esetleg logikai és funkcionális programozással milyen irányba lehetne keresgélni, hogyha magasabb szinten érdekelne, vagy modern felhasználhatósága(ebből voltam eddig még csak 4-es életemben a Bme-n, minden más 2,3)?
Vagy akármi ötlet? Mondjuk lehet egyszerűbb lenne azokat a dolgokat tanulnom, amiből megbuktam... -
cucka
addikt
válasz
Forest_roby #1800 üzenetére
elvileg igen, eltérő karakter kódolások miatt lehetnek problémák. oprendszer/fejlesztőkörnyezet/fordító függő a dolog. sokat nem foglalkoztam a témával, parancssoros programnál úgyis mindegy, gui-s alkalmazásnál meg szoktak működni az ékezetes betűk.
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
- Gigabyte B450M S2H + Ryzen 5 1400 kisebb-nagyobb hibával
- Nokia 105 4G (2023) charcoal, Nokia 110 4G (2023) midnight blue
- ASRock B550 PG Velocita + Ryzen 5 3600 + 32GB (4x8GB) DDR4 3600Mhz CL18
- Philips 58PUS8505 Smart LED Televízió,146 cm, 4K Ultra HD ,Android, Ambilight, HDR10+ KIJELZŐHIBÁSAN
- Canon EOS 250D kiegészítőkkel, táskával (CSAK 200 expoval !!! )
- ÁRGARANCIA! Épített KomPhone i9 14900KF 64GB RAM RTX 5090 32GB GAMER PC termékbeszámítással
- Apple iPhone 13 128GB, Kártyafüggetlen, 1 Év Garanciával
- BESZÁMÍTÁS! Gigabyte A620M R5 7500F 32GB DDR5 512GB SSD RX 6700 XT 12GB Rampage SHIVA Chieftec 700W
- Apple iPhone 7 32GB, Kártyafüggetlen, 1 Év Garanciával
- Bowers/Wilkins PX8 fejhallgatók (dupla Bluetooth eszköz csatlakoztatása!) (ELKELT)
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest