- Milyen videókártyát?
- Milyen TV-t vegyek?
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Fujifilm X
- Ez már a középkategória: teszten a GeForce RTX 5070
- Milyen billentyűzetet vegyek?
- OLED TV topic
- Everest / AIDA64 topik
- HiFi műszaki szemmel - sztereó hangrendszerek
- Megjelent a Red Magic kompakt OLED kijelzős gaming táblagépe
Ú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
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Kazy Computers - Fehérvár - Megbízható?
- Milyen videókártyát?
- Automata kávégépek
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Okosóra és okoskiegészítő topik
- exHWSW - Értünk mindenhez IS
- Milyen TV-t vegyek?
- Óra topik
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Milyen okostelefont vegyek?
- További aktív témák...
- Telefon felvásárlás!! iPhone 15/iPhone 15 Plus/iPhone 15 Pro/iPhone 15 Pro Max
- Új és régi konzolok Okosítása/Softmodoloása, és Szoftveres szintű javítása - RÉSZLETEK A LEÍRÁSBAN
- Canon imagePrograf PRO-6100S plotter - szinte új, 500m2 nyomat
- iKing.Hu - Samsung S25 Ultra - Használt, karcmentes
- Apple iPhone 12 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest