- Samsung Galaxy S22 Ultra - na, kinél van toll?
- Vivo X200 Pro - a kétszázát!
- Milyen okostelefont vegyek?
- iPhone topik
- Poco X5 Pro - ránézésre jó
- Szinte játékpénzért megvehető a Honor Play 10C
- Google Pixel topik
- Honor Magic7 Pro - kifinomult, költséges képalkotás
- Azonnali navigációs kérdések órája
- Mindenki Z Fold7-et akar
Hirdetés
Új hozzászólás Aktív témák
-
m.zmrzlina
senior tag
válasz
PandaMonium #4161 üzenetére
Köszönöm. Nem állítom hogy minden részletét értem de egy kicsit beljebb vagyok.
-
m.zmrzlina
senior tag
A string osztálynak van két tagfüggvénye a size() és a .length()
Azt olvasom itt:
Both string::size and string::length are synonyms and return the same value.Kérdésem, hogy miért kell két teljesen azonos tagfüggvény?
-
m.zmrzlina
senior tag
válasz
dangerzone #4026 üzenetére
Emelt szintű informatika érettségi programozás feladatok megoldásai itt és itt
Itt több mindenből kell kihámozni a programozás feladatokat és csak kevés van c++ -ban megoldva de lehet itt is keresgélni.
-
m.zmrzlina
senior tag
Ez sem kifejezetten C++ kérdés de gondolom nem ismeretlen a probléma.
Több(2) monitoros konfig esetén hogyan lehet beállítani, hogy a konzolablak ne az elsődleges, hanem a másodlagos monitoron jelenjen meg alapértelmezetten?
-
-
m.zmrzlina
senior tag
válasz
EQMontoya #4004 üzenetére
A világért sem szeretnék hitvitát generálni de ha már itt tartunk van e konszenzus (tudom nincsen) a szakmában hogy melyik ingyenes IDE-vel érdemes bajlódni (vagy mondjuk melyik hárommal)? Igen tudom, hogy a szakma nem ingyenes fejlesztőkörnyezeteket használ de mégis nagyobb rálátásotok van a témára mint pl a Pékek Országos Szakmai Fórumának.
Félreértés ne essék tudok guglizni (noha nagyon nem a barátom) inkább tapasztalatok érdekelnének. Egészen onnan hogy text editor >> parancssorból fordítás odáig hogy színes szagos IDE mindenféle kényelmi funkcióval.
-
m.zmrzlina
senior tag
válasz
PandaMonium #4006 üzenetére
Közben kiderült, hogy a linuxos verziónál viszont nem volt bekapcsolva a -std=c++11 flag.
Ezzel a módosításal le is fordul.Köszönöm a segítséget.
-
m.zmrzlina
senior tag
válasz
EQMontoya #4004 üzenetére
Akkor valamit nagyon elszúrok:
Ez van linux alatt:
xenon@xenon-P5QL-PRO /usr/bin $ gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609Ez a kód:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s = "1234";
int i = stoi(s);
return 0;
}A hibaüzenet itt is ugyanaz:
error: 'stoi' was not....stb...stb....
-
m.zmrzlina
senior tag
válasz
PandaMonium #4000 üzenetére
Ez az eredmény:
D:\c++\xxxxxxxxxx\main.cpp|73|error: 'stoi' is not a member of 'std'|
-
m.zmrzlina
senior tag
Egyik kódomban szeretném használni a stoi() fv-t de a fordító "error 'stoi' was not declared in this scope" hibaüzenetet dob.
A környezet:
Codeblocks v16.0.1
GNU GCC Compiler v. 4.9.2
A CodeBlocks-ban a Compiler settingsnél a "Have a g++ follow the C++ ISO C++ language standard [-std=c++11]" flag ki van pipálva.
A <string> fejlécállomány inkludálva.Mi lehet az oka a hibának?
-
m.zmrzlina
senior tag
válasz
dobragab #3986 üzenetére
Igen, pont erről van szó. Van egy switch-case-zel működő menürendszer ami gyárt egy 80x25-ös keretet illetve elhelyezi benne a kiírnivalókat.
Aztán a user válaszától függően vagy csak megjelenít pár sort vagy elindítja a játékot ami értelemszerűen nem pár sor. Ezt a blokkot próbáltam volna egyben kezelni de úgy látszik ennek nem ez a módja.
-
m.zmrzlina
senior tag
Az rendben van, hogy egy függvény deklarációját a meghívása előtt kel elhelyezni a programban de mennyire elfogadott az, hogy ha egy függvényt bizonyosan csak egy másik függvényben fogunk meghívni (és azon kívül biztosan nem) akkor magát a hívott fv-t a hívó belsejében deklarálom és ott is fejtem ki (definiálom)?
Számomra kicsit átláthatóbbá tenné a programot de nem tudom, hogy van-e erre vonatkozó konvenció.
-
m.zmrzlina
senior tag
-
m.zmrzlina
senior tag
Dolgozom egy programon amihez szeretnék menüt készíteni Több irányból nekiszaladtam már, értem is el némi eredményt. Az első változatban textfájlban letároltam a képernyőképeket és azokat írtam ki képernyőre a user válaszától függően.
A második változatban C tipusú tömb változóban tárolom a kiírnivalót és azt írom ki egy switch szerkezetbe rakosgatott fv segítségével. Itt lehet megnézni.
Ennek az a hibája, hogy egyrészt már öt menüpont esetén is szinte kezelhetetlen a kiíró fv paraméterlistája plusz minden menüpont sztringjét és a sztring méretét külön tárolja és adja át a fv-nek ami több almenü esetén megint rettentő terjedelmes kódot eredményezne.
Biztos vagyok benne, hogy van egyszerűbb út, csak nem tudom merre. Jól jönne pár tipp.
-
m.zmrzlina
senior tag
Ezek után teljesen felesleges még 3 változót létrehozni, nem leszel előrébb semmivel.
Ezt értem és el is fogadom csak számomra talán valamivel átláthatóbb lenne a program ha végig ugyanaz a név jelöli ugyanazt a változót nem pl úgy hogy ami a mainben "egyik" az a fvAkármiben "a" de ha a fvAkármi meghívja a fvMásvalamit akkor ott már ugyanaz a változó lehet akár "c" is. Ezért kérdeztem hogy mi itt a best pactice.
a függvény deklarációjánál nem fontos neveket megadni, de definíciónál annál inkább,
Úgy kell ezt érteni, hogy az előbbi példánál maradva a következő megoldás teljesen jó?
int fvAkármi(int,int,int);
int main(){
}
int fvAkarmi(int a,int b,int c){
return (a+b)*c;
} -
m.zmrzlina
senior tag
Az érdekelne, hogy mi a programozói gyakorlat a függvény prototipusok esetében?
Van pl egy ilyen fv-em:
int fvAkarmi(int a,int b,int c);
meghívom a mainből
int main(){
int egyik=2;
int masik=5;
int harmadik=10;
int eredmeny=0;
eredmeny=fvAkarmi(egyik, masik, harmadik);
cout<<eredmeny;
}int fvAkarmi(int a,int b,int c){
return (a+b)*c;
}Nekem úgy lenne logikus, hogy a függvényben először létrehoznék három változót (akár a main-ben használt nevükön) és átadnám nekik az argumentumokat és azokat használnám tovább.
Láttam olyat is, hogy a prototipusban nincs is név adva az argumentumnak csak a tipusa van megadva. Ebben az esetben mivel azonosítom (hogyan használom) a fv-ben az egyes argumentumokat?
-
m.zmrzlina
senior tag
válasz
PandaMonium #3966 üzenetére
Miért keresnél egyáltalán ilyet?
Semmi különös oka nincs csak volt egy jelenség amit nem értettem. (ha csak egy volna)
Egy tab-bal tagolt fájlban az n. sor utolsó és az n+1. sor első eleme között ez a két karakter látszik (Notepad ++) és gondoltam, ha már a \n megtalálható akkor az \r is.
Egyébként álítólag ha windowson text módban nyitunk meg egy fájlt akkor a sorvégi \r\n kombináció lecserélődik \n-re ezzért nem lehet megtalálni az \r-t. Bináris módban kell megnyitni és akkor ott lesz mindkettő.
Nem magamtól vagyok ilyen okos itt olvastam.
-
m.zmrzlina
senior tag
Van itt ez a függvény:
void readToArray(array<string,ARR_SIZE> &arr){
string word;
int crPos=0;
ifstream file("napok.txt");
if(file.is_open())
{
for(int i = 0; i < ARR_SIZE; ++i)
{
getline(file,word,'\t');
arr[i]=word;
if(i==ARR_SIZE-1){
for(size_t i=0;i<word.length();i++)
crPos=word.find('\n');
cout<<crPos;
}
}
}
}Egy TAB-bal tagolt fájlból olvas be egy sort egy tömbbe szavanként. Az
arr[i]=word;
utáni rész az utolsó tömbelemben keresi meg a '\n' karaktert. Szépen működik is. Azonban ha a '\r'-t szeretném megkeresni vele akkor nem ad vissza értékelhető találatot.Mi erre a magyarázat?
-
m.zmrzlina
senior tag
Van két db kétdimenziós tömböm. Az egyik int a másik char tipusú adatokat tárol. Ki szeretném iratni mindkettőt ugyanazzal a függvénnyel. Azt olvasom itt, hogy a template-ek pont ilyen feladatokra valók (ti. amikor kb ugyanaz a függvény csak más tipusú változókkal dolgozik)
El is készítettem a templatet:
template <class T>
T print2DArray(const array<array<T,COL_MAX>, ROW_MAX> &a){
cout<<" "; //column header
for(int i=0;i<COL_MAX;i++){
cout<<i<<" ";
}
cout<<endl;
for(int i=0;i<ROW_MAX;i++){ //array body
cout<<i<<" ";
for (int j=0;j<COL_MAX;j++){
cout<<a[i][j]<<" ";
if(j==COL_MAX-1) cout<<i<<endl;
}
}
cout<<" "; //column footer
for(int i=0;i<COL_MAX;i++){
cout<<i<<" ";
}
cout<<endl<<endl;
return 0;
}Aztán meghívom a main()-ból így:
print2DArray<int>(intArray);
meg igy:
print2DArray<char>(charArray);
A két tömb kiíródik, mindenki örül.
Szeretném úgy módosítani a template-t, hogy <char>-ral való meghíváskor (de csak akkor) még egy további (int tipusú változót) is ki tudjak vele iratni. Hogyan lehetséges ez? -
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
Még egy kérdés:
Ha számlálós ciklusba feltételként konténer méretét adom meg pl:
for(int i=0;i<arr.size();i++){
//stb...stb...stb...
}akkor a fordító jelzi hogy különböző tipusú értékeket hasonlítok össze, mert az arr.size() az unsigned int tipusú az i az meg int.
Az a kérdésem, hogy mi a gyakorlat ebben az esetben? Én unsigned int-ként definiáltam az i-t. Milyen hibákat okozhat ha int-ként definiálom?
-
m.zmrzlina
senior tag
Van egy kisebb programom amiben C tipusú kétdimenziós tömböket használok (pl: int a[10][10]={....}) amit át szeretnék írni std::array tipusúra Itt tanácsoltátok.
Az a kérdésem, hogy hogyan működik a második esetben a kétdimenziós tömb? Azt olvasom, hogy a C-ben a tömb egy pointer ami a tömb első elemére mutat, az elemek pedig sorban ez után találhatóak a memóriában.
Ezek szerint az alábbi két deklaráció azonos?
int arr[10][10];
array<int, 100> arr;Illetve a C tipusú tömb egy elemére így hivatkozom:
z=arr[2][5];
Ez ekvivalens a következővel?
z=arr.at(25);
-
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 -
m.zmrzlina
senior tag
Algoritmizálásban kellene kis segítség.
Adott egy 10x10-es mátrix, vélerlenszerűen feltöltve 0 és 1 értékekkel. Ki szeretném válogatni azokat az elemeket amelyeknek csak 0 értékű szomszédjuk van.
1, Az első elemet találomra választom.
2 Indítok egy ciklust és összeadom az elem összes szomszédjának értékét, ha ez 0 akkor az indexét (sor oszlop) eltárolom egy "eredmény" tömbbe. Illetve eltárolom a 0 értékű szomszédok indexét is egy "eztismegkellnézni" tömbbe.
3, A 0 értékű szomszédokra ("eztismegkellnézni" tömb elemeire) is lefuttatom az előző ciklust. Ha összeg==0 akkor az is megy az "eredmény" tömbbe, Teszem ezt mindaddig amíg a 0 szomszédnak van 0 szomszédja és annak 0 szomszédja....stb.A ciklus úgy néz ki hogy veszi az első elem bal felső szomszédját és a sor és oszlopindexek megfelelő iterációjával "körbejárja" az elemet. Ez mindaddig oké is amíg a vizsgálandó elem nem a mátrix szélén található (0.sor vagy 0.oszlop vagy 10.sor vagy 10. oszlop a sarki elemekről nem is beszélve) ezeket az elemeket ugyanis nem lehet a fent említett módszerrel "körbejárni" Oké, hogy ezekre az elemekre is meg lehet írni a megfelelő ciklust csak ez eredményezne egy végeláthatatlan programot egy ilyen kis feladatra. (lehet, hogy nem is olyan kicsi ez a feladat)
Az lenne a kérdés, hogy ki hogyan oldaná meg ezt a feladatot?
-
m.zmrzlina
senior tag
válasz
EQMontoya #3916 üzenetére
A megoldás: stringbe olvasunk be, azt konveráljuk számmá. Ha nem sikerül, lehet hibát dobni.
Ha jól sejtem ez az a megoldás amit javasolsz (16-30 sor)
-
m.zmrzlina
senior tag
void getUserInput(vector<int> &ui)
{
int entry=0;
bool isEntryValid=true;
system("cls");
do
{
if(isEntryValid==false)
{
cout<<"Ervenytelen adat!"<<endl;
}
cout<<"Lista meret: <1-100>"<<endl;
cin>>entry;
if(entry < 1 || entry > 100 )
{
isEntryValid=false;
system("cls");
}
else
{
isEntryValid=true;
}
}
while (isEntryValid==false);
ui.push_back(entry);
}A fenti kódrészlet szépen működik számok bevitele esetén de betű leütésére végtelen ciklusba kerül. Mi erre a magyarázat?
-
m.zmrzlina
senior tag
Illetve volna még egy kérdésem.
Ha a fillArr() fv három utolsó, és a sortSwap() utolsó argumentumát a felhasználótól szeretném bekérni - és csak valid értéket engedni - egy külön függvénnyel azt milyen adatszerkezetbe szokás írni?
-
m.zmrzlina
senior tag
válasz
PandaMonium #3906 üzenetére
A rendezést megvalósító fv-t átírtam a tanácsaid alapján (a ternary operator egyelőre maradt :-)), most így néz ki:
int sortSwap(array<float,10> &arr, bool isAscending)
{
float temp=0;
for (int i=0;i<arr.size()-1;i++)
{
for (int j=i+1;j<arr.size();j++)
{
if( isAscending ? arr.at(i)>arr.at(j) : arr.at(i)<arr.at(j))
{
temp=arr.at(i);
arr.at(i)=arr.at(j);
arr.at(j)=temp;
}
}
}
return 0;
}Azt olvasom itt meg itt, hogy a void tipus mint visszatérési érték akkor használatos, amikor a függvényünk csak lépéseket hajt végre, de nem állít elő konkrét értéket. Az a kérdés, hogy nem célszerűbb-e ennek a fv-nek void tipust adni mivel ez sem csinál mást mint egy adott memóriacímtől kezdődő tömb elemeinek sorrendjét átrendezi?
Ugyanez a kérdés a köv. két fv-re. Az egyik feltölt egy a main()-ban létrehozott tömböt:
int fillArr(array<float,10> &arr, int rndL, int rndH, int rndSt)
{
srand(time(0));
for(int i=0;i<arr.size();i++)
{
arr.at(i)=rand()%(rndH-rndL)+(rand()%100)/100.0 + rndSt;
}
return 0;
}Ez pedig kiírja a std outputra:
int printArr(array<float,10> &arr)
{
for(int i=0;i<arr.size();i++)
{
if(i%10==0)cout<<endl;
cout<<arr.at(i)<<"\t";
}
return 0;
} -
m.zmrzlina
senior tag
-
m.zmrzlina
senior tag
Hobbiból programozgatok saját örömömre kb középiskolás fokon és egy best practice jellegű tanács kellene.
Van egy függvényem ami cserés rendezést valósít meg:
int cseres(float tomb[],int meret, int trend)
{
float temp=0;
for (int i=0;i<meret-1;i++)
{
for (int j=i+1;j<meret;j++)
{
if(tomb[j]<tomb[i])
{
temp=tomb[i];
tomb[i]=tomb[j];
tomb[j]=temp;
}
}
}
return 0;
}Szeretném alkalmassá tenni arra, hogy növekvő és csökkenő rendezést is meg tudjon valósítani. Erre szolgálna az utolsó argumentum aminek a segítségével a
if(tomb[j]<tomb[i])
sorban lévő relációt kellene megfordítani.Oké, hogy if-fel vagy switch-case-zel ki lehet választani a szükséges sort de valami elegánsabb megoldás kellene.
Mi erre a legjobb módszer?
Ú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!
- sziku69: Szólánc.
- Alkoholista nevelde
- Samsung Galaxy S22 Ultra - na, kinél van toll?
- Vivo X200 Pro - a kétszázát!
- Battlefield 6
- Milyen okostelefont vegyek?
- OLED monitor topic
- Sorozatok
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- További aktív témák...
- Lenovo ThinkPad X13 Yoga i5-10310U 16GB RAM 512GB SSD 13.3 FHD Touch 2in1
- LG 27CN650N-6A - Felhő Monitor - 1920x1080 FHD - 75Hz 5ms - USB Type-C - Quad Core - BT + WiFi
- Apple iPhone 13 Mini / 128GB / Gyárifüggetlen / 12Hó Garancia / 84% akku
- Bomba ár! Lenovo ThinkPad T440P - i5-4GEN I 8GB I 128GB SSD I 14" HD+ I Cam I W10 I Gari!
- Eladó SAMSUNG Odyssey G3 LS24AG320NRXEN 24'' Sík FullHD 165 Hz 16:9 FreeSync VA LED Gamer monitor
Állásajánlatok
Cég: FOTC
Város: Budapest