- Vezetékes FEJhallgatók
- OLED TV topic
- Kormányok / autós szimulátorok topikja
- 5:4 képarányú SXGA monitor jön ősszel az EIZO berkeiből
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- TV antenna és jelerősítés
- Melyik tápegységet vegyem?
- Multimédiás / PC-s hangfalszettek (2.0, 2.1, 5.1)
- Mini-ITX
- AMD GPU-k jövője - amit tudni vélünk
Új hozzászólás Aktív témák
-
Karma
félisten
válasz
mgoogyi #2397 üzenetére
És WonderCsabo: erre nincs lehetőség, mert a C++ -> C# irányban elég korlátozott lehetőségeim vannak (egy féle, WinRT specifikus tömb, lista, dictionary). Legalább generikus, úgyhogy tudok saját objektumokat belepakolni (ez a String^, String^, enum hármas).
Mivel ez egy blocker probléma, ma öltem időt a kísérletezésbe. Az eredmény már annyira nem determinisztikus, hogy kvantummechanikai jelleget mutat
Schrödinger macskája pörög a hátára kötött vajaskenyérrel.
Átírtam az adatgyűjtő metódust, hogy ciklusban százszor hajtsa végre a lépést, és az eredménx a jó-rossz között ingadozott egymás alatt. A teljes folyamatot ciklusba téve még mindig ez a sor billegett, ergo nincs a hívások számához vagy hyorsaságához kötve.
Debug változatot sajnos nem kaphatok a fekete dobozból (másik fél policyje), így a saját kódomat is csak Release módban fordíthatom. De itt van a másik kvantumjelenség: azért ilyenkor is meg tudok állni breakpointokon, megpróbálhatok belenézni a változókba, de ha ezt teszem, minden számolt érték átmegy zajba. Mint az elektronok elhajlása résen...
Maga a 8/16 konverzió az mbstowcs/wcstombs segítségével megy, és mivel minden kommunikáció alapja a fekete doboz és a C# világ között, elég sokat hívom - nem ezzel lehet a baj.
Lokalizáció csak a telefon ujraindításával változhat, nem kavarhat be. Főleg hogy az előző két függvény nem locale érzékeny.
A szöveg prefixelésével sokat próbálkoztam: ha rossz, akkor a konstans string se jön vissza, ha jó, akkor meg igen. Így gyanússá vált, hogy nem a szöveg összeállításával, hanem az enumnál lehet a gond, átírtam fix értékre, amitől stabilizálódott a szöveg
A baj csak az, hogy semmi értelme, mert az enumot kiválasztó függvényt a szövegnél is felhasználom...
Nekem továbbra is megvan az a sejtésem, hogy a fekete doboz belepiszkít a stackbe, elrontva az előtte lévő wstringet. De nem tudom bizonyítani - a fejlesztőinél nem mutat ilyen tüneteket.
Ha nem fogadnák el a workaroundot, holnap megnézem hogy binárisan hogy viszonyul a zaj a szöveghez.
-
kemkriszt98
tag
Sziasztok, valakinek van ötlete erre?
Az openGl tanulását szerettem volna elkezdeni.... nem tudtam rávenni a Code Blocksot hogy müködjön ( akkor is ezt írta) uh. arra gondoltam megírom a házimat... de az se akar menni.... gondoltam zavarják azok a fájlok amiket felraktam (libglut32.a, glut32.dll, glut.h) így újratelepítettem a Code Blocksot... de semmi javulás...
-
mgoogyi
senior tag
A 8-bites stringből 16-bitesre alakító függvény nyilván determinisztikus kéne legyen.
Ha memória túlírás lenne valahol és az piszkálna bele az output-ba, akkor meg nem hinném, hogy mindig pontosan ugyanazokat a kínai jeleket adná.
Arra gondolnák elsőnek, hogy a lokalizáció változik. Esetleg van inverz transzformáció is a stringre?
Debug módban is jön?
Ki kéne emelni csak ezt a konvertálás dolgot, és izoláltan megnézni, hogy erre a bizonyos kakukktojásra mennyire determinisztikus a konvertálás.
Még esetleg olyat próbálnék meg, hogy a bejövő 8 bites stringet feltuningolnám kicsit, elé-mögé dobnák néhány fix karaktert, esetleg minden karaktere után bedobnék még egy szóközt, hátha abból látszik, hogy hol történik memória korrupció. -
mgoogyi
senior tag
válasz
bandi0000 #2394 üzenetére
Akkor nem tudod szétválasztani az előadót és a szám címét, a kettőt egy stringként tudod csak kezelni.
egyben kezelés:
char src[512] = "3 4 5 elthon john: daralt macska";
int x,y,z;
char buff[512];
sscanf(src,"%d %d %d %[]", &x,&y,&z,buff);
printf("%d %d %d %s\n",x,y,z,buff);ha esetleg lenne egy fix elválasztó karakter:
char eloado[512];
char szam[512];
sscanf(src,"%d %d %d %[^:] %*c %[]", &x,&y,&z,eloado,szam);
printf("%d %d %d %s %s\n",x,y,z,eloado,szam);%[] : olyan string, amiben bármilyen karakter lehet, pl. szóköz is (%s-sel white spaceig olvas, pl. tab,szóköz,enter megszakítja a stringet)
%[^:] : olyan string, amiben nincs :
%*c : olvass egy karaktert, de nem kell semmilyen változóba berakni a * miatt -
bandi0000
nagyúr
:köszi azt már időközben megoldottam, viszont ezt nem tudom, adott a feladat, hogy be kéne olvasni az adatokat és karakteres adatok ismert a hosszúság 50 karakter, de össze vissza vannak, szám előadója és címe van benne tehát: 2 3 36
Eric Clapton:Terraplane Blues
3 2 46 Eric Clapton: Crazy Country Hopaz a baj hogy ugye valamelyik több szótagból áll, erre van e valami megoldás hogy ne szivecskéket meg mit tom én mit dobáljon ki kiírásnál
-
Karma
félisten
Közben nekem meg lenne egy rejtélyes elméleti kérdésem, ami a munkahelyemen megakasztott. Kódot sajnos nem másolhatok, de nem is kódszintű megoldást keresek, csak ötleteket hogy mit nézzek még meg.
A jelenség elég karakteres.Adott egy Windows Phone 8 projekt, benne egy C++/CX komponens. Ez a komponens egy bináris formában kapott fekete dobozt ölel körbe, ami egy bejövő stringet feldolgoz, és különböző dolgokat számol ki belőle.
A wrapperem egy listába gyűjti a kulcs-érték párokat, kb. huszat, egy fentről hívott metódusra válaszul. Minden elem hasonlóan fest: van egy konstans kulcs; az érték meg egy libből kapott 8-bites string ami köré concatenálni kell pár dolgot, végül 16-bitesre konvertálom.
Ez az esetek 99%-ában tökéletesen működik. De van egyetlen pár, ami semmiben se különbözik a többitől szerkezetileg (sőt három teljesen megegyező jön utána), ami kivétel. Egyszer jó értéket ad, máskor kínai jeleket (mindig ugyanazokat), aztán újra meg újra kiértékelve valamelyik a kettőből, random.
Milyen memóriakezelési hiba lehet az, ami ilyen randomsághoz vezet?
-
bandi0000
nagyúr
köszi, viszont most elakadtam, lényegében, bekérek egy csapat nevet, és ki kell íratni neki a lőtt illetve kapott góljait, viszont az összehasonlításnál nem csinál semmit, valamiért nem jó a feltételem, vagy karakteresnél máshogy kell hasonlítani?
feltétel csak ugye annyi, hogy egyik csapat==bekért csapattal, akkor ugye adja össze a gólókat, aztán else ha az másik csapat egyezik meg a bekért csapattal, akkor szintúgy adja össze
-
bandi0000
nagyúr
Ezt meg megkérdezem, mivel nem tudnám másképp ellenőrizni, hogy jó e a gondolatmenet
Azt kéne kiíratni, hogy egyik csapat fél időben nyerésre áll, de a végén a másik csapat nyeri meg
én így csináltam :if( fm>fe(i) && mg(i)<eg(i) || fe(i)>fm(i) && eg(i)<mg(i))
eg: egyik csapat góljai
mg: másik csapat góljaife: egyik csapat első félidei góljai
fm: másik csapat első félidei góljai -
Karma
félisten
válasz
bandi0000 #2382 üzenetére
Bemásolom amit még hat előtt nem tudtam befejezni.
---
Folytatva a gondolatmenetedet a C# topikban: "a franc tudja mi ez de akkor sem működik"
Hát nincs az az isten, aki tudja hogy ez a kódrészlet mi akar lenni.Egyrészt attól, hogy a ciklusváltozót 2-112 (111 ciklus) között futtatod, ugyanúgy a fájl első sorától kezdi beolvasni. Az olvasást különösebben nem érdekli a ciklusváltozód.
Másrészt az is biztos, hogy a sor végén lévő szövegeknek nem jól foglaltál helyet. Most foglaltál 19 karakternyit, miközben neked 112-szer 20 kellett volna (kétdimenziós karaktertömb). Helyette char[112][21] kellene alaphangon. Így már az fscanf alapvetően rendben lenne.
A plusz egy soros problémát meg úgy kellett volna megoldanod, hogy fscanf helyett a fgets() függvénnyel egész sorokat dolgozol fel, aztán sscanf-fel szeded ki belőle az adatot. A legelső sort meg egyszerűen eldobod.
-
skoda12
aktív tag
válasz
bandi0000 #2382 üzenetére
Ezt most nem probaltam ki, forditas nelkul teszem be ide, de kb jol kiveheto a lenyeg. 10 db max 45 karakter hosszu string beolvasasa es kiirasa:
char str[10][46];
int i;
for (i = 0; i < 10; i++) {
scanf("%s", str[i]);
}
for (i = 0; i < 10; i++) {
printf("%s\n", str[i]);
} -
skoda12
aktív tag
válasz
bandi0000 #2380 üzenetére
A beolvasas es kiiras is rossz.
Az fscanf soraban az ecs[i] es mcs[i] egy karakter, nem pedig egy karakter tomb.
Printf soraban fe[i] es fm[i] int ertekek, de a format string szerint ket karaketerlancot var.viszont a charba azt adom meg hogy hány karakteres max szöveg lesz benne ugye?
Kell +1 karakter a vegere a lezaro \0 karakternek.
-
bandi0000
nagyúr
válasz
Dave-11 #2379 üzenetére
erre már én is gondoltam, mert az első sorban 1db szám van ami megmondja hány adat van, de azt kiszedtem a txt-ből szóval elvileg úgy kell lennie
viszont a charba azt adom meg hogy hány karakteres max szöveg lesz benne ugye?
14 1 2 0 2 Agarak Ovatosak
5 4 0 1 0 Erosek Agarak
4 0 2 0 2 Ijedtek Hevesek
8 1 1 0 0 Ijedtek Nyulakilyeneket kellene beolvasnom csak hogy tiszta legyen a kép
amúgy nem hibát ír, hanem lefut nem csinál semmit és kiírja hogy az exe leállt
A csapatok és a
fordulók száma nem haladja meg a 20, a mérkőzések száma pedig a 400 értéket. Egy csapat
sem rúgott meccsenként 9 gólnál többet. A csapatok neve legfeljebb 20 karakter hosszú, a
névben nincs szóköz.Ezt meg a feladatból vágtam ki, nem tudom van e létjogosultsága
-
Dave-11
tag
válasz
bandi0000 #2375 üzenetére
Ha csak a fájl második sorától akarod beolvasni, akkor hozz létre valami ideiglenes változót/változókat, olvasd be egy sima fscanf()-fel az első sort, és aztán jöjjön a for cikluson belüli beolvasgatás az összes többi sorra.
Lehet az zavar be, hogy az első sor nem ugyan arra a mintára épül, mint a többi (pl.: kevesebb adat van benne), és ezért elcsúszik a beolvasás, és mondjuk int-ként olvasol be egy stringet vagy hasonló. -
bandi0000
nagyúr
hali
Kérdésem lenne, hogy adatokat kellene beolvasnom tömbbe az 112 adatom van, de csak a 2. sortól kezdődik így csináltam meg, de mindig hibát észlel ezért leáll-al dob ki
int main()
{
int fo[113],eg[113],mg[113],fe[113],fm[113],be,i;
char ecs[20],mcs[20];
FILE *f=fopen("meccs.txt","r"); if(f==0) return 1;
for (i=2;i<113;i++){
fscanf(f,"%d %d %d %d %d %s %s",&fo,&eg(i),&mg(i),&fe(i),&fm(i),ecs(i),mcs(i));
printf("fordulo: %d %d %d %d %d %s %s",fo(i),eg(i),mg(i),fe(i),fm(i));
}
fclose(f); -
doc
nagyúr
válasz
BTminishop #2373 üzenetére
-
BTminishop
aktív tag
Köszi! #doc
-
Dave-11
tag
válasz
h1ght3chzor #2369 üzenetére
Van persze, csak az a gond azokkal hogy mindig más nyelven van. Legtöbbször Pascal, még előfordul a C++ is, de van néhány Delphis is. Meg volt amit most csináltam feladatot, és nem volt jó a megoldás egy része
Szóval vannak ilyenek, de alapjába véve jók a megoldások. -
h1ght3chzor
őstag
-
Zsolt1
tag
válasz
bandi0000 #2365 üzenetére
Nem akarok belekontárkodni, de szerintem az a legcélszerűbb, ha a kétdimenziós tömb helyett egy struktúratömbbe olvasod be az adatokat, mivel a feladatsor további kérdéseiben enélkül szerintem elég nehéz lesz majd az adatokat kezelned.
A legtöbb ilyen érettségi feladatsornál egy struktúrát kell létrehozni az adatok kezeléséhez és abba kell beolvasni az adatokat. (Én legalábbis így szoktam megoldani.) -
bandi0000
nagyúr
Mind1 mindenesetre holnap nekiállok és írok, de szerintem a beolvasásnál elakadok, nem nagyon vettünk mi ilyen tömbös beolvasást
-
dabadab
titán
válasz
bandi0000 #2362 üzenetére
Az ilyen iskolai feladatoknal mindig zavar az, hogy rengeteget vacakolnak viszonylag trivialis beolvasassal/kiolvassal (amit aztan soha nem fog hasznalni senki se ugy a valo vilagban) meg rengeteg az elore meghatarozott konstans meg maximum, meg meg biztos vannak dolgok, amik zavarnak, csak nem tudatosultak bennem.
-
dabadab
titán
válasz
bandi0000 #2360 üzenetére
"az adatok beolvasását hogy tudnám megcsinálni hogy később kezelhessem külön őket?"
Hat ugy, hogy kenyelmes legyen
Csinalhatod azt is, hogy egyszeruen ugy tarolod le az adatokat, ahogy vannak, ugy egy kicsit macerasabb oket kezelni, viszont hatekony, vagy csinalhatsz egy 48x500-as tombot is, ahova egyszeruen beirod, hogy melyik kilometernel ki ul az egyes szekeken.Egyebkent a feladatok szerintem borzasztoak.
-
bandi0000
nagyúr
hát igazából 2010-es érettségit néztem, kérdés annyi hogy hogyan álljak neki, logikus a feladat, csak az adatok beolvasását hogy tudnám megcsinálni hogy később kezelhessem külön őket? Tehát most külön feladat van a helyek sorszámára akkor mindent külön tömbbe kellene bevinnem?
-
bandi0000
nagyúr
hali
Keresek egy vállalkozó kedvű egyént, aki tudna segíteni emelt infó érettséginél, 1-2 feladat gondolatmenetét elmagyarázni, vagyis hogy hogyan kezdjek neki, sajnos 1 éve volt infóm és azóta nem nagyon foglalkoztam vele -
BTminishop
aktív tag
válasz
h1ght3chzor #2356 üzenetére
Kösz szépen
-
h1ght3chzor
őstag
válasz
BTminishop #2355 üzenetére
ha c=3
a=c++-2a=3-2=1
és c=3+1=4 lesz utánaha c=3
b=--c-3b=3-1-3= -1
Ha előtte van ++ vagy --, akkor az a változó értékét előtte növeli meg, ha utána, akkor csak miután lefutott az a sor, csak utána fogja megnövelni!
Egy kis gyors tesztprogi hozzá:
#include <iostream>
using namespace std;
int main()
{
int a=0,b=0,c=3;
a=c++-2;
c=3;
b=--c-3;
cout << "a erteke: " << a << endl << "b erteke: " << b << endl;
return 0;
} -
BTminishop
aktív tag
Sziasztok!
Extra gyors help kéne.Meg kell határozni a változók értékét.
a=c++-2 ha c=3
b=--c-3 ha c=3
Megjöhet valami kismagyarázat mellé,előre köszönöm!! -
T.Peter
őstag
válasz
T.Peter #2353 üzenetére
Ha jól sejtem, ott lesz a gond, hogy a compiler magától nem csinálja meg az általam kreált osztály .obj file-ját, csak az alap osztályokét, amik létrejönnek új project indításakor. A VS2012 compiler-rel lenne gond? A videóban ugyebár Linux alatt fut a qt, ott más a compiler.
-
T.Peter
őstag
Sziasztok!
Qt5 + opengl + c++ kombót használok egy program megírásához. Belefutottam egy olyan problémába, hogy a .obj file nem található a debug mappában. Valóban nincs ott, de nem tudom hogy odavarázsolni. Akkor dobja fel a hibaüzenetet a qt creator, amikor { } jeleket raknék a metódus után a jelenlegi ; helyett.
Ezt a videót követve próbáltam az alapot összerakni, de a videóban a srácnak kérdés nélkül működik.glwidget.h
#ifndef GLWIDGET_H
#define GLWIDGET_H
#include <QGLWidget>
class GLWidget : public QGLWidget
{
Q_OBJECT
public:
explicit GLWidget(QObject *parent = 0);
void initializeGL();
void paintGL();
void resizeGL();
};
#endif // GLWIDGET_Hglwidget.cpp
#include "glwidget.h"
GLWidget::GLWidget(QWidget *parent) :
QGLWidget(parent)
{
}
void GLWidget::initializeGL();
void GLWidget::paintGL();
void GLWidget::resizeGL(int width, int height);A másik variációban pedig a QGLWidget base class-t hiányolja. Ennél az esetnél ezt az example-t követtem úgy, hogy a glc_lib-hez tartozó sorokat kivettem, mert azt nem tudtam összeegyeztetni a qt-vel. Létrehoztam a qlwidget class-t, és a glwidget.h-ban az #include <QLWidget> sorra írja azt, hogy nem találja a könyvtárban.
Meg tudnátok mondani, hogy hol van a gond? Kotta ugyanazt írtam be, mint ami a videóban is látszik, ugyanabban a sorban, de kiírja a hibát.
qt 5.2.1, qt creator 3.0.1, win8, a compiler a vs2012 -
WonderCSabo
félisten
válasz
bbTamas77 #2351 üzenetére
Microsoft visual c++ 2010 amikor létrehozok egy dll kiterjesztésű fájl, plugint.
Mit hoztál létre?
Miért van, az, hogy nagyon sok memóriát foglalt?
Mennyi a nagyon sok, és mit csinál a program?
Dinamikus tömbök sokkal több memóriát foglalnak le mint a statikus tömbök?
Pontosan mit értesz dinamikus tömb alatt? Egy vector szerű adatszerkezetet, vagy sima heapen lefoglalt tömböt? Mindenesetre akármit is értesz, ilyen szabály nincs.
-
bbTamas77
aktív tag
Helló.
Microsoft visual c++ 2010 amikor létrehozok egy dll kiterjesztésű fájl, plugint.
Miért van, az, hogy nagyon sok memóriát foglalt?
Dinamikus tömbök sokkal több memóriát foglalnak le mint a statikus tömbök?
Semmit sem konyítók a C++-hez, csak laikusként kérdezem.
-
BTminishop
aktív tag
válasz
WonderCSabo #2349 üzenetére
Közben megoldódott!!!!
-
WonderCSabo
félisten
válasz
BTminishop #2348 üzenetére
De mi itt a probléma?
-
BTminishop
aktív tag
Sziasztok!
Arról a programról lenne szó,amit multkor leirtam.Gyakorolgattam stb. rájöttem,hogy kicsit nagy vízbe ugrottam.Szóval ez a külön grafikai felület ez kicsit magas még.Szóval a matematikai képlet program,amit szeretnék az a másodfokú egyenlet gyöktényezős alakja.Gyök számolós részt azt simán megtudom csinálni csak azt nemtudom megoldani,hogy x1-et ;s x2őt és írjon szóval 2 eredmény ugye egyik,amelyiket össze adja a másik pedig a kivánosos.Valami ötlet?
-
alapz@j
tag
válasz
WonderCSabo #2343 üzenetére
A Win32 API-ra épülő GUI-hoz még OO tudás sem kell
-
BTminishop
aktív tag
Köszönöm válaszaitokat!Bele vágok és majd lesz valami
Kérdés lesz majd jövök
-
WonderCSabo
félisten
int magassag;
int darab;Ezek lehetnének unsigned intek, hiszen 0 alatt nem értelmezettek.
void Tulipan::kiir()
Ezekhez két dolog. Egyrészt ami a Virag -ban van, azt már a Virag osztályban kiírhatod, nem kell duplikálva minden egyes gyerekben. A gyerek csak a sajátját írja ki, előtte pedig ráhív az ős metódusára. Másrészt nem tudom tanultátok-e, de lehetne a kiírást operátorral is.
Egyébként nekem jónak tűnik.
legyen egy új virtuális adattagja
virtuális adattagról még nem hallottam, de lehet, hogy én vagyok tudatlan.
-
WonderCSabo
félisten
válasz
BTminishop #2341 üzenetére
Ez eddig is világos volt. Nekem a kérdésem az, hogy elegendő alap C++ és OO tudással rendelkezel ahhoz, hogy belevágj a grafikus felülettel rendelkező programok fejlesztésébe? Ha igen, akkor próbálj ki egy C++ GUI toolkitet, pl. a QT-t, rengeteg tutorial van a neten.
modder: harmadik linked rossz.
-
modder
aktív tag
válasz
BTminishop #2341 üzenetére
C# https://duckduckgo.com/?q=C%23
C++ https://duckduckgo.com/?q=C%2B%2B
gui toolkit: [link]
QT https://duckduckgo.com/?q=QT+UI
objektumorientált programozás
https://duckduckgo.com/?q=objektumorient%C3%A1lt+programoz%C3%A1sEgyébként windowsra C++-ból használhatod a windows native libraryt:
http://www.winprog.org/tutorial/simple_window.htmlLink javítva.
[ Módosította: Qru ]
-
BTminishop
aktív tag
válasz
WonderCSabo #2340 üzenetére
Hát nem sok mindent értek
Én azt szeretném először elérni,hogy a programom ne command promptban jelenjen meg hanem egy önnáló környezetben nem nagyon tudom elmagyarázni.
-
WonderCSabo
félisten
válasz
BTminishop #2339 üzenetére
A C++ és a C# két külön programozási nyelv. C++ -hoz is érhetőek különböző GUI toolkitek, talán a legnépszerűbb a QT. De én azt javaslom, hogy csak akkor állj neki GUIzni, ha már megy alapszinten biztosan az objektum-orientált programozás.
-
BTminishop
aktív tag
Sziasztok!
1hónapja kezdtük a C++-t az iskolában az alap szintű programok amiket elvárnak az iskolában azok mennek de én még idő előtt feljeszteni szeretném magamElég üresnek és bonyolultnak tűnik nekem a programozás de nagyon érdekel.Szeretnék írni egy programot,amely matematikai képlet alapján kiszámolja az eredményt ez a házi feladathoz kell majd,az egyszerűbb megoldás érdekében.Ezt szabadidőmben szeretném csinálni nem házi feladat vagy ilyesmi.Szeretnék összerakni egy rendes programot rendes grafikai felülettel.Első kérdésem ez lenne,hogy mivel tudom megszerkezteni a grafikai felületet(C# Sharp?) illetve ezt,hogy tudom összeforrasztani?Remélem érthetően irtam le,segítséget előre köszönöm.
Szépnapot mindenkinek! -
umek7
őstag
A megoldásom félkész és valószínűleg sok helyen hibás, kérném segítségeteket. A feladat:
Hozz létre egy Virág osztályt. Az adattagok legyenek: név (string), fagyástűrés (string (igen, nem, közepes), magasság (egész szám cm-ben).
Tiszta virtuális metódus: AtlagDarabszam, mely kiszámítja a darabszámok átlagát. Ez alapján eldönthető minden virág esetében, hogy sok van belőle, közepes vagy kevés. Szükséges kiíró alprogram is.
- Származtass a Virág osztályból egy Tulipán utódosztályt, az öröklődött adattagokon kívül legyen egy új virtuális adattagja: szín (string)
- Származtass a Virág osztályból egy Nárcisz utódosztályt, az öröklődött adattagokon kívül legyen egy új virtuális adattagja: darab (egész szám)
- Írd ki a tulipán és nárcisz adatait.class Virag {
protected:
string nev;
string fagytures;
int magassag;
int darab;
public:
Virag(string n, string f, int cm,int db){
nev=n;
fagytures=f;
magassag=cm;
darab=db;
};
virtual double AtlagDarabszam()=0;
bool sok(){
return darab > AtlagDarabszam();
};
};
class Tulipan:public Virag {
string szin;
public:
Tulipan(string n, string f, int cm, string sz,int db) : Virag(n,f,cm,db) {
szin=sz;
};
double AtlagDarabszam(){
return 10;
};
void kiir();
};
void Tulipan::kiir() {
cout<<"Nev: "<<nev<<"\n";
cout<<"Fagyturo: "<<fagytures<<"\n";
cout<<"Magassag: "<<magassag<<" cm"<<"\n";
cout<<"Szin: "<<szin<<"\n";
cout<<"Darabszam: "<<(sok()? "Sok van belole!":"Keves van belole!"); }
class Narcisz:public Virag {
public:
Narcisz(string n, string f, int cm, int db) : Virag(n,f,cm,db) {
};
void kiir();
double AtlagDarabszam(){
return 11;
};
};
void Narcisz::kiir() {
cout<<"Nev: "<<nev<<"\n";
cout<<"Fagyturo: "<<fagytures<<"\n";
cout<<"Magassag: "<<magassag<<" cm"<<"\n";
cout<<"Darabszam: "<<(sok() ? "Sok van belole!":"Keves van belole!"); }
int main(int argc, char *argv[]) {
Tulipan tulipan("Tulipan","igen",20,"kek",2);
tulipan.kiir();
cout<<"\n";
cout<<"\n";
Narcisz narcisz("Narcisz","nem",18,11);
narcisz.kiir(); } -
csiki_92
aktív tag
Sziasztok! Tudna nekem valaki segíteni? C++ Windows Form Application lenne a téma. Valaki olyanra lenne szükségem, aki nagyon jó benne.
Nagyon fontos lenne.
Előre is köszi.
-
Sets
csendes tag
Üdv
Adott egy játék amihez tegnap adtak ki patch-et. Nos azóta ezt dobja a gép mikor indítanám: wtfhiba A hiba nem egyedi, láttam hogy sokan panaszkodnak miatta, mégse lett kijavítva ma. A support-tól kaptam egy programot ami elméletileg letöröl minden a játékkal kapcsolatos dolgot a gépről, nos az pedig be crashel szóval nem tudom mennyire igaz. Emberileg már mindent megpróbáltam, reinstall, driver frissítések, net framework legújabb verzió, teljes hozzáférés a fájlhoz, tűzfal kivétel, visual c++ 2005,2008 is van fent. A kérdéses fájl kiterjesztése .dat.
Valakinek van valami ötlete hogy milyen program megléte, vagy nem léte okozhatja a problémát? Win 7 Ultimate 64 bitem van -
hamachi
csendes tag
Igen de én még azt szeretném hogy ne legyen fix méretű!
majd csak kinyögöm
-
hamachi
csendes tag
-
chabeee
aktív tag
válasz
hamachi #2325 üzenetére
tömb méretét?
#include <iostream>
using namespace std;
class infos{
};
class i33{
private:
int szam;
infos *t;
public:
i33(const int& szam) : szam(szam), t(0){
}
i33(const i33& eredeti){} //másuló konstruktort megírod
~i33(){}
void setSzam(const int& szam){
this->szam = szam;
}
int getSzam() const {
return szam;
}
};
int main(){
int tmp = -1;
cout <<"kerem a tomb meretet" << endl;
cin >> tmp;
i33 arrayofi33 = i33(tmp);
return 0;
} -
chabeee
aktív tag
válasz
h1ght3chzor #2326 üzenetére
igen, nem értem miért.
-
hamachi
csendes tag
Hali! A feladat a köv:
"Definiáljon egy I33 nevű osztályt, amelyben az INFOS típusú objektumokat dinamikusan tároljak. Az
elemek számát be kell kérni a felhasználótól.
a. Definiálja a szükséges konstruktorokat, destruktort és a szükséges tagfüggvényeket.
b. Definiálja a szükséges tagfüggvényeket, és egyet az adatok sorba rendezésére tetszőleges
kritérium szerint."Infos osztály dinamikus tömb adattagja így néz ki nálam: Infos *t[20]; Hogy lehetne a tömb méretét is dinamikussá tenni? Ha kell a program akkor feltöltöm...Előre is köszönöm
-
chabeee
aktív tag
válasz
h1ght3chzor #2322 üzenetére
nem a tomb2 szamlalo2 méretű és az idx-edik elemet akarom törölni.
tehát azt csináltam az elsőnél hogy elmentem idx-ig ott belerakosgattam az elemeket a temp-be, utána idx+1-től mentem és a temp[i-1]-be raktam bele tehát akkor ott folytatja ahol abbahagyta az előtte lévő ciklusnál.
szerk.: valószínűleg az lesz a hiba hogy a tomb2-t nem foglalom újra. meglesem. -
chabeee
aktív tag
válasz
h1ght3chzor #2320 üzenetére
hát elvileg ez jó,
tomb2 tartalmát törli és mivel ő egy pointer ráállítom a temp-re ami ugyanúgy egy többre mutat. -
chabeee
aktív tag
sziasztok,
szeretnék törölni egy dinamikusan lefoglalt tömbből viszont memória hibát dob és nem igen törli az elemet... :/
itt a függvénye(i)m:void torolSzamla(const int & idx){
Szamla* ledobott= tomb2[idx];
Szamla **temp = new Szamla*[szamlalo2-1];
for(int i = 0; i < idx; i++){
temp[i] = tomb2[i];
}
for(int i = idx+1; i < szamlalo2; i++) {
temp[i-1] = tomb2[i];
}
szamlalo2--;
delete [] tomb2;
tomb2 = temp;amit előtte írtam:
void torolSzamla(const int & idx){
Szamla ** temp = new Szamla*[szamlalo2-1];
swap(tomb2[szamlalo2-1], tomb2[idx]);
for(int i = 0; i < szamlalo2-1; i++){
temp[i] = tomb2[i];
}
delete [] tomb2;
tomb2 = new Szamla*[szamlalo2-1];
for(int i = 0; i < szamlalo2-1; i++){
tomb2[i] = temp[i];
}
szamlalo2--;Mi ezzel a probléma?
-
modder
aktív tag
szerintem átrendezted a kódot ahhoz képest, ahogy a hibaüzenetek állapotában volt
Egyik dolog:
adatok uzenetek[uzszam]=elso();
[...]
adatok elso() { ... }az elso() egy darab elemet ad vissza, míg az uzenetek egy tömb.
Nagyobb gond, hogy ha az elso() még tömböt is adna vissza valamilyen csoda folytán, akkor sem inicializálhatnád így az uzenetek változót. Ha inicializálni akarnád, akkor:
adatok uzenetek[uzszam] = {adat1, adat2, adat3, adat_uzszam-1}Miért?
- Mert fordítási időben tudni kell a tömb méretét, ha inicializálni is akarod deklarálásnál!
- Mert nem lehet egész tömböket másolni az értékadás operátorral. Tömb másolása vagy memcopy() fv. vagy for-ciklussal lehetséges. Általában az utóbbit használjuk.Ha belegondolsz, hogy az adatok uzenetek[uzszam] egy sizeof(adatok)*uzszam hosszú memóriaterület, rájössz, hogy az értékadásnak egy ilyen hosszú memóriaterületet kéne átmásolni úgy, mint a memcpy() fv. Ez túl sok hibához vezetne valószínűleg ezért nincs benne.
Másik dolog:
adatok[] elso() { ... return uzenetek2; }sem működik. Nem tudom tanultad-e hogyan működik a függvényhívás és mi a stack. Amikor hívsz egy függvényt, akkor a függvény visszatérési típusának megfelelő méretű memória területet szabadon hagy a stacken fv hívása előtt, visszatéréskor ide másolja a visszatérési értéket. Ehhez tudni kell a visszatérési érték pontos hosszát.
Ezért nem térhetsz vissza tömbbel, mert annak nem tudod az egzakt hosszát futásidőben.Visszatérhetnél pointer típussal:
adatok* elso() {... return &uzenetek2; }Ezzel már csak az a baj, hogy a mód, ahogyan uzenetek2-t deklaráltad, az a stacken jött létre, és megszűnik létezni, miután a függvény visszatért, ezért ha visszatérés után hivatkoznál rá, memóriaszemétre mutatna. (new-val lehetne a heap-en foglalni, de most ez nem kell)
Megoldás:
adatok uzenetek[uzszam];
elso(uzenetek, uzszam);
void elso(adatok[] uzenetek, uzszam) { beolvasol az uzenetekbe }Amint látod a függvényargumentumokat lehet visszatérési értékek tárolására is használni. Tömb esetében ez ilyen egyszerű. Ha nem tömböt használsz, akkor referenciát kell átadni:
void valami(adat& uzenet) { uzenet = createUzenet(); }Ez teljesen elfogadott, hogy lefoglalod a memóriaterületet a tömbnek először, és ezt adod át a függvénynek, hogy feltöltse adatokkal.
-
Zsolt1
tag
válasz
WonderCSabo #2315 üzenetére
Sajnos nem sikerült rájönnöm. Idáig jutottam: [link] (Ez igazából egy érettségi feladatsor (2008 emelt) programozás részének 1. feladata azért vannak benne ilyen változónevek.) A CodeBlocks ezeket a hibaüzeneteket adja. Igazából lehet inkább megcsinálom a szokásos "mindent megoldok simán a main függvénybe" típusú módszerrel, mert akkor nem kéne figyelnem, hogy melyik függvénynek mit adjak át.
A feladat célja az lenne, hogy amit az adatok elso() függvényben az uzenetek2 struktúrából a main() függvénybeli uzenetek struktúrának átadjam, hogy tovább tudjak vele a main függvényben feladatokat végezni. -
Jester01
veterán
-
Zsolt1
tag
Sziasztok!
Egy teljes struktúrát hogyan tudok visszaadni (feltöltés után úgy, hogy megmaradjanak a struktúrán belüli változások) a főfüggvénynek egy másik (void típusú) függvényből? Azt tudom, hogy sima változókat és tömböket címszerinti paraméterátadással (&) lehet visszaadni, de igazából azt nem tudom, hogy ezt egy struktúránál hogyan alkalmazzam.
A feladatot bonyolítja, hogy azt, hogy mekkora struktúratömböt szeretnék létrehozni, egy fájlból kéne kiolvasnom és én már azt is abban a függvényben szeretném megcsinálni (és magát a struktúrát is létrehozni), mint amiből visszaadom majd feltöltés után a struktúrát.
Ezzel az a baj, hogy úgy tudom, hogy a címszerinti paraméterátadásnál már az adott függvény deklarálásánál meg kell adni a paramétereknél, hogy melyiknél akarom megtartani a változásokat, tehát igazából már a függvény meghívása előtt léteznie kéne magának a struktúrának, ezért nem tudom igazából, hogy ez hogyan valósítható meg egyáltalán.Az egész kérdésem lényege:
1, Csak simán struktúrát hogyan tudok visszaadni címszerinti paraméterátadással a main függvénynek egy másik függvényből?
2, Meglehet-e azt oldani valahogy, hogy úgy is visszatudjam adni a struktúrát a változásokkal (feltöltéssel) együtt, hogy azt nem előtte a main függvényben hozom létre, hanem abban a függvényben, amiben a feltöltés is végbemegy. (Olyanra gondolok, mint egy int típusú függvénynél return változó-val vissza tudok adni egy számot, amit abban a függvényben hoztam létre.)A hülyeségekért, túlbonyolításért elnézést mindenkitől!
-
kispx
addikt
válasz
PumpkinSeed #2308 üzenetére
Egy fordítót is tölts mellé és állísd be.
-
PumpkinSeed
addikt
Ez egy amatőr kérdés, de leszedtem a netbeans-t majd létrehoztam egy új projectet benne egy új állománnyal, de úgy sikerült, hogy a header fájlokat nem találja. Ezeket honnan tudom beszerezni?
-
chabeee
aktív tag
válasz
WonderCSabo #2306 üzenetére
jaj megvan, köszi
-
chabeee
aktív tag
map-en belüli listára, hogy tduom megírni az iterátort?
map<int, list<int>> m;
for(map<int, list<int>>::iterator i = m.begin(); i != m.end(); i++){
cout << (*i).first << endl;
for(list<int>::iterator j = (*i?).second?.begin(); j != (*i?).second?.end(); j++)?
}előre is köszi a választ
-
doc
nagyúr
válasz
PumpkinSeed #2302 üzenetére
ha ramesz barmelyikre, ott van a pelda lent
(mondjuk ritka balfek ez a dokumentacio...) -
Karma
félisten
válasz
PumpkinSeed #2300 üzenetére
Milyen platformon, milyen infókat szeretnél?
Ú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!
- Gigabyte Radeon RX 7900 XT GAMING OC 20G
- Lenovo T470 / T570 bontás!
- Lenovo IdeaPad 3 17ITL6 - 17.3" HD+ Intel 6305 - 8GB - 256GB SSD - Win11 - MAGYAR
- OHH HP EliteBook 850 G8 Fémházas Multimédiás Laptop 15,6" -40% i7-1165G7 16/512 Iris Xe FHD EU-HUN
- Toshiba Enterprise Capacity MG09 18TB - 512MB, 7200rpm, SATA3 - 100/100 -as - Eladó!
- Oppo Reno7 5G 256GB, Kártyafüggetlen, 1 Év Garanciával
- LG 42C4 - 42" OLED evo - 4K 144Hz - 0.1ms - NVIDIA G-Sync - FreeSync - HDMI 2.1 - A9 Gen7 CPU
- FÉL ÁR ALATT! Lian Li UNI FAN SL120 RGB 1db-os és 3db-os ventilátor szett garanciával
- Új! Targus - USB-C Dual HDMI 4K HUB - 2 HDMI-vel. Saját töltő nélkül 2 monitorral (120Hz)
- AKCIÓ! Gigabyte AORUS 16X (2024) Gamer notebook - i7 14650HX 16GB RAM 1TB SSD RTX 4070 8GBWin11
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest