- Samsung Galaxy S23 Ultra - non plus ultra
- Vivo X200 Pro - a kétszázát!
- Xiaomi 14T Pro - teljes a család?
- Okosóra és okoskiegészítő topik
- Motorola Edge 30 Neo - wake up, Jr...
- Hivatalos a OnePlus 13 startdátuma
- Samsung Galaxy Fit 3 - keveset, de jól
- Huawei Mate X6 - keleti oldal, nyugati oldal
- Samsung Galaxy A56 - megbízható középszerűség
- Milyen okostelefont vegyek?
Új hozzászólás Aktív témák
-
Tomi_78
aktív tag
válasz
dabadab #4446 üzenetére
Igen, 3.0.x.-essel már hiba nélkül működik; köszi a segítséget!
Azt hittem, a verzió kiválasztása a varázslóban csak amolyan tájékoztató jellegű, és ami fontos az az a mappa, amit én megadok, amiben a wxWidgets van. De úgy látszik, nem így van. Meg az is bekavart, hogy a legújabb CodeBlocks a legújabb wxWidgetst még nem ismeri. -
Tomi_78
aktív tag
válasz
dabadab #4444 üzenetére
Az a baj, hogy indításkor csak a wx3.1.x-ig kínálja fel a változatot. Ennek ellenére megkérdezi mindig az elérési mappáját, annak pedig jól megadom a 3.2.4-est, és erre már a képen látható hibát dobja fel, mikor beállítom neki a Configuration options-ban a dolgokat indításkor:
-
pocokxx
Közösségépítő
válasz
dabadab #4441 üzenetére
Csak egy kódrészletet adtam; a deklarásokat most lespóroltam az elejéről... Azért adtam most ilyen nevet, hogy jobban átlátható legyen, hogy mit szeretnék kapni eredményképpen.
A linkelt feladatban mondjuk kérdés, hogy van-e negatív szám az adott halmazban, és ha van, akkor hányadik a sorban?
A "királyfi" 38, de most jutott el oda, hogy talán érdemes lenne foglalkozni kicsit mélyebben ezekkel a felszínkapargatás helyett... -
pocokxx
Közösségépítő
válasz
dabadab #4439 üzenetére
Igen, valóban egyetemi jegyzet alapján dolgozom, és próbálom ezt megérteni. Igazából csak ebben a félévben kerül(t) elő, gondolom ezért foglalkozunk csak így vele.
De akkor jöjjön még egy ilyen fapados kérdés:A kiválasztás (eldöntés + keresés) típusalgoritmusnál használhatok for ciklust simán bool nélkül?
Mondjuk, ha el kell döntenem, hogy van-e a bevitt adatok között negatív szám, akkor ez az eljárás miért hoz fals eredményt?for (i=1; i <=n && bevittadatok[i]>=0; i++);
{ if (bevittadatok[i] < 0)
{ elsonegativindexe = i; }
}
cout << elsonegativindexe; -
pocokxx
Közösségépítő
válasz
dabadab #4436 üzenetére
Igen, tényleg nagyon hiányoznak az alapok, de tényleg szeretném megérteni...
Ilyesmi sorokról beszélek:struct NEV {
string keresztnev;
string csaladnév;
}
...
const int MAXN=100
string NEV NEVEK [MAXN+1]Beolvasásnál meg
cout << "Mennyi nev lesz?" ;
cin >> n;
for (i=1; i<=n; i++) {
cout << i << ". keresztnev: ";
cin Nevek[i].keresztnev;
cout << i << ". csaladnev:";
cin Nevek[i].csaladnev";}Ez így jó, vagy nagyon zagyva?
-
CPT.Pirk
Jómunkásember
válasz
dabadab #4423 üzenetére
Hű, szerintem .-al írtam, de ez most jó kérdés.
Egyébként a google-ös találatok miszerint static_cast<int16_t> -al kellene castolni float-ból int-be, az stimmel? Ezt a floor() dolgot megpróbálom holnap, csak közben lebetegedtem kicsit, a cucc meg bent van így távgyógyítás lesz...
-
MiniXD55
tag
válasz
dabadab #4414 üzenetére
Beszéltem a tanárommal, aki tanítja nekem ezt az egészet, jelenleg úgy fogalmazott hogy ilyen rövid időn belül, amely rendelkezésünkre áll, a vizsgáig nem gondolja, hogy szükséges.
Ez a kód amit beküldtem, codeblocks-ban teljesen szuperül lefut, a vs amin futtatnám egy teljesen szűz vs. -
daninet
veterán
válasz
dabadab #4415 üzenetére
Elvileg C++, igen (70%-ban, 30-ban C). De javíts ki ha nem, átrakom másik topikba. Marlin firmware-t akarom módosítani. Volt már itt téma, akkor te segítettél, de az igényeim alacsonyabbak voltak
, csak újra akartam indítani a sorozatot, működött is.
Szóval alant a kódban a random(2,10); függvényt használtam, de mint írtátok, ez ugyanazt a sorozatot generálja mindig, nekem ez nem jó.
Hogy értsétek, erről a homokba rajzolós asztalról van szó. SD kártyán vannak a minták, indításnál az auto0.g fájl tartalmazza a homing sequence-t, a többi auto1.g - auto9.g a mintákat amiket rajzol. Mivel ezek órákig mennek nem poén, ha mindig bekapcsolom és ugyanazzal indul. Jó lenne, ha random választana egy számot 2-10ig (függvényben alul van egy x-1) és akkor valamelyik mintát elkezdené rajzolni.
Kontextusnak annyi, hogy elkezdi beolvasni az SD kártya tartalmát a program, és ha nincs ott egy fájl amit áramkimaradás esetén akkor kezdi a kód szerint az auto0.g-tmod: elég rossz itt a kódformázás, itt egy pastebin link: https://pastebin.com/zFwjc0y9
#if DISABLED(NO_SD_AUTOSTART)
/**
* Run all the auto#.g files. Called:
* - On boot after successful card init.
* - From the LCD command to Run Auto Files
*/
void CardReader::autofile_begin() {
autofile_index = 1;
(void)autofile_check();
}
/**
* Run the next auto#.g file. Called:
* - On boot after successful card init
* - After finishing the previous auto#.g file
* - From the LCD command to begin the auto#.g files
*
* Return 'true' if an auto file was started
*/
bool CardReader::autofile_check() {
if (!autofile_index) return false;
if (!isMounted())
mount();
else if (ENABLED(SDCARD_EEPROM_EMULATION))
settings.first_load();
// Don't run auto#.g when a PLR file exists
if (isMounted() && TERN1(POWER_LOSS_RECOVERY, !recovery.valid())) {
char autoname[10];
sprintf_P(autoname, PSTR("/auto%c.g"), '0' + autofile_index - 1);
if (fileExists(autoname)) {
cdroot();
openAndPrintFile(autoname);
// Generate a random number between 2 and 10
int randomNumber = random(2,10);
autofile_index = randomNumber;
//
return true;
}
}
autofile_cancel();
return false;
}
#endif
-
DrojDtroll
veterán
válasz
dabadab #4359 üzenetére
Az a lényeg, hogy van 5-6 komponensem amit be kell regisztrálni egy DI frameworkbe. Ezeknek a komponenseknek a legyártására és beregisztrálására akarok egy template függvényt csinálni. Eddig n-szer le volt másolva ugyan az a kód egy kis változtatással(c). Igazából most az a-b paraméterek el is felejthetjük.
Összegezve azt akarom, hogy az adott típusokból egy templatefüggvény gyártson példányokat. createclient<clienta, clientb, clientc>(); -
Livius
őstag
válasz
dabadab #4333 üzenetére
Nézem mi ez a MAUI pontosan, de szerencsére ez is XAML-ben van, szóval elvileg a régi WPF kódok copy pastel 90%-ra működhetnek ugyan úgy, és az ábrák szerint tényleg multiplatform. Ha GUI-s programról van szó, akkor egyszer mindenképpen lépni kell a C++-ról C#-ra majd. Ha ez végre tényleg Multi-platform App UI lesz, akkor itt az ideje ennek a váltásnak, és aki ezt hamarabb kezdi el, az igazán sokat fog nyerni fejlesztési időkben és rugalmasságban a SW piacon.
-
jattila48
aktív tag
válasz
dabadab #4318 üzenetére
Épp azt írtam, hogy ne kész megoldásokra hivatkozzatok (OK, nem boost hanem már std), hanem hogy hogy lehetne megírni ezek nélkül. A működése érdekel. A generátor azért más mint az iterátor, bár hasonló célt szolgál. Arra kíváncsi lennék azért, hogy az iterátor alkalmazásához előbb eltárolja-e a fájl neveket konténerbe utána pedig azon iterál, vagy "röptében" állítja elő a fájl neveket. Gyanítom, hogy az előbbi, akkor pedig nem túl memória kímélő. Míg a generátor csak az éppen következő fájl nevet állítja elő.
Közben olvasom, hogy mi a LegacyInputIterator, így a fenti megjegyzésemet visszavonom. Ehhez nem kell előzőleg konténerben eltárolni a fájl neveket. Na ezt sem tudtam eddig, hogy létezik ilyen, hogy LegacyInputIterator. -
Tomi_78
aktív tag
válasz
dabadab #4313 üzenetére
"a WM_PAINT ágban deklarálsz egy változót, amit csak ott inicializálsz, viszont mindenhol látható. A megoldás az, hogy a case WM_PAINT: utána részt kapcsos zárójelek közé rakod, mert az ott egy külön blokk."
Kapcsos zárójelek közé raktam a WM_PAINT-on belüli részt, de megbolondult tőle a programom a futtatáskor; valami krikszkrakszokat ír ki...
-
-
Tomi_78
aktív tag
válasz
dabadab #4307 üzenetére
Aha. Hát... ezt nem tudtam. Akkor volt egy kis félreértés részemről
.
Most egyébként próbáltam leegyszerűsíteni a programomat, már ami a Device Context (DC) beállításokat illeti. Ahogy olvastam a "Borland C++ Builder 6 Developer's Guide" című könyvben, a DC az a grafikus eszközillesztőhöz való hozzáférést biztosító kezelő(?). Tehát ez mindenképpen kell a rajzolásokhoz (itt volt a félreértés, mert azt hittem, hogy te valami kívülről származó eljáráskönyvtárról írtál, amit állítólag használok a progimban, ez meg alapban benne van a C++-ban).
Szóval, a következőképpen fest most egy kis programom, de valami nem jó benne, mert a default ágra mutatva a következő hibaüzenetet írja:
F:\progsetup\codeblocks-17.12mingw-nosetup\sajatok\ablakosrajz\Rajz\main.cpp|103|error: jump to case label [-fpermissive]|
Röviden el tudnátok mondani, hogy mi a baj vele, vagy hogy mi hiányzik belőle? Pedig a könyv alapján csináltam, de így sem jó.int kockax=50, kockay=5;
(...)LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) /* handle the messages */
{
case WM_KEYDOWN:
switch (wParam) {
case VK_LEFT: kockax-=4; InvalidateRect(hwnd, NULL, true); break;
case VK_RIGHT: kockax+=4; InvalidateRect(hwnd, NULL, true); break;
case VK_UP: kockay-=4; InvalidateRect(hwnd, NULL, true); break;
case VK_DOWN: kockay+=4; InvalidateRect(hwnd, NULL, true); break;
}
break;
case WM_PAINT:
HDC grafikakezelo = GetDC(hwnd);
Rectangle(grafikakezelo,kockax,kockay,40,40);
ReleaseDC(hwnd,grafikakezelo);
break;
case WM_DESTROY:
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
-
Tomi_78
aktív tag
válasz
dabadab #4305 üzenetére
Pedig tényleg nem használok semmi extrát a programozáshoz. De inkább be is szúrom kis programomat (175 sor talán még belefér a fórumba; ha nem, hát szóljatok érte, hogy az ilyet mellőzzem legközelebb), hogy lássátok. Persze így azt is látni, hogy sokminden még nem világos benne nekem sem; ezeket megjegyzésbe írtam.
#if defined(UNICODE) && !defined(_UNICODE)
#define _UNICODE
#elif defined(_UNICODE) && !defined(UNICODE)
#define UNICODE
#endif
#include <tchar.h>
#include <windows.h>
/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
/* Make the class name into a global variable */
TCHAR szClassName[ ] = _T("CodeBlocksWindowsApp");
int xhely=50,yhely=5,xseb=8,yseb=8;
UINT idozito;
RECT ablak;
const unsigned int idozito1=1;
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nCmdShow)
{
HWND hwnd; /* This is the handle for our window */
MSG messages; /* Here messages to the application are saved */
WNDCLASSEX wincl; /* Data structure for the windowclass */
/* The Window structure */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
wincl.style = CS_DBLCLKS; /* Catch double-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);
/* Use default icon and mouse-pointer */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* No menu */
wincl.cbClsExtra = 0; /* No extra bytes after the window class */
wincl.cbWndExtra = 0; /* structure or the window instance */
/* Use Windows's default colour as the background of the window */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
/* Register the window class, and if it fails quit the program */
if (!RegisterClassEx (&wincl))
return 0;
/* The class is registered, let's create the program*/
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
_T("Jatekom"), /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
544, /* The programs width */
375, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);
/* Make the window visible on the screen */
ShowWindow (hwnd, nCmdShow);
/* Run the message loop. It will run until GetMessage() returns 0 */
while (GetMessage (&messages, NULL, 0, 0))
{
/* Translate virtual-key messages into character messages */
TranslateMessage(&messages);
/* Send message to WindowProcedure */
DispatchMessage(&messages);
}
/* The program return-value is 0 - The value that PostQuitMessage() gave */
return messages.wParam;
}
/* This function is called by the Windows function DispatchMessage() */
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc; //handle to device context a jelentése, de mire is jó?
hdc = GetDC(hwnd);
static HBITMAP kep;
BITMAP bitmapkep;
HDC hdcMem;
HGDIOBJ oldBitmap;
PAINTSTRUCT ps; //előző helyről törléshez
switch (message) /* handle the messages */
{
case WM_CREATE:
kep = (HBITMAP) LoadImageW(NULL, L".\\kek_labda.bmp",
IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
if (kep == NULL) {
MessageBoxW(hwnd, L"Nem tudtam betolteni a kepet!", L"Error", MB_OK);
}/*
else {
System::Drawing::Bitmap::kep.MakeTransparent();
};*/
idozito = SetTimer(hwnd,idozito1,100,(TIMERPROC)NULL);
break;
case WM_KEYDOWN:
switch (wParam) {
case VK_LEFT: xhely-=4; InvalidateRect(hwnd, NULL, true); break;
case VK_RIGHT: xhely+=4; InvalidateRect(hwnd, NULL, true); break;
case VK_UP: yhely-=4; InvalidateRect(hwnd, NULL, true); break;
case VK_DOWN: yhely+=4; InvalidateRect(hwnd, NULL, true); break;
}
break;
case WM_PAINT:
hdcMem = CreateCompatibleDC(hdc); //ez mire jó?
oldBitmap = SelectObject(hdcMem, kep); //és ez?
GetObject(kep, sizeof(bitmapkep), &bitmapkep); //beolvassa a kep változóba a bitmap adatait(?)
BeginPaint(hwnd, &ps); //előző helyről törléshez
BitBlt(hdc, xhely, yhely, bitmapkep.bmWidth, bitmapkep.bmHeight,
hdcMem, 0, 0, SRCCOPY); //ez rendben van: kirajzolás
/*BLENDFUNCTION pixelblend = { AC_SRC_OVER, 0, 255, AC_SRC_ALPHA };
AlphaBlend(hdc, 0, 0, bitmapkep.bmWidth, bitmapkep.bmHeight, hdcMem, 0, 0, bitmapkep.bmWidth, bitmapkep.bmHeight, pixelblend);*/
EndPaint(hwnd, &ps); //előző helyről törléshez
SelectObject(hdcMem, oldBitmap); //ez is mit csinál?
DeleteDC(hdcMem); //???
TextOut(hdc, 10, 10, TEXT("Szia!"),5); //ez is oké: kiírok egy szöveget.
GetWindowRect(hwnd, &ablak);
char szoveg[30];
itoa(ablak.right,szoveg,10);
TextOut(hdc, 50, 10, szoveg,5);
itoa(xhely+8+bitmapkep.bmWidth,szoveg,10);
TextOut(hdc, 100, 10, szoveg,5);
Rectangle(hdc, 50, 50, 200, 100); //meg ez is: téglalap rajzolása
ReleaseDC(hwnd, hdc); //ez minek kell?
break;
case WM_TIMER:
switch (wParam)
{
case idozito1:
GetWindowRect(hwnd, &ablak);
xhely = xhely + xseb;
yhely = yhely + yseb;
if (xhely+xseb+bitmapkep.bmWidth>ablak.right-ablak.left-bitmapkep.bmWidth) {
xseb = -1*abs(xseb);
}
else
if (xhely<0) {
xseb = abs(xseb);
};
if (yhely+yseb+bitmapkep.bmHeight>ablak.bottom) {
yseb = -1*abs(yseb);
}
else
if (yhely<0) {
yseb = abs(yseb);
};
InvalidateRect(hwnd, NULL, true);
break;
}
break;
case WM_DESTROY:
KillTimer(hwnd,idozito1);
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
-
Tomi_78
aktív tag
válasz
dabadab #4277 üzenetére
Köszönöm a választ; működött a módszered.
Amúgy én is találtam egy másik megoldást (internetről puskázva), mégpedig hogy ezzel a sorral egészítettem ki a programomat az elején:#define idozito1 1001
Bár nem értem, hogy ez miért jó? Egyenértékű lenne a tiéddel ( const unsigned int idozito1=0x12345; )? -
Tomi_78
aktív tag
válasz
dabadab #4270 üzenetére
Na szóval: a fejléc most már így néz ki, mivel nekem nem kell semmilyen paraméter:
void __fastcall alakcsinalas()
Ezek után ha nincs () a függvényhívás után, tehát sima alakcsinalas; akkor a hiba:
[C++ Error] Unit1.cpp(95): E2235 Member function must be called or its address taken
ha meg van () utána, tehát alakcsinalas();, akkor a hiba:
[Linker Error] Unresolved external '__fastcall TForm1::alakcsinalas()' referenced from F:\PROGSETUP\BCB6\BCBPROGIJAIM\ALAKMEGY\UNIT1.OBJ -
amdni
aktív tag
-
dobragab
addikt
válasz
dabadab #4197 üzenetére
Vagy meg inkabb, ha C++11:
struct Point
{
int x = 0;
int y = 0;
Point() = default;
Point(int x, int y)
x(x),
y(y)
{}
};Csak mivel a kollega nem hasznalt inicializalo listat, ezert nem akartam abba bonyolodni, hogy megmutassam. Es beepitett tipusokra konkretan egyenerteku a ketto. Majd ha nincs default ctor vagy van dinamikus memoriakezeles, akkor kezd ertelme lenni megmutatni.
Amúgy meg van olyan kezdőknek szóló könyv, amit úgy meg bírtak írni, hogy a példák vállalhatóak?...
Nekem van egy kezdemenyezesem, de eleg hatarozottan a BME mernokinfos prog2-re van szabva, es a C ismeretere epit.
(#4198) mgoogyi
Amíg egy egyszerű téglalap reprezentációja ennyi magyarázatra szorul, az nekem azt mutatja, hogy nagyon keveset kódolt még.
Igen, es nem latom ertelmet annak, hogy OOP-t tanuljon ennyire koran, de hat...
-
mgoogyi
senior tag
válasz
dabadab #4197 üzenetére
Egyetértek veletek, hogy az OOP-t nem tanítják meg rendesen.
Viszont a kérdező srácnak még lehet korai túlzottan ebbe belemenni, egyelőre szerintem ott tart, hogy a nagyon alap dolgok meglegyenek. Amíg egy egyszerű téglalap reprezentációja ennyi magyarázatra szorul, az nekem azt mutatja, hogy nagyon keveset kódolt még.Visszatérve az OOP-re, nekem a láthatóságokkal kapcsolatban zavar pl, hogy mennyire nem tanítják(és nekem sem tanították), hogy mi a valódi haszna annak, hogy semmit sem szabad feleslegesen publicon hagyni.
Annyit tudnak, hogyha valami private, akkor az nem látszik kívülről, de hogy az miért jó, arra már semmi ötletük nincs.
És hát azért nem tanítják, mert jellemzően a gyakorlatvezető sem tudja. -
Headless
őstag
válasz
dabadab #4122 üzenetére
Köszönöm a gyors választ.
Ahogy az kitalálható volt a definicióból ez egy API részlet, tehát fő programba nem tudok belenyúlni. Ezt kell használni, közben megtaláltam az API-ban azt a funkciót ami a paraméterek információit tartalmazza így meglett ez a probléma, de valahogy olyan mintha nem tudnám kiolvasni a 0-án kívüli elemeket. De valószínű ezzel már egy inkább specifikus fórumban kéne feltennem a kérdést.
-
choco01
addikt
válasz
dabadab #4061 üzenetére
Zsír akkor értem a class és struct közötti különbségeket, köszönöm!
Ugye az nem világos hogy minek csináljak private tagokat ha akkor lényegében azzal nem tudok semmit sem tenni..
az csak van mindentől elszigetelve és kész, a példa kódomban ugye ez van:
private:
kolcsonzes *k;
int db;Na most itt akkor nem sok értelmét látom mert ezzel nem tudok mit kezdeni? Bár ha végig nézem a konstruktorba még is csak hivatkozik a k-ra, akkor a konstruktor még is látja a private dolgokat?
Általában emeltszintű érettségi példák vannak kidolgozva és azokat csináljuk meg..
all:Az miért van hogy mindig dinamikus tömböket használunk amikor tudjuk előre is hogy hány elemű lesz?Azt hiszem néztünk olyan példát előadáson hogy volt benne dinamikustömb de konkrétan megadva az elemszámmal.. vagy ennél a classon témánál mindig ez kell?
Meg ugye a dinamikus tömbkezelésre ezt tanultuk:
<típus>* név = new <típus>[érték];
Most az előző példakódomban ez volt:k = new kolcsonzes[db];
itt se típus se * nincs az elején a másik végén meg típus nincs.. akkor honnan tudja hogy ez dinamikus?jattila48:
Neked is köszönöm, így már kezd összeáállni, valahogy gyakarolnom kéne, próbálok keresni rá még példát a suliban majd..
Így ennél a példámnál értem hogy ezért kell dinamikus meg hogy a beolvasáskor tudjuk meg hogy hány elemű lesz!
-
válasz
dabadab #4018 üzenetére
Szuper, maris ravilagitottal arra, hogy eloszor valasztanom kell a ket irany (C vagy C++) kozott.
Leginkabb olyan dolgokkal szeretnek foglalkozni, mint a kodekek, screen grabbeles, es 3D-s megjelenites.
Jatekokkal nem hiszem, hogy lesz eselyem foglalkozni, de orvosi, vagy autos kepalkoto teruleten el tudnam kepzelni a jovomet.
Az a lenyeg, hogy olyan teruletek erdekelnek, ahol a szoftver futasi teljesitmenye is fontos szempont, illetve szemmel jol lathato eredmenye van a munkamnak: pl. szebb elsimito eljaras, vagy azonos hardveren jobban futo 3D objektum megjelenites, netan pontosabb targy felismeres pl. onvezeto autos teruleten, stb.
Eleg jo vagyok matekbol, es fizikabol, igy ezeket is szeretnem hasznalni, mert a vegen elkopoik a tudasom.Az eddigi kutakodasaim alapjan, amit en szeretnek csinalni, azok inkabb library-k formajaban leteznek, amiket be lehet huzni mas projecktekbe. De ebben meg nem vagyok teljesen biztos.
Neztem tobb ide vago allas hirdetest, de nehol C, nahol meg C++-t kernek, latszolag hasonlo temaju feladatokhoz. Ezek szerint mindket nyelvet hasznaljak ilyen a feladatra?
-
thiclyoon
aktív tag
válasz
dabadab #4013 üzenetére
Tudom, csak az kicsit kihaltabb, gondoltam itt aktívabbak vagytok
Tipikusan persze ahogy kiírtam ide, találtam is egy helyet, ahol azt írták amit te is a NULL-ról, szóval így már nem száll el
Kiíratásnál többféle lehet (amit írtam, az L(eft)-N(ode)-R(ight)), és mivel az adott fában itt "balra" kerülnek a kisebb elemek, "jobbra" a nagyobbak, így növekvő sorrendben fogja kiírni elvileg, és valóban így írja ki, szóval ez okésnak tűnik
+ meglett a db-szám is, ott a return-ben kellett kicsit ügyeskedni, nem magában a kódban. Találtam még néhány elég érdekes feladatot, de most már inkább szenvedek egy kicsit még a rekurzióval, hátha rájövök
-
kutkut
addikt
válasz
dabadab #3949 üzenetére
Már miért kéne sok ezer soros kód ahhoz, hogy objektumokat használj?! Pláne, tanulási fázisban... Pl. matekban az integrálásnak is akkor van értelme, ha kellően "girbegurba" a függvény, mégis egyszerűbb megérteni a lényegét az y = x típusú függvényekkel...
Bár azzal egyetértek, hogy még korai elővenni az objektumokat, először a pointereket kéne átvenni. De mindenekelőtt a goto-kat elhagyni!
-
PandaMonium
őstag
válasz
dabadab #3951 üzenetére
Nyilván nem ennyit tanulna belőle. Rögtön jön a header-ekre bontás, akkor az hozza magával az include guardokat, utána osztályon belül scope és láthatóság, statikus adattagok és függvények, getter/setter-ek, öröklődés, stb. Az OOP nagyon nem annyi, hogy "class".
(#3953) emvy: Igen, de ezzel fog a legtöbbet találkozni akkor is ha tutorialokat nézeget, illetve erre épülnek további alapvető (observer, factory, facade, ...) és összetettebb (MVC, ECS, ...) szoftvertervezési minták. Azt mégsem javasolhattam, hogy kezdjen el monad-okról szóló oktatóanyagot keresni funkcionális programozáshoz C++ban.
-
-
m.zmrzlina
senior tag
válasz
dabadab #3937 üzenetére
Belefutottam egy ilyen leírásba amiben nem értek két dolgot.
(oldal legalja a Passing a multidimensional std::array to a function résznél)1, Miért használ cím szerinti paraméterátadást, ha csak kiiratja a tömböt de nem változtat egyik eleme értékén sem?
2. Mire való a függvény paraméterlistájában a tömb előtt a "const"? Egy kicsit feljebb a Passing std::array to function résznél azt írja, hogy azért kell mert a fordító így nem készít másolatot a tömbről (és ettől jobb lesz a világ
) Erről tud valaki bővebbet mondani? Ha túl hosszú vagy bonyolult akkor egy link is megteszi.
-
m.zmrzlina
senior tag
válasz
dabadab #3928 üzenetére
Visszaolvasva a kérdésemet nem voltam teljesen pontos:
1. Peremfeltétel, hogy véletlenszerűen kiválasztott (esetleg userinput-ból származik) a kezdő elem .
2. Csak a kezdő elem környezetében lévő elemek érdekesek nem kell az egész mátrixot végigellenőrizni.
3. A sarkukkal érintkező elemek is szomszédosnak számítanak (egy elemnek 8 szomszédja van).Az alábbi példánál a (0,7) (0,8) (0,9) (1,7) (1,8) (1,9) (2,8) (2,9) (3,8) (3,9) számítanak találatnak ha a kezdő elem a (0,8) (0,9) (1,8) (1,9) elemek bármelyike. (sor, oszlop)
A (2,0) (3,0) (4,0) azért nem érvényes találat ((0,8) (0,9) (1,8) (1,9) kezdőcella esetén) mert közöttük vannak olyan elemek amelyeknek nem csak 0 szomszédjuk van. A "közöttük" azt jelenti, hogy a jöbb felső sarok és (2,0) (3,0) (4,0) elemek között.
1 0 1 0 0 0 0 0 0 0
0 0 0 0 1 1 0 0 0 0
0 0 0 0 1 1 0 0 0 0
0 0 0 1 0 1 1 0 0 0
0 0 0 0 1 1 0 0 0 0
0 0 0 0 1 0 0 0 1 0
1 0 1 0 0 0 1 0 1 0
0 0 0 1 0 0 0 0 1 0
1 1 1 0 0 1 0 1 1 0
0 0 0 0 0 0 0 0 0 0 -
cadtamas
tag
válasz
dabadab #3874 üzenetére
Nagyon köszönöm a válaszod.
A fő felhasználási terület a függvények paramétereinél van. A paramétereket alapvetően átadhatjuk értékként vagy hivatkozásként: ha értékként adjuk át, akkor ha a függvényben bizergáljuk, az nincs kihatással az eredeti változóra - ha hivatkozásként, akkor meg igen.
Ha a függvény feladata egy változó módosítása, akkor miért nem adjuk meg a függvény visszatérési értékének ezt az értéket és írjuk felül az eredeti változót?
A másik felhasználás az, amikor new-val hozunk létra objektumokat, hogy az élettartamuk független legyen annak a függvénynek az élettartamától, amelyik létrehozza őket (ugye a helyi változók csak addig élnek, amíg a függvény le nem fut - ha new-val hozol létre valamit, az meg addig, amíg rá nem küldesz egy delete-et).
Erre tudnál adni valami pédát, mert nem értem miért lenne szükségem bármire egy függvényből annak lefutása után. (kivéve persze az eredményt) Vagy ha szükségem van rá, akkor miért nem a programtörzsben deklarálom?
-
CPT.Pirk
Jómunkásember
válasz
dabadab #3855 üzenetére
QRect, oké.
Arra gondoltam, hogy class-on kívüli változókat töltök fel a MainWindow létrejövetelénél és azokat simán átadom másik fájlnak, de rá kellett jönnöm, hogy a gomb előbb jön létre, mint a MainWindow amin rajta van így ez nem járható.
Végül aztán a slotokkal sikerült megcsinálni. Betettem a MainWindowhoz egy slotot a két QRect elküldésére, a constructorban megcsinálom a qrectec feltöltését és a connectet a vevő oldallal, majd emittálok.
...
connect(this, &MainWindow::SendDimensions, ui->movedPushButton, &mousemovedbutton::GetDimensions);
LabelDimensions.setX(ui->label_2->width());
LabelDimensions.setY(ui->label_2->height());
PushBtnDimensions.setX(ui->movedPushButton->width());
PushBtnDimensions.setY(ui->movedPushButton->height());
emit SendDimensions(LabelDimensions, PushBtnDimensions);Így most faszán odaérnek a paraméterek a vevő oldalra és tudok velük dolgozni.
-
dobragab
addikt
válasz
dabadab #3844 üzenetére
Mondjuk, kicsit általánosabban is meg lehetne fogalmazni, hogy tuti ne lődd tökön magad:
- Inicializáló listán ne hívj tagfüggvényt
- Inicializáló listán ne add ki a this-t vagy a *this-t
- Ha az osztály polimorfikus (van virtuális függvénye), ugyanezek a kitételek érvényesek a törzsre is.Utóbbi esetben a nem virtuális függvény hívása is veszélyes, figyelembe véve a template method pattern-t és ezt.
-
cattus
addikt
válasz
dabadab #3680 üzenetére
Gondolom felsőoktatásban tanul a kolléga, ott meg úgy kezelik az első félévben az embereket, mintha 0 előismeretük lenne (legalábbis nálunk ez a bevett forma). Persze ha valaki már előrébb tart, akkor eléggé zavaró lehet ilyen primitív eszközökkel dolgozni, de ha normális a képzés, akkor túllépnek ezeken.
Nem hiszem, hogy ne tanítanák az STL-t, csak nem az elején. Nyilván az ilyen egyszerűbb adatszerkezeteket egy kezdőnek könnyebb megérteni. -
dobragab
addikt
válasz
dabadab #3450 üzenetére
#define in :
(#3452) jattila48
Nem azért kötünk bele minden szirszarba, mert ez nekünk jól esik, pont fordítva. Mert rossz nézni azokat a kódokat, amiket tanítási céllal írsz be. Az a kolléga, aki tanulni jön ide, nem biztos, hogy észreveszi, hogy szar, több sebből vérzik, esetleg gyanútlanul be is másolja a kódot, vagy úgy gondolja, így kell kódot írni.
A legutóbbi kérdés ráadásul annyival bonyolultabb ügy, hogy a kolléga útmutatást kért, hogyan csinálja meg, nem algoritmust, vagy konkrét kódot. Ha szigorú lennék, azt mondanám, elvetted a felfedezés élményét is, de ez bőven megbocsátható. Szemben azzal, hogy útmutatásként szar kódot kapott.
Jó, sarkítottam, én is tudom, de a lényeg talán átmegy.
-
jattila48
aktív tag
válasz
dabadab #3450 üzenetére
Ez igaz általában, de most IPV6 sztringről volt szó, ami 40 karakter hosszú (lezáró 0-val együtt). Egyébként az algoritmusra gondoltam, hogy jó. Abban is találtál "hibát"? Tényleg nem értem miért akartok minden áron minden apró szir-szar-ba belekötni, nem ez volt a lényeg. Tekintsétek úgy, hogy az algoritmust írtam le pszeudo kódban! Világos? Elhiszed, hogy saját production kódomban nem írok ilyet (ha nem, az sem baj)? Hadd ne kelljen már egy vázlat-szerű válaszban minden apró szarnak tökéletesnek lenni! Az algoritmust érted? Az jó? Ha nem, akkor szóljál és javítsd ki!
-
bandi0000
nagyúr
válasz
dabadab #3449 üzenetére
Igazábol 3 éve nem járok suliba, szal ezt tanultam, most csak érettségi javításra gyúrok
Ez nem az ipv -s feladat, kontkrétan a fájlba némelyik sor 2 db számmal kezdődik és ezeket kell összeadni, nem tom a miértjét, de ha ebböl a karakteres számból kivonok egy karakteres 0 át akkor az intes számát kapom meg
-
dobragab
addikt
válasz
dabadab #3419 üzenetére
Jogos, ott a pont.
Én a dinamikusan típusos nyelvekre gondoltam, tényleg rosszul fogalmaztam
if a > 5:
b = "hello"
else:
b = False
print(b)Szóval a változódeklaráció hiánya, egy változó típusának mágikus megváltozása, a változók élettartamának ilyen értelmezésével... leginkább káosz
(#3420) ToMmY_hun
Igen, ismerem a viccet, szerintem is zseniális
Na mindegy, befejezem a Python hate factory-t, túlzottan off.
-
-
bandi0000
nagyúr
-
bandi0000
nagyúr
válasz
dabadab #3391 üzenetére
Ahha, gyakorlatilag a for, if, scanf, scanf, printf, fprintf, while, do while, ezeket ismerem meg pár függvényt a string.h ból
Meg akarom tanulni ezt de egyedül nehéz, ha meg nem vesznek fel fősulira gyakorlatilag semmit se érnék el vele ha tudnám mert papír nélkül és gyakorlat nélkül úgy se kellenék sehova
-
EQMontoya
veterán
-
jattila48
aktív tag
válasz
dabadab #3254 üzenetére
A protokoll maga a szerializált csomag. Ha ezt TCP-n (vagy UDP-n) átküldöd, a másik oldal ugyanúgy fogja értelmezni. Az mit jelent, hogy a socket-ek kezelése nem thread safe? A socket az nem egy globális valami, amit több thread egyszerre használ, hanem azt maga a thread hozzza létre saját magának. Másik thread másik socket-et hoz létre. Innentől kezdve természetesen thread safe. Ha a program jól van megírva, akkor nem fognak a thread-ek közös socket-et használni, így szinkronizációra sincs szükség. Ha arra gondolsz, hogy több thread ugyan annak a távoli partnernek akar adatot küldeni, akkor persze szinkronizálni kell az írást, de erről nem a socket tehet. Ezt bármilyen library-t használva is szinkronizálni kéne. Itt nem arra gondolok, mint pl. a web szerver esetén, amikor sok kapcsolat épül ki a klienstől a szerver felé, amiket külön-külön thread-ek saját socket-eken keresztül kezelnek, hanem amikor egy adott konnektált socketre akar több thread írni. Az ftp speciel nem annyira szimpla, mert pl. két TCP csatornát használ, aktív vagy passzív módban működik, hitelesít, stb. Maga az adatkommunikációja pedig szintén szimpla TCP. Nem csak néztem ftp kódot, hanem írtam is.
-
jattila48
aktív tag
-
jattila48
aktív tag
válasz
dabadab #3240 üzenetére
Nem szokás olyan publikus tfv.-t írni, ami már meglévő publikus tfv.-ekkel megvalósítható. Az ilyet nem tfv.-ként kell megírni, hogy növeljék az enkapszulációt. A free fv.-eket kell előnyben részesíteni a tfv.-ekkel, és a friend fv.-ekkel szemben. Talán ez lehet az oka.
-
dobragab
addikt
válasz
dabadab #3238 üzenetére
Szerintem a multimap miatt van így. multimap-nél van értelme a count-nak, mindenképp meg kell írni a count-ot. Mást jelent a contains, felesleges lett volna megírni, mert használhatod helyette a count-ot is minden értelmes kontextusban.
bool asd = mmap.count("idk");
if(mmap.count("idk"))
...Megírhatták volna a contains-t is, de minek? Egyetlen int->bool típuskonverzió miatt? Ha nem akarsz a visszatérési értékkel pl. template osztályt példányosítani, semmi baj vele.
bool contains(Key key)
{
return count(key);
} -
Boryszka
tag
válasz
dabadab #3094 üzenetére
Ez egyetemi linprog házi - amit megírtam már de állítólag totál rosszul értelmeztem és új progit kér (mindegy milyen nyelven van írva). Ha ismernétek a körülményeket, akkor nem csodálkoznátok a feladat szövegezésén, ami a következő:
"Adott pozitív egész számoknak egy 1, n2, · · · , nm növekvo sorozata, nevezzük a sorozatot mintának.
Legyen N > nm pozitív egész. Szeretnénk olyan S ⊆ [1, ... , N] részhalmazokat keresni, amelyben nincs
meg az 1, n2, ... , nm minta! Ez azt jelenti, hogy S -nek nem részhalmaza a minta egyik eltoltja sem, tehát nem részhalmaza az 1 + k, n2 + k, · · · , nm + k halmaz minden k = 0, 1, ... , N − nm esetén. Szeretnénk minél nagyobb elemszámú S halmazokat megadni az 1, n2, ... , nm mintához! Jó lenne sok mintához meghatározni a legnagyobb minta-mentes S halmazt. Kisebb méretre biztos eredményt kaphatunk azzal, hogy minden lehetséges S-et kipróbálunk jó-e! Nagyobb számok esetén érdemes több jónak tűnő elképzelést kipróbálni!" -
xavix13
őstag
válasz
dabadab #2800 üzenetére
Azt hogy hogyan kellene beolvastatni a játékos számait egy tömbbe ellenőrzötten, egy ciklusban, letudnád írni? Nekem nem igazán akart összejönni, csak így ahogy sikerült, ami nyilvánvalóan rossz.
Nem tudom ezek a container template-ek micsodák, de egyelőre nekünk még ilyet nem tanítottak, még ha el is hiszem hogy jobb volna azzal csinálni.
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Huawei P20 Lite 64GB, Kártyafüggetlen, 1 Év Garanciával
- Robbanj a jövőbe egy új Ryzen 7 5800X-szel! Kamatmentes rèszletre is!!
- LG 65QNED86T / 65" - 164 cm QNED / 4K UHD / 120Hz & 3ms / HDR 10 Pro / FreeSync Premium / HDMI 2.1
- AKCIÓ! HP USB C G5 Essential (5TW10AA) dokkoló hibátlan működéssel garanciával
- Beszámítás! HP Z2 G4 Tower Workstation számítógép garanciával, hibátlan működéssel
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest