Hirdetés

2024. április 26., péntek

Gyorskeresés

Hozzászólások

(#4401) Tomi_78


Tomi_78
tag

Sziasztok ismét, szakértők!

Felmerült még pár hiba kicsiny programom fejlesztése közben, amit segítség nélkül nem tudok megoldani.
Az első, hogy így íratok ki szöveget:
static const WCHAR pontszoveg[]= L"PONTJAID:";
TextOut(Memhdc,80,4,pontszoveg,wcslen(pontszoveg));


ami így jó is, viszont számokat már nem tudok kiíratni, mert pl. erre:
char jatpontjai[3];
itoa(jatekospontjai,jatpontjai,10);
TextOut(Memhdc,80,4+28,jatpontjai,wcslen(jatpontjai));

már ezt a hibaüzenetet kapom:
|911|error: cannot convert 'char*' to 'const wchar_t*' for argument '1' to 'size_t wcslen(const wchar_t*)'|
A második kérdésem, hogy meg lehet-e határozni és ha igen, akkor hogyan egy ilyen szöveg képpontokban mért szélességét, hogy a képernyő közepére lehessen kiírni:
static const WCHAR cimszoveg[]= L"Játék címe";
TextOut(Memhdc, ablakszel/2,4,cimszoveg,wcslen(cimszoveg));
és végül, le lehet-e valahogy tiltani a játékablak átméretezhetőségének lehetőségét, hogy a felhasználó csak egy fix, teljesképernyős módban használhassa a programot?

(#4402) kispx válasza Tomi_78 (#4401) üzenetére


kispx
addikt

1) _itow
2) [link]
3) [link]

[ Szerkesztve ]

