- Milyen okostelefont vegyek?
- Samsung Galaxy Watch6 Classic - tekerd!
- Fényképek a Honor Magic V5-ről
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Erős specifikáció, kompakt formában
- Xiaomi 15 Ultra - kamera, telefon
- Galaxy Z Fold6-hoz viszonyítva mutatják, mennyivel lesz vékonyabb a Z Fold7
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- iPhone topik
- Mobil flották
Új hozzászólás Aktív témák
-
WonderCSabo
félisten
válasz
kemkriszt98 #2546 üzenetére
Hogy hogy mg sem áll többet? Mi a while feltétele? Posztold azt is.
-
WonderCSabo
félisten
válasz
kemkriszt98 #2543 üzenetére
-
WonderCSabo
félisten
válasz
Oppenheimer #2481 üzenetére
Nem tudom, hogy világos-e, de itt nincs semmi extra szintaxis (ahogy javában sincs ebben az esetben). Az std::thread egy sima osztály, thread_name itt a változó neve, és létrehozatalakor a két paraméteres konstruktort hívja meg. Az első paraméter egy függvény pointer, jelen eseten itt egy member function-ra, a második paraméter pedig sima address of operátor, hogy referencia szerint legyen átadva. Ez azért szükséges, hogy a metódus hívásakor adott legyen a this. (Mellesleg a példánymetódusoknál amúgy is valami ilyesmire fordul, mármint mindig a függvény első paramétere az objektum lesz.)
-
-
WonderCSabo
félisten
Alapból kizárt, hogy benne lennének. Max tudsz csinálni code snippet-et.
-
WonderCSabo
félisten
válasz
kemkriszt98 #2453 üzenetére
Ha jelentkezel a BME-re, akkor van ilyen oldal.
Egyébként szerintem nincs.
-
WonderCSabo
félisten
válasz
-Faceless- #2439 üzenetére
Ha már C++, akkor miért nem <cstdio> ? (Ezért tettem fel a kérdést, C-s header, printf helyett C++ -ban kezdésnél inkább cout >> szoktak, stb.)
-
WonderCSabo
félisten
válasz
-Faceless- #2437 üzenetére
Egyébként miért nem a C topikba írtad?
-
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.
-
WonderCSabo
félisten
válasz
BTminishop #2348 üzenetére
De mi itt a probléma?
-
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.
-
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.
-
WonderCSabo
félisten
válasz
chabeee #2291 üzenetére
Ha jól értelmezem itt az a probléma, hogy const_iteratort kérsz le. Ugye ekkor az iterátor által mutatott érték (itt egy lista) const lesz. Ezen a const listán akarsz hívni egy kiir() műveletet, ami viszont nem konstans. Emiatt nem engedi lefordítani, mivel ha a művelet nem konstans, van ra esély, hogy megváltoztassa a konstans objektumot, ami ugye szabad, hogy megtörténjen.
Két dolgot tehetsz:
- sima iterator-t kérsz el, nem const_iteratort
- const-tá teszed a kiir() muveletet (ez szebb megoldás lenne) -
WonderCSabo
félisten
-
WonderCSabo
félisten
Rengeteg különbség van a két nyelv között. Ezek a SO válaszok kiemelik a lényeget. A legnagyobb különbség, hogy a C# program virtuális gépen futó, interpretált nyelv, garbage collectorral. Míg a C++ programok simán binárissá fordulnak, a memóriakezeléséről pedig a programozónak kell gondoskodnia.
PumpkinSeed: system("pause") hívást ne használd, a topikban már ezerszer le lett írva, miért, keress vissza!
-
WonderCSabo
félisten
válasz
loopati #2235 üzenetére
Csinálsz egy map -et aminek a kulcsai karakterek, értékei pedig egész számok. Végigmész for ciklussal a stringeden karakterenként, és a map [] operátorát használva megnöveled az adott karakter-hez tartozó számot 1-el.
Miután végzett a for ciklus, a map tartalmazni fogja, hogy melyik karakter hányszor szerepelt a string-ben. -
WonderCSabo
félisten
válasz
Dave-11 #2180 üzenetére
Globális függvényeknél a static kulcsszó annyit tesz, hogy az általa jelölt függvényeket nem lehet használni más fordítási egységekben, tehát csak belső linkelést tesz lehetővé.
Leegyszerűsítve és picit kiferdítve: az ilyen függvényeket más fájlban nem hívhatod meg.
Szerk.: Jester megelőzött.
-
WonderCSabo
félisten
válasz
zulu_mester #2173 üzenetére
Nem tanultál még az std::vector konténerről? Feltételezem arra gondolt a feladat kiírója.
-
WonderCSabo
félisten
válasz
zulu_mester #2170 üzenetére
Én nem értem a kérdést.
-
WonderCSabo
félisten
válasz
kingabo #2127 üzenetére
A láncoláshoz még kell a dinamikus memóriakezelés, illetve a polimorfizmust is csak így tudjuk megvalósítani C++-ban. De ezek már bonyolultabb dolgok.
Az indoklás annyiban helyes az indoklás, hogy a fv-ben lokális pointeren keresztül létrehozott adat túléli a fv-t.
Mellesleg a stacken eleve nem szoktunk nagy objektumokat tárolni, mert betelik / gáz másolgatni. Ezt is lehet egy indoklás.
-
WonderCSabo
félisten
válasz
Dave-11 #2121 üzenetére
Nem. A fenti esetben a mutató nem lesz meg, hiszen az egy lokális változó. A dinamikusan legfoglalt int meg lesz, csak a címét nem fogjuk meg tudni soha, ezért memóriafolyás történik.
Igen, egy mutatót bármikor átállíthatunk egy másik memóriacímre.
Nyilván úgy érhetjük el az 5-öt, hogy vhol eltároljuk a memóriacímét.
-
WonderCSabo
félisten
válasz
Dave-11 #2119 üzenetére
A statikusan lefoglalt változók a veremben kerülnek tárolásra. Ezek a változók csak addig élnek, amíg az a blokk fut, ahol deklarálták őket (pl. fv, vagy ciklus stb.)
void function() {
int loc;
/* műveletek ... */
/* fv vége */
/* itt a 'loc' változó felszabadul */
}Ez azt jelenti, hogy amint vége van a blokknak, a memóriaterület, ahol a változó volt tárolva, felszabadul, tehát bmilyen más dologra felhasználhatóvá válik, nem lehet ezt a változót többet legálisan használni.
Ha dinamikusan foglalod le a memóriát, akkor az a blokk vége után sem szabadul fel, csak akkor, amikor te explicit mondod neki.
void function() {
int* a = new int;
/* itt maga a mutató felszabadul, tehát a változó, ami az újonnan
lefoglalt érték címét tartalmazza, de maga az újonnan létrehozott érték nem szabadul fel */
}Persze ha itt nem tárolod el vhol az újonann létrehozott objektum címét, akkor sosem fogod tudni manuálisan felszabadítani sem, ezt hívják memory leaknek.
-
WonderCSabo
félisten
válasz
chabeee #2106 üzenetére
Ez most komoly? Beraksz egy ekkora projektet ez zipben ilyen általános kérdéssel? Legalább szűkítenéd le, hogy hol keressük.
De rendes vagyok és megnéztem... Eleve nem fordul, egyrészt azért, mert a MenuBuilder* VarazsloFactory::createMenuBuilder() metódusban polimorf módon egy VarazsloMenuBuilder-t akarsz visszaadni, csak ez nem gyereke a MenuBuilder-nek. A másik probléma az, hogy hiányzik a void jatekos::elotortenet() függvény implementációja.
-
WonderCSabo
félisten
válasz
Jester01 #2086 üzenetére
Bocs, teljesen hülye vagyok, összekevertem a másik iránnyal, általában kiíró operátort szoktam írni, elnézést kérek, nem figyeltem.
#include <string>
#include <iostream>
class c {
public:
// std::ostream& operator<<(std::ostream& os) { // ez nem megy
// return os;
// }
};
std::ostream& operator<<(std::ostream& os, c& a) {
return os;
}
int main() {
c a;
std::cout << a;
return 0;
} -
WonderCSabo
félisten
válasz
chabeee #2083 üzenetére
Ehhez én annyit tennék hozzá, hogy gondolom azért térsz vissza az objektummal, mert szeretnéd, hogy láncolva lehessen hívni az operátort. Csak ez úgy nem fog működni, ha tagfüggvényként deklarálod.
Ha tagfényként deklarálod, például így:
class CS {
public:
CS& operator<<(int be);
};Akkor az valójában így fog "megjelenni" fordítás után:
CS & operator<<(int be, CS& cs);
Ezzel még működni fog ez a hívás:
cs << 2;
De ez már nem:
cs << 2 << 3;
Megoldás: ha szeretnéd, hogy láncolni lehessen, globális operátort kell definiálnod, így:
CS & operator<<(CS& cs, int be);
-
WonderCSabo
félisten
A következőt teheted:
1. lépésben kiválasztod a 10. legkisebb elemet valamelyik kiválasztó algoritmussal.
2. lépésben még egyszer végigiterálsz a listádon, és ha az aktuális elem kisebb vagy egyenlő a 10. legkisebb elemmel, akkor kiírod.Arra figyelj, hogy van a linken felsoroltak között van olyan algoritmus, ami megváltoztatja a listádat. Ha olyat használsz, akkor először másold le az egész listát, hogy az eredeti ne változzon.
Egy másik módszer lehet, hogy ha rendező algoritmust használsz, vagy elemeket rendezetten tároló segéd adatszerkezetet, de asszem egyszerűbb lesz számodra az előző megoldás.
-
WonderCSabo
félisten
Miért, elég egyszer is végigmenni a fájlhoz egy ilyen lekérdezéshez.
akiknek csak egy sikeres próbálkozása (150 cm-nél magasabb ugrása) volt
Megnézed, hogy az aktuális épp beolvasott embernek hány nagyobb ugrása volt, mint 150, ha 1, akkor kiírod a konzolra a nevét.valamint adja meg a legjobb ugrást teljesítő sportoló nevét és összes eredményét!
Sima max keresés az ugrás magassának függvényében, ezt tudod egy menetben az előző lekérdezéssel végezni. Temporális változóban tárolnod kell az éppen legjobb sportoló összes eredményét.Látható, hogy az egész cucchoz a memóriában két ember adatait (a struktáradat) kell tárolnod, egyrészt az éppen legjobbnak tartottat, másrészt az éppen beolvasottat, és egyszer végigolvasni a fájlt elég is.
-
WonderCSabo
félisten
Vagy akár lehetne std::bitset.
-
WonderCSabo
félisten
Alapvetően ez minden programnál így van. Ha minden feladatot elvégzett, akkor leáll. Épp ezért az IDEk a parancssorok progik esetén maguk akasztják meg a parancssor ablak bezárását, pl. a Code::Blocks is ezt teszi, alapból. Projectre jobbgomb -> Properties -> Build targets -> Pause when esecution ends.
-
WonderCSabo
félisten
válasz
Azazel999 #1976 üzenetére
Nem értem, miért kéne hámoznod? Megfogod a részgát a gyökerénél fogva, és átláncolod. Ez "húzza" magával a többit is, minden alatta lévő elem hozzá van láncolva (már ha jó az implementációd).
Ja és természetesen javában is lehet láncolt adatszerkezeteket csinálni, mivel a java referenciákkal dolgozik...
-
-
WonderCSabo
félisten
Először azt akartam írni, hogy az Eclipse ilyet nem tud, de télleg. Írok egy ilyen kódot:
package main;
import java.util.*;
public class Main {
public static void main(String[] args) {
System.out.println(Arrays.toString(new int[] {1, 2, 3}));
System.out.println(new Date(System.currentTimeMillis()));
}
}És az Organize imports parancsra átalakítja erre:
import java.util.Arrays;
import java.util.Date;Tuti.
-
WonderCSabo
félisten
Hát sajna az Eclipse CDT azért közel sem annyira jó, mint a Java környezet, de azért a Code::Blocksnál valóban okosabb.
modder: Ezzel a foreach-el még én sem találkoztam, csak a Boost-os trükközös megoldással.
És 4.6-os GCC már támogatja.
dabadab: Tudtommal nem is lesz finally.
-
WonderCSabo
félisten
válasz
WonderCSabo #1711 üzenetére
Bocs, lejárt a szerk idő.
Egyébként bmennyere IntelliSensenek hívja az MS, közel sem annyira intelligens. Az Eclipse kód kiegészítője sokkal jobb nála. És most természetesen nem arra gondolok, hogy nem bmi beíráskor ajánl fel dolgokat, mert azt be is lehet állítani... Ha az IntelliSensenél bhol rácsapok a Ctrl+Space-re, akkor mindig ugyanazt a listát dobja fel, amiben a találatok 99.99999%-a totál irreleváns az adott kódrészletre. Az Eclipse pedig felismeri, hogy éppen mit akarsz írni, és abban segít: végigiterálsz egy collectionon, vagy írsz egy felüldefiniált fvt, megvalósítasz vmi elcseszett generices fvt, tökmindegy, az Eclipse faszán kiegészíti, és azt írja le, amit éppen Te is akartál volna. Még a változónevek kitalálásában is segít, így konzisztens lesz a kód. Ezerszer jobb, mint ez az "Intelli"Sense.
-
WonderCSabo
félisten
-
-
WonderCSabo
félisten
Második félév van, persze lehet, hogy a kolléga keresztféléves? Egyébként übergáz ez a feladatkiírás. Magyar nyelvű osztály és metódusnevek? Ez most komoly? Az egyik még ékezetes is
! Statikus változó, amikor ennek baromira nincs így értelme? Azért könyörgöm, elég egyszerű kitalálni normális feladatot staticra... Meg ugye elég szájbarágós is az egész. Azon meg már csak röhögnöm kell, hogy egy db. nyúlfarknyi osztályhoz is UML diagrammot kérnek.
Az uccsó SzomszedKeres fv. viszont értelmetlenül van leírva...
Egyébként poéból megírtam a feladatot 8 perc alatt. A legtöbb időm azzal ment el, hogy nem értettem miért parázik a fordító, ha minden fv. elé odaírom a láthatóságot.
(túl sok java és c# kódot írtam mostanság)
Egyébként pedig ha ez télleg proginf (remélem nem az), akkor eléggé csalódtam benne. Mi ennél jóval faszább szintre jutottunk el egy félév alatt. -
WonderCSabo
félisten
Mégis miben kéne segíteni? A feladat eléggé explicit, szinte minden le van szó szerint írva, csak implementálni kell C++ nyelven. Helyetted nem írhatjuk le az egész kódot, és a szintaktikát, nyelvi elemeket sem magyarázhatjuk el egyenként.
Meddig jutottál el, miben akadtál el?
-
WonderCSabo
félisten
válasz
Jhonny06 #1659 üzenetére
Bocs, kifutottam a szerk.-ből.
Azzal nincs is gond, ha egy C++ projektben meglátod az stdiot, a iostream által csatolt headerek az stdiot is használják.
#1664) kmisi99: Exét a fordításkor "csinál" a fordító, különben nem futna a programod. A C++ nem interpretált nyelv. Grafikus felületet "adni neki" nem lehet csak úgy, azt sztem még felejtsd el, ha még ezt a triviális feladatot sem sikerült magadtól megoldani.
hogy így írom be a szavakat hogy
cat/macska
vagy így
cat-macska
szóval nem tudom hogy a dic txt-t is hogyan kell elkészíteni.Könyörgöm, nézd meg a forráskódot, hogyan olvassa be a fájlból, és annak megfelelő formátumban írd bele.
-
WonderCSabo
félisten
válasz
Sk8erPeter #1654 üzenetére
Mitől overkill? Egyrészt több erőforrást zabál, másrészt baromi lassú, főleg az indulása, iszonyat mennyiségű temporaryt foglal le, a telepítési méretéről ne is beszéljek, meg a kismillió mellékprogit, amit felrak magának a működéshez. Igen, egy kezdőnek egyértelműen overkill, ezt a véleményt továbbra is tartom. Azt viszont sehol sem írtam, hogy rossz IDE, én használom a VSt, és kedvelem is, de pl. az Eclipset jobbnak tartom.
Ez a kezdő programozó "nem segítése" dolog a saját véleményem, kéretik nem megkövezni, senkinek se mondtam, hogy értsen egyet vele.
-
WonderCSabo
félisten
válasz
dabadab #1649 üzenetére
Azon nincs mit megtanulni, hogy nem irunk elerhetetlen kodreszleteket, ezt mindenki tudja magatol is.
Túl optimista vagy, én nem ezt tapasztalom.
Persze, nyilván tervezési hibákat nem fog észrevenni, hálistennek, különben nem lenne szükség programozókra. Én úgy vagyok vele, hogy jobb ha megtanulja az ember ezeket a bénázásokat is, nem jó arra támaszkodni mindig, hogy majd az IDE úgy is kijavítja, ha hülyeséget írok. Szvsz.
-
WonderCSabo
félisten
válasz
dabadab #1644 üzenetére
Ja, es olyan IDE-t meg nem lattam, ami erdemi programozoi hibakat javitott volna.
Láttad, hogy én kezdőkről beszéltem. Azért az Eclipse pl. elég okos IDE, pl. szól, ha olyan kódot írsz, amit nem lehet elérni (pl. végtelen ciklus után, vagy return után), a legperverzebb generices elcseszett szintaktikádat is képes kijavítani, exception, null referencia, inicializálás lehagyása után rögtön szól, stb., stb.
Kösz ezt a Qt Creatort, névről ismertem, majd egyszer meglesem.
proci985: Borlandot ki kéne már írtani az oktatásból. A VS-t én semmiképpen nem ajánlanám kezdőknek, egyrészt overkill, másrészt ne kössük már az embereket rögtön az MS-hez és a nem portolható kódgyártáshoz.
Szerk.: Hol tanulsz?
-
WonderCSabo
félisten
válasz
Sk8erPeter #1642 üzenetére
Én is papíron írtam ZHt, az első félév évközijét is, meg a 3. félév évközijét is.
Szerk.: OFF.
-
WonderCSabo
félisten
válasz
Sk8erPeter #1639 üzenetére
Eclipse CDT toolchaint konfigurálni sztem a kollégának nem fog menni elsőre...
proci985 és Sk8erPeter: Én se az Eclipset, se NetBeanst, se VSt nem ajánlanám egy kezdő programozónak. Oké, hogy baromi okosak, de pont emiatt veszélyesek is. Minden hibát kijavít, a kezdő tanuló így meg se akar tanulni szépen kódolni, és gány lesz a programja, ha meg esetleg vmi komolyabb hibába fut, amit már az IDE nem képes megoldani, akkor pedig csak néz mint borjú az új kapura. Persze később már jöhet egy "színes-szagos" IDE, mert baromira meggyorsítja a munkát, hanem kell a vacakságokkal pöcsölni, mert kijavítja/kiegészíti az IDE.
-
WonderCSabo
félisten
válasz
Sk8erPeter #1637 üzenetére
Okés, akkor várom a javaslatokat, hogy a kolléga hogyan fordítson, mert ez a fos Borland cucc sehogy se akar Neki menni, egy Visual Studiot felrakni nem kicsit overkill ide, a Code::Blocks pedg télleg lightwight, és azon se kell semmit konfigolni.
A kódkiegészítés csak sima szavakat tud, egész fv meg osztály definíciókat nem rak be Neked, mint az Eclipse, de egy kezdőnek marhára elég kell, hogy legyen.
Szerk.: Ja és várom a Code::Blocks-nál jobb, ingyenes C++ IDEket, mert télleg szívesen kipróbálom őket. Már ha vannak.
-
WonderCSabo
félisten
válasz
kmisi99 #1635 üzenetére
Ebben a hszben már kijavítottam a netes kódodat, az működik... Nem tudom mi a baja a borland fordítónak, véletlenül nem C-s projektként akarsz fordítani? Rakj fel egy Code::Blocks-ot, azon simán fog menni.
-
WonderCSabo
félisten
válasz
Jhonny06 #1626 üzenetére
Én úgy értettem a kérdését, hogy még a kezdeti cuccokat se írja ki a progi, csak felvillan és bezáródik, ami azért fura mert van egy bekérés rögtön az elején. De lehet, hogy félreértettem, és az a gond, amit Te írtál.
A megakasztáshoz viszont két cin.get() kell a végére, mert a cin-en még ottmarad a bekért szám után a newline, és azt egy cin.get() simán bekajálja.
-
WonderCSabo
félisten
válasz
kmisi99 #1620 üzenetére
Elnézést, az aposztróf közé rakás nem volt hiba, csak siettem és megzavart a ch változó neve...
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class Dictionary
{
private:
char alphabet;
string meaning;
string word;
public:
void getmeaning(std::string *p);
void search()
{
string word;
cout<<"enter a word :";
cin>>word;
getmeaning(&word);
}
} di;
void Dictionary::getmeaning(std::string *p)
{
string a,b;
// Assume there exists a dictionary dic.txt
// Remember to add proper error handling (file operation)
ifstream get("dic.txt",ios::in);
while ( !get.eof())
{
get>>a>>b;
if (*p==a)
{
cout<<a<<" "<<b;
}
}
}
int main()
{
int ch;
cout<<"=D=I=C=T="<<endl;
cout<<"1.Show meaning"<<endl;
cout<<"2.Show word"<<endl;
cout<<"3.Exit"<<endl;
cin>>ch;
switch(ch)
{
case 1:
di.search();
break;
case 2:
{
string word;
cout<<"enter a word :";
cin>>word;
di.getmeaning(&word);
break;
}
case 3 :
return 0;
}
return 0;
}Leírtam előző hszemben az összes hibát, és a javításokat is. Lemásolsz egy kódot, más leírja, hogyan javíthatod ki, és még az se megy?...
proci985: Nem, nem kell neki default, hibákért lásd előző hszemet.
-
WonderCSabo
félisten
válasz
WonderCSabo #1616 üzenetére
Szerk.: Na jó, a gyors átfutás után megnéztem fordítóval is a kódot... Hiányzik a main bezáró }-a, a case blokkban való változó deklaráció miatt sír a fordító ( { } közé kéne rakni a blokkot), illetve a getmeaning rosszul van meghívva switchben, helyesen: di.getmeaning(&word);, plusz a main végére kell egy return 0; mert csak abban az esetben tér vissza, ha a case 3 fut le. A case -ekben meg nem ártana két aposztróf közé tenni a számokat, mert kétlem, hogy a user SOH, STX vagy ETX karaktereket vinne be...
-
WonderCSabo
félisten
válasz
kmisi99 #1614 üzenetére
Elég gány ez a kód. Egyik fv-t az osztályon belül deklarálja, a másikat nem, semmi logika alapján, egyszer a felhasználói bevitelt az osztály metódusán belül kezeli, másszor azon kívül. A char alphabet változó teljesen feleslegesen van deklarálva, a getmeaning-nek totál hülyeség pointert átadni, ha memóriát akarsz spórolni akkor konstans referenciát inkább. Az std:: névteret minek írja ki, ha már gány módon behúzta globálba? Ez a program baromi lassú lesz, minden egyes szótárműveletnél beolvassa az egész fájlt, ahelyett, hogy feltöltené vmi kis "adatbázisba" a memóriában. Sőt, még azzal se foglalkozik, ha már megtalálta a jelentést, szépen végigolvassa a fájlt tovább...
Csak az a baj eléggé szar vagyok programozásból így inkább a fejem használtam. A google ki is adta nekem ezt a forráskódot mit gondoltok ez működhet?
Arra használtad a fejed, hogy kikopizd a kódot vhonnan?
A progi egyébként természetesen működik, ha jól látom, de én ezt több ok miatt nem adnám be:
- gány
- asszem a közéleti események után már mindenki érzi, hogy mennyire nagy gond az, ha vki MÁSOLT
- és nem tanulsz vele semmit -
WonderCSabo
félisten
válasz
proci985 #1609 üzenetére
és log100(100) == 1
és ezt most hogy jön ide? Te írtad, hogy:
log100, tehát 10 lépés
Gondolom az alap specifikálása nélkül 10-es alapra gondoltál, és log10(100) != 10 lépés, azért javítottalak ki...
persze, egy 11.be járónál inkább nem fejtettem ki az ordot, a lépésszámot, meg az egyéb kapcsolatos szépségeket
.
Hol írtam én, hogy azt kellett volna tenned?
(#1610) proci985: struct is működik, de akkor globálisak lesznek ezek a változók
Nem globálisak, publikusak.
Chipi333: Így van, ha télleg csak struktúraként használod, akkor teljesen jó a struct, az iparban is így használják.
cooldongo: Most látom, hogy a C topikba is beírtad a kérésedet. Dönts már el, hogy C-ben vagy C++ -ban kell megoldanod a feladatot. Mert ha C-ben, akkor a C++ -os megoldás le se fog fordulni...
-
WonderCSabo
félisten
válasz
kmisi99 #1601 üzenetére
Akkor deklarálsz magadnak két sima, statikus tömböt, ugyanolyan mérettel. Feltételezed, hogy a szópárak száma megegyezik, de legalábbis nem nagyobb a tömbök méreténél. Van egy / két fájlod, amely(ek)ben soronként egy szó/pár van. Soronként végighaladsz a fájl(ok)on, és berakod a tömb i-dik elemébe. Ezzel feltöltötted az "adatbázist". A fordítás pedig úgy történik, hogy egy for ciklussal végigmész az angol szavakat tartalmazó tömbön, ha az aktuális elem egyezik a fordítandó szóval, akkor megjegyzed az elem indexét. És ezt az indexű elemet kéred el a másik, magyar szavakat tartalmazó tömbtől.
A lineáris keresés pont az, amit az előző bekezdés uccsó előtti mondatában írtam. Végigmész minden elemen, és ha az aktuális elem megegyezik a keresendővel, megjegyzed az indexet, és kilépsz a ciklusból. És azért lineáris, mert az algoritmus futásideje lineárisan arányos az elemek számával.
A vektor, vagyis a C++ - ban vector, egy dinamikus adatszerkezet, pontosabban egy dinamikus tömb. Ha megtelik, és akarsz még elemet belerakni, automatikusan növeli a méretét.
-
WonderCSabo
félisten
válasz
kmisi99 #1599 üzenetére
Gondolom van egy/kettő fájlod, amiben az angol-magyar szópárok vannak felsorolva. Nos, ezekből szépen beolvasod a párokat egy vektorba, ami stringekbből álló pair - eket tárol, vagy két vektorba, ami stringeket tárolnak. Végigmész a fájlon, és feltöltöd az "adatbázisodat". Ezek után úgy tudsz fordítani, hogy lineáris kereséssel végigmész a vektoron, és ha megvan az angol szó, akkor a magyar párját kiírod.
Ha gyorsítani akarod a dolgot, használj map - et, és akkor lineáris keresés helyett logaritmikusat használsz, cserébe a feltöltés kvázi konstans időigény helyett logaritmikus lesz.
-
WonderCSabo
félisten
válasz
csepcsavoka #1593 üzenetére
Átírtam C++ -osra, mert a feladatkiírást elolvasva látom, hogy valszeg C++ -ban kell (vectort említi). A távirat feltöltést és postán maradó számolást ez alapján meg tudod írni.
Ú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!
- AMD Ryzen 7 5700X processzor eladó /Garanciás/
- Xbox Series S + 2 kontroller
- Dell laptop eladó i5 11. gen, 8GB RAM, 512GB SSD, újszerű állapotban!
- Bomba ár! HP EliteBook Folio 1040 G1 - i5-G4 I 8GB I 256GB SSD I 14" HD+ I Cam I W10 I Garancia!
- Bomba ár! HP Elitebook Folio 9470M - i5-3GEN I 8GB I 256GB SSD I 14" I DP I Cam I W10 I Garancia!
- Bomba ár! Fujitsu LifeBook U757 - i3-7GEN I 16GB I 256SSD I 15,6" FHD I HDMI I Cam I W11 I Garancia!
- Bomba ár! HP ProBook 430 G8 - i5-1135G7 I 16GB I 256GB SSD I HDMI I 13,3" FHD I Cam I W11 I Gari!
- Akciós Windows 10 pro + Office 2019 professional plus csomag AZONNALI SZÁLLÍTÁS
- Samsung Galaxy S21 Ultra , 12GB , 128 GB , Kártyafüggetlen
- Bomba ár! Dell Latitude 5310 - i5-10GEN I 16GB I 256SSD I HDMI I 13,3" FHD I Cam I W11 I Garancia!
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged