Hirdetés

2024. május 6., hétfő

Gyorskeresés

Hozzászólások

(#3751) bandi0000 válasza Hannibhál (#3748) üzenetére


bandi0000
nagyúr

nem tudom mennyire beszerezhető, de nekünk a tanárok a Nagy Sándor c c++ könyvet ajánlják

Xbox One: bandymnc

(#3752) Hannibhál válasza ToMmY_hun (#3750) üzenetére


Hannibhál
őstag

Azt a stroupasos könyvet kezdtem el én is de tényleg elég nehéz, viszont ha nekem úgy mond elég a 2d meg alap számítások(excelbe már csináltam hozzá pár dolgot, hogy kicsit automatizáljam) igazából a 2d-s grafikus felület hiányzik(térkép, kezelőfelület) a játék pedig a civilizationra hasonlít kicsit

Gépelés nem az erősségemasdsdk

(#3753) ToMmY_hun válasza Hannibhál (#3752) üzenetére


ToMmY_hun
senior tag

Továbbra is az a véleményem, hogy ehhez overkill a CPP. Maga a nyelv egyébként sem ideális kezdők számára.

Azért Stroustrup nevét írd le jól, ha már C++ fórumban vagyunk. ;)

C programmers never die, they are just cast into void.

(#3754) Hannibhál válasza ToMmY_hun (#3753) üzenetére


Hannibhál
őstag

bocsánat, telóról vok, és innen elég nehéz nézni, hogy mire válaszolok :R

Gépelés nem az erősségemasdsdk

(#3755) mezis


mezis
nagyúr

Üdv.!

A Dev-C++ 5.11 alatt szeretném működésre bírni az alábbi programocskát:

#include<iostream>
#include<Windows.h>
#include<MMSystem.h>
using namespace std;

int main()
{
PlaySound(TEXT("canary.wav"),NULL,SND_SYNC);
system("pause");
return(0);

}

A fordító a következő hibaüzenetet küldi: Makefile.win 25. sor: A megadott nevet (winmm) a rendszer nem ismeri fel belső vagy külső parancsként futtathatóként vagy kötegfileként.

A Makefile 24,25.sora:
$(BIN): $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)

Mit kell tennem, hogy megszűnjön ez a hiányérzete ? :F

(Google a winmm-re egy winmm.dll-t file hozzott csupán de azt is valamilyen vírussal kapcsolatosan.)

mezis

(#3756) dobragab válasza mezis (#3755) üzenetére


dobragab
addikt

A makefile-ban a LINKOBJ változó megadásakor elgépelte valaki, -lwinmm kellene, helyette winmm van.

[ Szerkesztve ]

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3757) mezis válasza dobragab (#3756) üzenetére


mezis
nagyúr

Köszönöm, így már működik ! :R

Csak kíváncsiskodom: miért -lwinmm ?
Ugyanis lwinmm -el próbáltam (Project beállítások - Linker), akkor ugyanaz a hibaüzenet volt.

[ Szerkesztve ]

mezis

(#3758) dobragab válasza mezis (#3757) üzenetére


dobragab
addikt

GCC-szerű fordítóknál - jelzi a kapcsolót, -l pedig a linkelendő library-t.

[ Szerkesztve ]

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3759) dobragab válasza dobragab (#3688) üzenetére


dobragab
addikt

C++-ról megint tanultam újat. Rosszul tudtam eddig, megtaláltam a szabványban, hogy a throw() és a noexcept kompatibilis.

Mindezt annak nyomán találtam meg, hogy a fordító által generált move ctor vajon noexcept(auto)-e. Igen, az, sőt a throw deklarációkat is helyesen merge-eli. Bár ez a része tökmindegy :D

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3760) semij9699


semij9699
csendes újonc

Sziasztok!
c# ba hogy oldom meg azt, hogy van két buttonom és ha az egyikre kattintok akkor a másik enabled tulajdonsága az ellentétére változik? és akárhányszor kattintsak(ez lenne lényegibb)
Kösz előre is

(#3761) EQMontoya válasza semij9699 (#3760) üzenetére


EQMontoya
veterán

protected void Button1_Click(object sender, EventArgs e)
{
Button2.Enabled = false; //paraszt, valahogy kulturáltabban kellene hozzáférni
}

De ez C++ topik, fáradj át kérlek a megfelelőbe!

Same rules apply!

(#3762) dobragab válasza semij9699 (#3760) üzenetére


dobragab
addikt

Másik topik. :)

(#3761) EQMontoya

Azok nem publikus tagváltozók, hanem propertyk. Ott függvényhívás van, de te csak értékadásnak látod.

[ Szerkesztve ]

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3763) semij9699 válasza dobragab (#3762) üzenetére


semij9699
csendes újonc

Basszus tényleg :D kösz

(#3764) EQMontoya válasza dobragab (#3762) üzenetére


EQMontoya
veterán

Azért paraszt, mert Button1 adott függvényének kontextusában nem illenék szimplán látni Button2-t, mint ojjektumot. :)

Same rules apply!

(#3765) dobragab válasza EQMontoya (#3764) üzenetére


dobragab
addikt

Az nem a Button1 függvénye, hanem a Form tagfüggvénye, ami a Button1-nek van adva, mint ClickListener. A Form-nak pedig Button1 és Button2 is privát adattagjai.

Egyébként pedig a lényegi részt elszúrtad. :D

Button2.Enabled = !Button2.Enabled;

[ Szerkesztve ]

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3766) Hunmugli


Hunmugli
aktív tag

Helló!

Viszonylag új vagyok c++ terén a programozás világában. Az a kérdésem van, hogy a következő kód mit csinál, miért fordul le, és miért 1 a kimenet:

#include <iostream>

using namespace std;

int main ()
{
int x(int(int(int(int(int(int(int(int))))))));
cout << x << endl;
return 0;
}

A kevés tudás veszélyes. A sok is. – Bocs az offért.

(#3767) bandi0000 válasza Hunmugli (#3766) üzenetére


bandi0000
nagyúr

mivel fordítod?
nekem értelmetlennek tűnik így, sőt le se fut, jobbik esetbe is csak valami memória szemetet írna ki

Xbox One: bandymnc

(#3768) Hunmugli válasza bandi0000 (#3767) üzenetére


Hunmugli
aktív tag

C::B, asszem c++14-gyel. (gnu gcc)

Vagy cpp.sh-val - bár megnézve a figyelmeztetést, szerintem pointereket hoz létre. De értéket nem tudok neki adni :F

Van ez a módszer:

int y(15);

Azt akartam kipróbálni, hogy van-e ilyen:
int y(15);
y(2*y);

Mert az első esetben a () értékadás, hát a másodikban miért ne működne? :DDD (nem működik, y is not a function)

Aztán valahogy az előző kommenben lévő kódot kreáltam :))

A kevés tudás veszélyes. A sok is. – Bocs az offért.

(#3769) bandi0000 válasza Hunmugli (#3768) üzenetére


bandi0000
nagyúr

ajjajj van baj :D

az hogy most amit te leírtál mi azt nem tudom, de ha értéket akarsz neki adni akkor az így tudod:

int y=15;

vagy ha ugye később akarsz neki adni, akkor

cin>>y;

sőt y(2*y); ez a legjobb esetben is ebben a formában működne: y=y*2;

[ Szerkesztve ]

Xbox One: bandymnc

(#3770) dabadab válasza Hunmugli (#3768) üzenetére


dabadab
titán

"Mert az első esetben a () értékadás"

Nem, az nem értékadás, hanem a konstruktor hívása.
Nagyon különböző dolog a kettő, még ha ránézésre lehet is köztük némi hasonlóság.

[ Szerkesztve ]

DRM is theft

(#3771) Hunmugli válasza bandi0000 (#3769) üzenetére


Hunmugli
aktív tag

Nyugi, az alapokkal [...] tisztában vagyok. Hamarosan Sololearn certifikációt is szerzek :DD [mellesleg csak ajánlani tudom, remek app, és böngészőben is fut.] Az értékadást nem y-ra értettem, hanem x-re.

Szóval hogy adok ennek értéket?:
int x(int(int));
//értékadás
cout << x << endl; //x ne legyen 1

dabadab: így már más. És akkor ez mi: értékadás vagy constructor?

#include <iostreams>
using namepsace std;

class valami {
private: int asd; //igen, asd
public:
valami (int a) : asd (a) { } //szoval ez mi?
};

int main () {
valami mas = 2;
}

Remélem jól írtam :B

[ Szerkesztve ]

A kevés tudás veszélyes. A sok is. – Bocs az offért.

(#3772) bandi0000 válasza Hunmugli (#3771) üzenetére


bandi0000
nagyúr

azt se tudom mit csinálna az az int-es rész :D én is kezdő vagyok, de értéket nem így tanultunk adni

szóval átadom a lehetőséget tapasztalt kollégáimnak :D

Xbox One: bandymnc

(#3773) Hunmugli válasza Hunmugli (#3771) üzenetére


Hunmugli
aktív tag

Sikerült elrontanom :W :W :W
A mainben lévő =jel akkor constr vagy értékadás?

---------

Arról az int-es részről többeket megkérdeztem, a reakciók kb ezek voltak: ennek nem szabadna lefordulnia. Véletlenül sikerült összehozni, de biztos van értelme :)

[ Szerkesztve ]

A kevés tudás veszélyes. A sok is. – Bocs az offért.

(#3774) bandi0000 válasza Hunmugli (#3773) üzenetére


bandi0000
nagyúr

= az mindig értékadás

public:
valami (int a) : asd (a) { } //szoval ez mi?

ezt én sem tudom :D vagyis ha jól gondolom akkor lesz egy publikus változód a valami, ami kapna? egy intes értéket, bár azzal meg nem csinálsz semmit, szóval passz

mit szeretnél csinálni? mert azzal többre mennénk :D

Xbox One: bandymnc

(#3775) dobragab válasza Hunmugli (#3771) üzenetére


dobragab
addikt

Ha megnézed a fordító hibaüzenetét, közelebb kerülsz a megoldáshoz.

int x(int(int(int(int(int(int(int(int))))))));

Ez a sor nem egy változó, hanem egy függvény deklarációja.

int x(int (*)(int (*)(int (*)(int (*)(int (*)(int (*)(int (*)(int))))))))

Tehát egy inttel visszatérő függvény, [ami paraméterként egy inttel visszatérő függénypointert vesz át]...., ami paraméterként egy intet vesz át.

Utána, a kiírásnál a függvény automatikusan a címére konvertálódik (ami egy függvényre mutató pointer), az viszont bool-ra (nem tudom pontosan, miért). Ezért ír ki 1-et.

Függvénydeklarációnak viszont nem adhatsz értéket.

Nem véletlenül szokták mondani a C / C++ deklarációkra, hogy syntax only a compiler could love…

[ Szerkesztve ]

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3776) Hunmugli válasza bandi0000 (#3774) üzenetére


Hunmugli
aktív tag

Ezt elvileg tudom mi :)

Mondom, félrement a // ez mi? --> a mainhez akartam írni
ez egyébként annyit tud, hogy asd értékét beállítja arra, ami a zárójelben van. Ez főleg akkor jó, ha asd egy constans, mert bármilyen más módszerrel hibát dobna (a constans az konstans :DD )

dobragab: köszönöm a részletes magyarázatot :R

[ Szerkesztve ]

A kevés tudás veszélyes. A sok is. – Bocs az offért.

(#3777) EQMontoya válasza dobragab (#3775) üzenetére


EQMontoya
veterán

az viszont bool-ra (nem tudom pontosan, miért).

4.12 Boolean conversions

1 An rvalue of arithmetic, enumeration, pointer, or pointer to member type can be converted to an rvalue of type bool.

Szóval azért, mert nincs más konverzió, amit csinálhatna vele. Pointer -> int nincs impliciten. Igen, szerintem is béna.

[ Szerkesztve ]

Same rules apply!

(#3778) dabadab válasza Hunmugli (#3776) üzenetére


dabadab
titán

"ez egyébként annyit tud, hogy asd értékét beállítja arra, ami a zárójelben van"

Nem, hanem az asd konstruktorát meghívja azzal az értékkel.

Nem nagyon akarlak lelombozni, de ha a konstruktorok sincsenek meg, akkor azért még nagyon sok tanulnivaló áll előtted :)

DRM is theft

(#3779) Hunmugli


Hunmugli
aktív tag

Az a kérdésem van, hogy az alábbi kód miért fordul le gcc 4.9-cel?:

#include <iostream>
using namespace std;

class asd {
public:
int i = 3;
beallit (); //ez nincs is kifejtve
kiir(); //itt sincs tipusmeghatarozas
private:
double a = 4.3; //ez szabalyos?
};

int main()
{
asd asdobj;
cout << asdobj.i << endl;
cout << asdobj.kiir();
return 0;
}

asd::kiir () {
cout << this->a << endl;
return this->a; //es a return int-et ad vissza
}

Tudom, hogy hibás, stb, de az én gépemen lefordul (cpp.sh-n nem). Ez annak tudható be, hogy a gcc 4.9.2 nem elég friss?

A kevés tudás veszélyes. A sok is. – Bocs az offért.

(#3780) kispx válasza Hunmugli (#3779) üzenetére


kispx
addikt

kiir:
A függvények alapértelmezett visszatérési típusa int. Emiatt nincs kiírva az int és tér vissza int-tel.

Amíg nem hívod meg a beallit() metódust, addig nem mindegyik fordítónál hiba. Amit megakarod hívni, undefined reference to asd::beallit hibaüzenetet kapsz.

double a = 4.3
Default member initializer

(#3781) dobragab válasza Hunmugli (#3779) üzenetére


dobragab
addikt

C++ szabvány nem engedi meg, hogy ne legyen megadva a visszatérési érték. GCC 4.9 ezek szerint sz*rik rá, ahogy sok minden másra is. [link]

Nem definiált függvény csak akkor fordítási (linkelési) hiba, ha meg is hívod. Ezt gyakran kihasználjuk, pl. template metaprogramozásnál.

int func(int);
double func(char);

using T = decltype(func(1)); // T == int

(#3777) EQMontoya

Jogos, erre nem gondoltam. Azt hittem, pointerként kéne kiírnia (%p lenne printf-nél), mert ugye függvénypointer.

Ezek szerint a kiírásra nincs függvénypointer-overload (persze, C++98-ban nem lehetne megcsinálni, utána meg kompatibilitási okok miatt nem vezetnék be soha). Fptr -> void* konverzió pedig adatszegmens - utasításszegmens okok miatt nem implicit. Pedig void*-os overload van.

[ Szerkesztve ]

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3783) sztanozs válasza boga (#3782) üzenetére


sztanozs
veterán

Szia! Állásajánlatokat ide pls:[link]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#3784) nji


nji
aktív tag

sziasztok,
április végére kellene felsőfokú oktatási intézménybe egy kettes szintet összehozni. :)

Nagyjából ez az anyag:
- Ciklusok, függvények
-Referenciák, makrók
- Struktúrák, paraméterátadás
- tömbök
- Default függvényparaméter, rekurzió
- Névtér, header
- Osztályok (struktúrák)
- Operátor túlterhelés
- Destruktor, copy konstruktor, copy assignment
- Sablon, öröklés
- virtuális függvények,
- kivételkezelés.

Egyelőre csak a ciklusok, függvények és tömbök mennek, az előző félévi C tanulmányokból.
A kérdésem:
hogyan készüljek fel célzottan egy kettesre ? (40 % a kettes, öt programot kell írni, abból kettő működjön)

Néztem youtube videot, tutorialspointot is olvasom, az 1300 oldalas Stroustrup könyvet is letöltöttem, de ezt két hónap alatt lehetetlen munka mellett átnézni.
Kellene valami jó stratégia, ami lényegre törő és át lehet menni a vizsgán. Utána majd úgyis lesz idő gyakorolni, ha valaha is ilyen állásom lesz, de az még messze van.

Ezt a fórumot érdemes visszaolvasni?
Köszi a tippeket.

(#3785) EQMontoya válasza nji (#3784) üzenetére


EQMontoya
veterán

Mi volna, ha például elkezdenél... nekiállni? :)
Két hónap alatt ez nagyon sima liba.

Same rules apply!

(#3786) pvt.peter válasza nji (#3784) üzenetére


pvt.peter
őstag

korábbi évek vizsga anyagaiból való felkészülés?

Ez egy .50-es rombolópuska, elég szép visszarúgással.

(#3787) nji válasza EQMontoya (#3785) üzenetére


nji
aktív tag

Nekiállok, ez nem kérdés, de hogyan lehet egységnyi idő alatt legjobban felkészülni:
- a könyvet olvasva,
- youtube-ot nézve,
- tutorialt olvasva,
- telefonon a SoloLearn programmal?
Napi nyolc órát dolgozom, hétvégén házimunka, tehát max. napi egy órám van rá esténként.
Ezért szerettem volna megtudni a gyakorlott szakemberektől, hogy mi a legjobb módszer.

(#3788) nji válasza pvt.peter (#3786) üzenetére


nji
aktív tag

Sajnos ilyen adatok nem állnak rendelkezésemre, esetleg más iskolák vizsgasorai, de nekünk úgysem olyanok lesznek.

(#3789) dabadab válasza nji (#3787) üzenetére


dabadab
titán

A legjobb módszer az, ha csinálod.
Elolvasol valami alap tutorialt, hogy nagyjából képben legyél, kitalálsz valami feladatot, megcsinálod.

[ Szerkesztve ]

DRM is theft

(#3790) sztanozs válasza nji (#3787) üzenetére


sztanozs
veterán

Esetleg lenyomod ezt a tréninget, csak netto 17 óra, 3 hét alatt megvan esténként: [link]

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#3791) EQMontoya válasza nji (#3788) üzenetére


EQMontoya
veterán

Kis jegyzet

Same rules apply!

(#3792) nji


nji
aktív tag

Köszönöm a két utolsó tippet. Elkezdem az udemy tréninget, aztán ha valahol elakadok, megnézem a BME jegyzetben.

(#3793) nji


nji
aktív tag

esetleg kidolgozott feladatokat/forráskódokat tudtok linkelni?

(#3794) mezis


mezis
nagyúr

Üdv.!

Tanulom a C++-t és az U++ fejlesztő rendszert.

Az elérhető fontkészlet demo programja rendben működik az eredeti utasítás sorral:

fontlist.Add(i, Font::GetFaceName(i));

Font.cpp
Fontkeszlet: 1 file(s) built in (0:04.46), 4461 msecs / file, duration = 4477 msecs, parallelization 0%

OK. (0:04.49)

Kicseréltem a használhatóbbnak gondolt utasításra:

fontlist.Add(i, Font::GetFaceNameStd(i));

Az alábbi hiba üzenet a fordítás eredménye:
error: no matching function for call to 'Upp::Font::GetFaceNameStd(int&)'

A Help szerint ennek működnie kellene:
"String GetFaceName() const
Returns the face-name text for current instance.

String GetFaceNameStd() const
Similar to GetFaceName, but returns generic names "serif", "sansserif", "monospace", "STDFONT" for corresponding faces, instead of real names."

Valamit elrontottam ?

mezis

(#3795) Lejszi


Lejszi
senior tag

Sziasztok! Csak kost kezdek ismerkedni a c++ nyelvvel. Miert nem akar mukodni a progi?
Tudna vki segiteni? Mit rontottal el? Koszonom.

#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;

int main()

{
int a, b;
cout << "Please enter the first number: ";
cin >> a;
cout << "Please enter the second number: ";
cin >> b;
cout << "sum is " << a + b << "\n";

int n, i, flag = 0;
cout << "Enter a positive integer: ";
cin >> n;
for (i = 2; i <= n / 2; ++i)
{
if (n&i == 0)
{
flag = 1;
break;
}
}
if (flag == 0)
cout << "This is a prime numer";
else
cout << "This is not a prime number";
_getch();

return 0;
}

update:
megvan! % kellett volna hasznalnom a & helyett.
Silly me :))

[ Szerkesztve ]

(#3796) EQMontoya válasza Lejszi (#3795) üzenetére


EQMontoya
veterán

Prímtesztelést elég a gyökig végezni, tehát i*i <= n

Same rules apply!

(#3797) Hunmugli


Hunmugli
aktív tag

Sziasztok!

Egyik ismerősöm ma ezt kérdezte tőlem:
"help

struct struktura {...};
struktura** s = ...;

Ezt hogy kell szebben irni??? `(*s)->data`
Nagyon rondaaaaa"

Én még mindig kezdő stádiumban vagyok, úgyhogy inkább csak poénból kérdezte, de mutatott egy kódot, és tényleg ráférne, hogy szebb legyen. Én szoktam tőle kérdezni :) Jöhet bármilyen megoldás, ami "szebb", csak ne veszítsen értékéből a kód [kell mind2 *].

És egy saját kérdés:
van egy char, ami binárisan mondjuk így néz ki [hogy pontosan melyik, az nem fontos]:
char C = 001 000 100

Nos, ha van egy int N bemenő adat, akkor hogy lehet C N-edik bitjét minél egyszerűbben:
-lekérdezni (módosítás nélkül),
-biztosan igazzá tenni,
-biztosan hamissá tenni?

Olvasgattam a bitenkénti műveletekről, meg a shift operátorokról, de nem akar működni a dolog :( Amúgy sem sikerül elképzelnem 100%, mert a fejemben egy hang ezt mondja: "Baloldalt egy char van, jobboldalt egy bit, ez nem fog menni".

C bitjei balról jobbra vannak számozva, 0tól kezdődően 7ig. Function szerűen kéne, pl
bool lekerdez (int N) {...}
Szakirodalommal nem vagyok kisegítve, ezért kérdeztem. Most egy class-t írok gyakorlásképp, ami kb annyit tudna, mint egy bool tömb, csak mivel ebben bitenként lennének az értékek, 8x olyan kevés helyet foglalna.

A kevés tudás veszélyes. A sok is. – Bocs az offért.

(#3798) dobragab válasza Hunmugli (#3797) üzenetére


dobragab
addikt

Nem lehet szebben írni, de az tuti nem C++ kód. C++-ban már sima pointereket is elvétve használunk, ahol ** van, az legfeljebb C+. ;)

Majd talán ebből megérted a bitműveleteket. :)

[ Szerkesztve ]

Tudom, tudom, akasszak a tökömre egy lámpát, hogy sötétben is tudjak kaszálni.

(#3799) Domonkos válasza Hunmugli (#3797) üzenetére


Domonkos
Ármester

Ha a leheto legegyszerubben akarnam megcsinalni, akkor valahogy igy tennem:

C N. bitjenek beallitasa:
C |= (1<<N);

Egyetlen bit torlese:
C &= ~(1<<N);

Egyetlen bit lekerdezese:
C & (1<<N);

Itt termeszetesen a legkisebb helyiertektol es 0-tol szamozodnak a bitek. Hogy hogy ontod osztalyba, mar rad bizom. ;)
Meg par ellenorzessel is elferne. :K
Ha jol optimalizal a fordito, akkor ez a legtobb architecturan egy-egy utasitas lesz a binarisban.

[ Szerkesztve ]

Gender of electrical connectors is defined by the pins.

(#3800) Hunmugli válasza Domonkos (#3799) üzenetére


Hunmugli
aktív tag

Én is valahogy így próbáltam, de eddig nem nagyon jött be. Mondjuk úgy, nekem nem működik :DDD

dobragab, neked is köszönöm a választ, még olvasgatom a linket. Ha minden jól megy, még márciusban elkészülök, és lehet írni az észrevételeket.

:R

A kevés tudás veszélyes. A sok is. – Bocs az offért.

Copyright © 2000-2024 PROHARDVER Informatikai Kft.