(#4403) Tomi_78 válasza kispx (#4402) üzenetére


Tomi_78
tag

Hű, köszönöm szépen, Kispx!
Így már működik a számváltozók kiíratása:
WCHAR jateleteidb[3];
_itow(jatekoseletei,jateleteidb,10);
TextOut(Memhdc,4,4+28,jateleteidb,wcslen(jateleteidb));

A másik kettőt még próbálom kibogozni... :K

(#4404) MiniXD55


MiniXD55
tag

Sziasztok!
Szeretnék segítséget kérni, visual studio 2019-el kezdek programozni, és jelenleg egy olyan problémába futok bele minden egyes feladatnál, hogy a visual studio nem akarja megnyitni az adott txt file-t. A következő error kódot kapom: MSB8020 BUILD TOOLS V143.
Tudnátok ebben segíteni, hogy mi lehet a probléma?
Próbáltam a debug mappába berakni a fájlt, de ott se találja illetve próbáltam manuálisan tallózni, de akkor se akarta.
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
string datum[400];
string nev[400];
string resz[400];
int hossz[400];
int latta[400];
int n = 0;
ifstream be;
be.open("lista-1.txt",);
while(!be.eof())
{
be >> datum[n] >> nev[n] >> resz[n] >> hossz[n] >> latta[n];
n++;
}

"Hard work, dedication. I'm a one man army."- Floyd Mayweather

(#4405) dabadab válasza MiniXD55 (#4404) üzenetére


dabadab
titán

Az MSB8020 hibakód azt jelenti, hogy a v143 build toolst nem találja.

Indítsd el a Visual Studio Installert és ott ikszeld be, hogy felrakja.

DRM is theft

(#4406) MiniXD55 válasza dabadab (#4405) üzenetére


MiniXD55
tag


Én itt nem látom sehol

[ Szerkesztve ]

"Hard work, dedication. I'm a one man army."- Floyd Mayweather

(#4407) dabadab válasza MiniXD55 (#4406) üzenetére


dabadab
titán

Akkor állítsd át a solutiont, hogy v142-vel forduljon (a Solution Explorerben a solution nevén jobb klikk, "Retarget solution").

DRM is theft

(#4408) MiniXD55


MiniXD55
tag

Sziasztok!
Újra én lennék az akinek segíteni kellene, mellékelek egy képet illetve a kódot is amit írtam:

#include <iostream>
#include <fstream>
#include <math.h>
#include <iomanip>

using namespace std;

int eltelt(int ido1, int ido2);

int main()
{
int ora[1000];
int perc[1000];
int mperc[1000];
int xkor[1000];
int ykor[1000];
int ido[1000];
int darab=0;
cout << "1. feladat" << endl;

ifstream befajl;
befajl.open("jel.txt");
while(!befajl.eof())
{
befajl >> ora[darab] >> perc[darab] >> mperc[darab] >> xkor[darab] >> ykor[darab];
darab++;
}
for(int i=0; i<darab-1;i++)
{
ido[i]=ora[i]*3600 + perc[i]*60 + mperc[i];
//cout << ora[i] << perc[i] << mperc[i] << xkor[i] << ykor[i] << endl;
//cout << ido[i] << endl;
}
befajl.close();

cout << "2. feladat" << endl;
int sorszam;
cout << "Adja meg a jel sorszámát! ";
//cin >> sorszam;
sorszam = 3;
cout << "x=" << xkor[sorszam-1] << " y=" << ykor[sorszam-1];
int eltelt_ido=eltelt(ido[0],ido[darab-2]);
cout << "4. feladat\nIdotartam: " << eltelt_ido/3600 << ":" << eltelt(ido[0],ido[darab-2])/60%60 <<":" << eltelt(ido[0],ido[darab-2])%60;

cout << "5. feladat" << endl;
int min_x=xkor[0];
int min_y=ykor[0];
int max_x=xkor[0];
int max_y=ykor[0];
for(int i=0; i<darab-1;i++)
{
if (min_x>xkor[i]) min_x=xkor[i];
if (min_y>ykor[i]) min_y=ykor[i];
if (max_x<xkor[i]) max_x=xkor[i];
if (max_y<ykor[i]) max_y=ykor[i];
}
cout << "Bal alsó: " << min_x << " " << min_y << ", jobb felsõ: " << max_x << " " << max_y;

cout << "6. feladat" << endl;
float elmozdulas=0.000;
for(int i=0; i<darab-2;i++)
{
elmozdulas+=sqrt(pow(xkor[i]-xkor[i+1],2)+pow(ykor[i]-ykor[i+1],2));
//cout << elmozdulas << endl;
}

cout << round(elmozdulas);

return 0;
}

int eltelt(int ido1, int ido2)
{
return abs(ido2-ido1);
}

[ Szerkesztve ]

"Hard work, dedication. I'm a one man army."- Floyd Mayweather

(#4409) cattus válasza MiniXD55 (#4408) üzenetére


cattus
őstag

A screenshot szerint 1459 sort olvasol be (darab változó értéke), de csak 100 elemszámú tömböket hozol létre.

Do the thing!

(#4410) MiniXD55 válasza cattus (#4409) üzenetére


MiniXD55
tag

Hiába írom át, ugyan ezt dobja fel

"Hard work, dedication. I'm a one man army."- Floyd Mayweather

(#4411) MiniXD55 válasza MiniXD55 (#4410) üzenetére


MiniXD55
tag

wait, miért nőtt meg a darab is?

"Hard work, dedication. I'm a one man army."- Floyd Mayweather

(#4412) daninet


daninet
veterán

Sziasztok!
Teljesen noob kérdés:
Random int számot kellene generálnom egy mikrokontrolleren, de nincs órája és limitált a memória. Szóval kóddal kellene megoldalni anélkül, hogy behívok bármilyen library-t.
Végignéztem a keresőben egy csomó találatot de mindenhol az órával variálnak. Nekem ugyanez kóddal kell, valami memória hash-elős akármilyen trükkel.
Hogyan oldható ez meg?

Miért vegyem meg, ha 3x annyiért, 3x annyi idő alatt megépíthetem? ´¯`·.¸¸.·´¯`·.¸><(((º>

(#4413) sztanozs válasza daninet (#4412) üzenetére


sztanozs
veterán

Amit tudsz csinalni az az, hogy eltarolod az utolso erteket az epromban es a kovetkezo inditaskor azt hasznalod seednek... mondjuk ez eleg gyorsan le tudja gyilkolni az epromot, de ha van egy barmi mas (irast jobban turo) perzisztens memoriad, akkor az mar jobb lehet...

[ 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...

(#4414) dabadab válasza MiniXD55 (#4411) üzenetére


dabadab
titán

Hát, akkor ideje lenne megismerkedni a C++-os konténerekkel :)

Mondjuk az std::vector használatához alig valami kell változtatni.

[ Szerkesztve ]

DRM is theft

(#4415) dabadab válasza daninet (#4412) üzenetére


dabadab
titán

A tök sima random seedelés nélkül nem jó? Annyi hátránya van, hogy a program minden újraindítása után ugyanazt a számsorozatot generálja, de nem tudom, hogy ez nálad baj-e.

És biztos, hogy ezt a C++ topikban akartad kérdezni? :)

[ Szerkesztve ]

DRM is theft

(#4416) daninet válasza dabadab (#4415) üzenetére


daninet
veterán

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 :DDD , 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-t

mod: 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

[ Szerkesztve ]

Miért vegyem meg, ha 3x annyiért, 3x annyi idő alatt megépíthetem? ´¯`·.¸¸.·´¯`·.¸><(((º>

(#4417) DrojDtroll válasza daninet (#4416) üzenetére


DrojDtroll
addikt

Valamelyik ananlog pinre akasztanek egy szenzort, es azt hasznalnam emtropiakent.

(#4418) daninet válasza DrojDtroll (#4417) üzenetére


daninet
veterán

Igen, meg az első homingnál lehetne az időt mérni, mert ugye mindig máskor kapcsolom ki. Vannak elméleti ötleteim. Ezt egy arduinonál még lehet megoldanám, csak itt bőven meghaladja a képességeimet.
Azt is elfogadom válasznak, ha nem lehet ennyivel megoldani, valamiért azt várom picit lesz valaminegysoros akármi amit oda berakhatok és menni fog. De azt is elfogadom válasznak ha nincs ilyen.

Miért vegyem meg, ha 3x annyiért, 3x annyi idő alatt megépíthetem? ´¯`·.¸¸.·´¯`·.¸><(((º>

(#4419) kispx válasza daninet (#4416) üzenetére


kispx
addikt

A mikrokontroller azt se tudja megmondani, hogy a bekapcsolás után hány milliszekundum telt el? Ha jól gondolom, akkor a homing sequence nem milliszekundum pontosan fog lefutni, és utána ezzel az értékkel lehetne inicializálni egy random szám generátort.

(#4420) MiniXD55 válasza dabadab (#4414) üzenetére


MiniXD55
tag

Írtam privátüzenetet, láttad esetleg?

"Hard work, dedication. I'm a one man army."- Floyd Mayweather

(#4421) MiniXD55 válasza dabadab (#4414) üzenetére


MiniXD55
tag

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.

"Hard work, dedication. I'm a one man army."- Floyd Mayweather

(#4422) CPT.Pirk


CPT.Pirk
Jómunkásember

Sziasztok,

Arduino alatt működő, stewart platform koordináta transzformáló kód részletet szeretnék átvinni az őt irányító Raspberry-re, mert egyszerűen nem végez időben a gyenge kis Arduino a számításokkal.

Az Rpi-n fut a szerkezet vezérlő programja, ahová ebben a formában beépítettem: https://pastebin.com/PHkg33Xh

Nincs fordítási hibám, de mikor ehhez a sorhoz ér a kód futása, akkor elszáll a program hibaüzi nélkül:
platEnd[motor].x = rotationMatrix[0] * (platStart[motor].x - poi.x) + rotationMatrix[1] * (platStart[motor].y - poi.y) + rotationMatrix[2] * (platStart[motor].z - poi.z) + x + (platStart[motor].x - poi.x);
Akkor is, ha csak ennyi van ott: platEnd[motor].x = rotationMatrix[0];
A baloldali rész az int16, az egyenlőség jobb oldalán float van.

Próbáltam castolni igy, de elhal így is: platEnd[motor].x = static_cast<int16_t>rotationMatrix[0];
Viszont ha kézzel odaírok egy platEnd[motor].x = 12,3; -at, akkor azzal semmi baja.

Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)

(#4423) dabadab válasza CPT.Pirk (#4422) üzenetére


dabadab
titán

A 12,3 az sima int, konkrétan 3 :)
A 12.3 (ponttal) a float.
Ha floor()-ral gyártasz intet floatból, az jó? a

DRM is theft

(#4424) CPT.Pirk válasza dabadab (#4423) üzenetére


CPT.Pirk
Jómunkásember

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... :)

[ Szerkesztve ]

Nincs más - csak egy szál gitár - szidom a rendszert - forradalmár. - Én vagyok egyedül 88 telén. (Auróra)

(#4425) MiniXD55 válasza MiniXD55 (#4410) üzenetére


MiniXD55
tag

Mint kiedrült, ennek a dll a pótlásával sikerült megbírkoznom, de onnan jött a következő menet, jelenleg ebbe a hibába ütközöm:

"Hard work, dedication. I'm a one man army."- Floyd Mayweather

(#4426) MiniXD55 válasza MiniXD55 (#4425) üzenetére


MiniXD55
tag

Ha kikommentelem a bool utáni rész a program teljesen szuperül lefut.

"Hard work, dedication. I'm a one man army."- Floyd Mayweather

(#4427) kispx válasza MiniXD55 (#4425) üzenetére


kispx
addikt

Amit használni szeretnél, azt úgy hívják, hogy Variable Length Array (VLA). Az MSVC++ nem támogatja.
Használhatsz helyette dinamikusan allokált tömböt: bool* ultetve = new bool[darab];
Vagy az std::vector osztályt

[ Szerkesztve ]

(#4428) MiniXD55 válasza MiniXD55 (#4426) üzenetére


MiniXD55
tag

bool ultetve[darab];
for (int i = 0; i < darab; i++) ultetve[i] = false; // kezdetben nincs egyikse ültetve
int beultetes = 0;
int felajanlasok = 0;
int seged5;
int i = 0;
for (i = 0; i < darab; i++)
{
//cout << kezdet[i] << " " << veg[i] << endl;
if (kezdet[i] < veg[i]) seged5 = 0;
else seged5 = kezdet[i];
//cout << seged5 << endl;
if (veg[i] >= kezdet[i])
for (int l = kezdet[i]; l < veg[i] + 1; l++)
{
felajanlasok++;
//cout << kezdet[i];// pl 1-3 esetén csak kkettőig futna le, mivel 3 nem kisebb mint 3
ultetve[i - 1] = true;
}
}
for (int i = 0; i < darab; i++) cout << ultetve[i] << " " ;
for (int i = 0; i < darab; i++) if (ultetve[i]) beultetes++;
{
//cout << beultetes;
if (darab == beultetes) cout << "Minden agyas beültetésére van jelentkezo.";
else if (felajanlasok >= darab) cout << "Atszervezessel megoldhato a beultetes.";
else cout << "A beultetes nem oldhato meg.";
}
string virag_szine[agyasokszama] = {""};
int virag_sorszam[agyasokszama] = { 0 };
for (int i = 0; i < agyasokszama; i++)
{
virag_szine[i] = "#";
virag_sorszam[i] = 0;
}
for (int m = 0; m < darab; i++)
{
for (int n = 0; n < agyasokszama; i++)
{
if (virag_szine[n] == "#")
{
if (n >= kezdet[m])
{
virag_szine[n] = szin[m];
virag_sorszam[n] = m + 1;
}
}
}
}
for (int i = 0; i < darab; i++)
{
cout << virag_szine[i] << " " << virag_sorszam << endl;
}
return 0;
}

[ Szerkesztve ]

"Hard work, dedication. I'm a one man army."- Floyd Mayweather

(#4429) MiniXD55 válasza kispx (#4427) üzenetére


MiniXD55
tag

Értem, de nem csak a bool-al van problémája hanem int-ekkel is

"Hard work, dedication. I'm a one man army."- Floyd Mayweather

(#4430) kispx válasza MiniXD55 (#4429) üzenetére


kispx
addikt

string virag_szine[agyasokszama] = {""};
int virag_sorszam[agyasokszama] = { 0 };

Ezt a két sor is át kell írni std:vectorra vagy dinamikusan allokált tömbre.
Ha átvan, akkor milyen hibaüzenetet ír ki a fordító?

(#4431) MiniXD55 válasza kispx (#4430) üzenetére


MiniXD55
tag

Teljesen suta vagyok a vektorokkal kapcsolatban, így gondoltad?

"Hard work, dedication. I'm a one man army."- Floyd Mayweather

(#4432) kispx válasza MiniXD55 (#4431) üzenetére


kispx
addikt

vector<string> virag_szine(agyasokszama, "");
vector<int> virag_sorszam(agyasokszama, 0);

De linkelek egy tutorialt hozzá: https://www.codeguru.com/cplusplus/c-tutorial-a-beginners-guide-to-stdvector-part-1/ [link] , mert az eszközöket ismerete nélkül nem lehet programot írni.

(#4433) cog777


cog777
senior tag

cmake kerdesem van. Egy eleg nagy projektben (600 cmakefiles) kell egy uj ficsort keszitenem. A problema a korkoros dependency.
Szoval protokol modul hasznalta a driver-t. Driver object-kent volt, protocol static-kent forditva.
Most az uj ficsor a driver-bol hasznal protokolt. Igy cmake kiirta hogy ez biza cyclic dependency es legalabb 1 target nem static.Valoban, driver nem az.
Nosza allittsuk at object-rol static-ra.
Lefordul, orom bodotta.
Vazz, a ficsor kodja lefordul, latom a logban de nem linkelodik ossze es nem is tudok breakpoint-ot tenni ra. Mikor objectkent volt linkelve akkor breakpoint mukodott.

Persze, megallapitottuk hogy ezt a reszt ujra kellene strukturalni, de most 1 ideiglenes megoldast kell csinalnom.

Megkoszonom ha valaki hozza tudna szolni a szituaciohoz es adni tanacsot :R

HP ZBook Workstation A3000 - Linux Mint; Raspberry Pi4 - Raspbian

(#4434) cog777 válasza cog777 (#4433) üzenetére


cog777
senior tag

Szerencsere dobtuk az otletet. :C

HP ZBook Workstation A3000 - Linux Mint; Raspberry Pi4 - Raspbian

(#4435) pocokxx


pocokxx
Közösségépítő

Sziasztok!

Egy-két amatőr kérdéssel fárasztanám a társaságot. Codeblocks-sal proóbálkozom.
A struct változót miért kell az int main() elé írni?
A struct mellé tömböt is deklarálni kell const paranccsal, aminek kötelező másik nevet adni?

"Egyformának lenni mindenkihez. Emberfeletti nagy szív kell ehhez." - Reményik Sándor

(#4436) dabadab válasza pocokxx (#4435) üzenetére


dabadab
titán

Hajjaj :)

A struct változót

A struct az nem változó, hanem egy típus leírása, pont úgy, ahogy a class is. Az ott csak a típusleírás, abból önmagában még nem keletkezik semmiféle változó.

Nálad valószínűleg azért kell odaraknod, mert a C++ fordító a fordítási egységben fentről lefele halad és ha azelőtt használsz egy típust, mielőtt megmondtad volna, hogy mi az, akkor az fordítási hibát okoz.

A struct mellé tömböt is deklarálni kell const paranccsal, aminek kötelező másik nevet adni?

A const nem parancs, hanem kulcsszó és a const tulajdonságot adja hozzá az adott deklarációhoz/definícióhoz (hogy az konkrétan mit jelent, az attól függ, hogy konkrétan mihez adod hozzá, változóknál pl. azt, hogy a kezdeti értékadáson túl nem lehet megváltoztatni az értéküket).

Egyébként amit ott csinálsz, az az, hogy létrehozod ténylegesen egy változót (amit a struct ugye nem csinál meg). Ennek nem kell feltétlenül tömbnek lennie (sőt, C++-ben a C stílusú tömbök leginkább kerülendők, mert csak a baj van velük), lehet egy sima változó is vagy valamilyen STL-es container, akármi.

Nem kötelező másik nevet adni, mert a C++ fordító van annyira okos, hogy tudja, hogy hol számíthat változó- és hol típusnévre, de nagyon érdemes, hogy ne legyen belőle keveredés (az elég bevett konvenció, hogy a típusnevek nagybetűvel kezdődnek, a változók meg kisbetűvel).

De a kérdéseid alapján az látszik, hogy az alapok nagyon hiányoznak nálad, érdemes lenne legalább az elején elolvasni valami bevezető anyagot, pl. akár ezt (ez már csak azért is jó, mert ott a weboldalon a c++ fordító is, azzal nem kell külön vacakolni az elején, amikor még amúgy is minden nagyon zavaros).

DRM is theft

(#4437) pocokxx válasza dabadab (#4436) üzenetére


pocokxx
Közösségépítő

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?

[ Szerkesztve ]

"Egyformának lenni mindenkihez. Emberfeletti nagy szív kell ehhez." - Reményik Sándor

(#4438) cog777 válasza pocokxx (#4437) üzenetére


cog777
senior tag

Itt van egy lehetseges megoldas: [link]
Nagyon ajanlom az online szerkesztoket, meg debuggolni is lehet bennuk. Neha en is itt nezek meg ezt azt, amit regen hasznaltam es elfelejtettem.

HP ZBook Workstation A3000 - Linux Mint; Raspberry Pi4 - Raspbian

(#4439) dabadab válasza pocokxx (#4437) üzenetére


dabadab
titán

Azért javasoltam, hogy olvass el valamit, ami megadja az alapokat.

Ez, amit írtál, tulajdonképpen szintaktiailag helyes (a struct }-ja után mondjuk hiányzik egy pontosvessző meg a két utolsó cin után hiányzik a >>), meg lefordul, meg azt is csinálja, amit szeretnél (kivéve, ha pl. a user százegynél több nevet akar megadni (mert valamiért nem a MAX_NEVEK számára foglalsz tömböt, hanem annál eggyel többre)) - csak hát így nem írunk C++-t.

A "const" az inkább "constexpr" kellene, hogy legyen, mert az jól láthatóan fordítási idejű konstans, de nincs is rá szükség, mert a C stílusú tömbök azok pont ugyanannyira nem valók C++ kódba, mint a goto, tessék az STL-t használni, a vector<string> tökéletes ide.

Na, és ezek miatt kellene valami rendes anyag, amit használsz és kifejezetten friss, up-to-date kell (amit csinálsz az ránézésre valami magyar egyetemi jegyzetből lehet, mert a negyedévszázados C++ fejlesztői karrierem során csak ott találkoztam azzal, hogy stdin-ről olvasnak be dolgokat :DDD ), mert a C++ dinamikusan fejlődő nyelv.

DRM is theft

(#4440) pocokxx válasza dabadab (#4439) üzenetére


pocokxx
Közösségépítő

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;

"Egyformának lenni mindenkihez. Emberfeletti nagy szív kell ehhez." - Reményik Sándor

(#4441) dabadab válasza pocokxx (#4440) üzenetére


dabadab
titán

gondolom ezért foglalkozunk csak így vele.

Hát... hány éves vagy, királyfi?... :(

A kiválasztás (eldöntés + keresés) típusalgoritmusnál használhatok for ciklust simán bool nélkül?

Szerintem nem értem a kérdést.
A mellékelt kódban nem látszik, hogy az elsonegativindexe* hogyan és hol lett inicializáva (már ha egyáltalán), márpedig az az értéke nem fog változni, mert ha a bevittadatok[i]* negatív, akkor a for a ciklusfeltétel miatt pont azelőtt megszakítja a ciklust, hogy értéket adnál neki.

*: kódban ne használj magyar változóneveket és kommenteket. soha. tényleg soha.

[ Szerkesztve ]

DRM is theft

(#4442) pocokxx válasza dabadab (#4441) üzenetére


pocokxx
Közösségépítő

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...

"Egyformának lenni mindenkihez. Emberfeletti nagy szív kell ehhez." - Reményik Sándor

(#4443) Tomi_78


Tomi_78
tag

Sziasztok!

Van itt valaki, aki Code Blocks-t használ wxWidgets-szel C++ programozáshoz?
Azért kérdezem, mert én megpróbáltam volna ezt, és ehhez fel is telepítettem mindkettőt a számítógépemre (CB 20.03 és wxWidgets 3.2.4-et), megcsináltam a beállításokat, indítás után be is jön a GUI, de amikor futtatnám a programomat, mindig az
ld.exe cannot find -lwxmsw31ud
hibaüzenetet mutatja.
Mit jelent ez és hogyan javítható ki?

(#4444) dabadab válasza Tomi_78 (#4443) üzenetére


dabadab
titán

Disclaimer: se CodeBlocksot, se wxWidgetset nem használtam soha.

Ez azt jelenti, hogy nem találja a wxmsw31ud.lib könyvtárat (gondolom ez lehet a wxWidgets). Ennek oka lehet pl. az, hogy a 3.2.4-es verzióban ez wxmsw32ud.lib néven fut (vagyis szólni kellene a Code Blocksnak, hogy ne 3.1-et akarjon használni) ésvagy nincs jól beállítva a CodeBlocksban a wxWidgets elérési útja.

[ Szerkesztve ]

DRM is theft

(#4445) Tomi_78 válasza dabadab (#4444) üzenetére


Tomi_78
tag

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:

(#4446) dabadab válasza Tomi_78 (#4445) üzenetére


dabadab
titán

Hát, akkor a jelek szerint le kell vadásznod valahonnan egy 3.1.x-es wxWidgetset, mint legkézenfekvőbb megoldás.

DRM is theft

(#4447) Tomi_78 válasza dabadab (#4446) üzenetére


Tomi_78
tag

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.

(#4448) cog777


cog777
senior tag

Tud valaki c++ teszteket? Lehetoleg advanced level-t vagy magasabbat, akarok allas interjuzni a kozeljovoben es bizonyos dolgokban berozsdasodtam. Linkedin-en van par kurzus c++20-al kapcsolatban, de ugy erzem jo lenne teszteket csinalgatnom.

HP ZBook Workstation A3000 - Linux Mint; Raspberry Pi4 - Raspbian

(#4449) Tomi_78 válasza cog777 (#4448) üzenetére


Tomi_78
tag

Valami ilyesmikre gondoltál, mint:
[link]
vagy:
[link] ?
Nem tudom, milyen szintűek, de többek között ezeket adta ki a Google a "c++ programozás teszt" keresőszavakra.

(#4450) cog777 válasza Tomi_78 (#4449) üzenetére


cog777
senior tag

Koszi, az elsot nem tolti be. Igen, bar nekem evekkel korabban a Google sokszor nagyon alap kvizeket adott ki, ezt pl 25-bol 24-et sikerult eltalalnom, tul alap.

Most rakeresve "c++ quiz" kifejezesre, tobb tesztet talaltam, pl c++20 teszt. Bocs a zajt.
[link] , [link] , [link]

HP ZBook Workstation A3000 - Linux Mint; Raspberry Pi4 - Raspbian

(#4451) Archttila


Archttila
veterán
LOGOUT blog (1)

Sziasztok!
Nem vagyok programozo, ezert szuksegem lenne egy kis segitsegre az alabbi program forditasahoz [link] ( PKGBUILD [link] )
Szoval a lenyeg, hogy miutan helyrepofoztam a fuggosegeket, ninja az alabbi hibaval eldobja az egeszet [link]
Abban bizom, hogy csak az env reszt kell kiegesziteni valamivel a PKGBUILD-be. ;]
    )
    env CC=clang CXX=clang++ arch-meson .. ${_opts[@]}
    ninja
}
Az SACD tamogatas miatt lenne fontos hogy mukodjon..

[ Szerkesztve ]

Passionate about minimalistic software, the Linux philosophy, and having fun. SFF enthusiast.

(#4452) Archttila válasza Archttila (#4451) üzenetére


Archttila
veterán
LOGOUT blog (1)

Arra tudok meg gondolni, hogy valami regebbi clang verzioval kmpatibilis a kod.

Passionate about minimalistic software, the Linux philosophy, and having fun. SFF enthusiast.

(#4453) Archttila válasza Archttila (#4452) üzenetére


Archttila
veterán
LOGOUT blog (1)

Na, csak megoldottam :) most viszont a decodernel problemazik (de legalabb mar kozelebb vagyok a vegehez) :)

Found ninja-1.11.1 at /usr/bin/ninja
[456/733] Compiling C++ object src/decoder/plugins/libdecoder_plugins.a.p/FfmpegIo.cxx.o
FAILED: src/decoder/plugins/libdecoder_plugins.a.p/FfmpegIo.cxx.o
clang++ -Isrc/decoder/plugins/libdecoder_plugins.a.p -Isrc/decoder/plugins -I../src/decoder/plugins -Isrc -I../src -I. -I.. -Isrc/lib/sacdiso -I../src/lib/sacdiso -I../src/lib/sacdiso/libdstdec -I../src/lib/sacdiso/libdstdec/binding -I../src/lib/sacdiso/libdstdec/decoder -Isrc/lib/dvdaiso -I../src/lib/dvdaiso -I../src/lib/dvdaiso/libmlpdec -I../src/lib/dvdaiso/libmlpdec/libavutil -I../src/lib/dvdaiso/libudf -I/usr/include/spa-0.2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-6 -I/usr/include/opus -I/usr/include/pipewire-0.3 -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/libinstpatch-2 -I/usr/include/SDL2 -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_LIBCPP_ENABLE_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=c++2a -ffast-math -ftree-vectorize -Wcast-qual -Wdouble-promotion -Wmissing-declarations -Wshadow -Wunused -Wvla -Wwrite-strings -Wunreachable-code-aggressive -Wused-but-marked-unused -fno-threadsafe-statics -fmerge-all-constants -Wextra-semi -Wmismatched-tags -Woverloaded-virtual -Wsign-promo -Wno-non-virtual-dtor -Wcomma -Wheader-hygiene -Winconsistent-missing-destructor-override -Wsuggest-override -fvisibility=hidden -ffunction-sections -fdata-sections -D_GNU_SOURCE -march=native -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Wp,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/tmp/makepkg/mpd-sacd/src=/usr/src/debug/mpd-sacd -flto=auto -fPIC -pthread -D_REENTRANT -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -MD -MQ src/decoder/plugins/libdecoder_plugins.a.p/FfmpegIo.cxx.o -MF src/decoder/plugins/libdecoder_plugins.a.p/FfmpegIo.cxx.o.d -o src/decoder/plugins/libdecoder_plugins.a.p/FfmpegIo.cxx.o -c ../src/decoder/plugins/FfmpegIo.cxx
../src/decoder/plugins/FfmpegIo.cxx:28:10: error: use of undeclared identifier 'AVERROR_EOF'
28 | return AVERROR_EOF;
| ^
1 error generated.

Passionate about minimalistic software, the Linux philosophy, and having fun. SFF enthusiast.

(#4454) Archttila válasza Archttila (#4453) üzenetére


Archttila
veterán
LOGOUT blog (1)

Lefordult :))

Passionate about minimalistic software, the Linux philosophy, and having fun. SFF enthusiast.

Copyright © 2000-2024 PROHARDVER Informatikai Kft.