Új hozzászólás Aktív témák
-
Karma
félisten
válasz
kmisi99
#2488
üzenetére
WonderCSabo már szólt korábban, úgyhogy még mielőtt nagyon belemennénk, tedd fel a kérdést a C programozás topikban, ahová való.
-
-
-
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
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
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 -
proci985
MODERÁTOR
válasz
kmisi99
#1601
üzenetére
üss fel egy könyvet és nézz utánna, vektort sokkal egyszerűbb használni, mint egy statikus tömböt szvsz. map is csak leírva hangzik bonyolultan.
alternatíva: szerintem egyszerűbb egy kétdimenziós tömb, aminél a nulladik tömbelem az angol, első a magyar. ha a szöveges állományt pl le lehet tárolni egy tömbben, és jól veszem ki, hogy nem feltétlenül kell fileból olvasgatni.
aztán forciklus, végigmész a tömb nulladik elemein, ha egyezik a beírt és a tömbben letárolt string, akkor pedig kiíratod a tömb[1] es elemet. csúnya megoldás, de szerintem ennél egyszerűbben nem megy. előny, hogy nem kell két tömb (macera őket egymáshoz láncolni), hátrány van sok, de alapvetően iskolapéldának lekódolni egyszerű.
-
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.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Milyen videókártyát?
- OLED monitor topic
- One otthoni szolgáltatások (TV, internet, telefon)
- Battlefield 6
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Mibe tegyem a megtakarításaimat?
- Azonnali VGA-s kérdések órája
- PlayStation 5
- Milyen autót vegyek?
- Beköszöntött az űrinternet kora
- További aktív témák...
- Vadonatúj, bontatlan iPhone 17 256GB kék KÁRTYAFÜGGETLEN! 1 év Apple garancia!
- (Használt/Used) Huawei Mate 20 Pro - 128 GB - Midnight Blue (Unlocked/Kártyafüggetlen)
- Gigabyte B450M S2H + Ryzen 5 1400 + MSI GTX 1650 Super 4GB
- "Szinte Új" iPad Pro 12.9 (3. gen) + Apple Pencil 2 + Smart Folio tok
- ASUS TUF Gaming VG34VQL3A 34" Ívelt Gamer Monitor
- Részletre elviheted akár 365 napra Bankmentes , azonnal elérhető Dell GAMER laptop G15 5511
- Eredeti Lenovo USB-C 65W töltő (használtak) (ELKELTEK)
- ÁRGARANCIA!Épített KomPhone i9 14900KF 64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- HIBÁTLAN iPhone 14 256GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3242
- BESZÁMÍTÁS! ASUS ROG Phone 9 Pro 16GB/512GB telefon garanciával hibátlan működéssel
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő

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:

