- D1Rect: Nagy "hülyétkapokazapróktól" topik
- gban: Ingyen kellene, de tegnapra
- Klaus Duran: 2025 dude
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Magga: PLEX: multimédia az egész lakásban
- btz: Internet fejlesztés országosan!
- sh4d0w: Csak a profit - emberélet nem számít
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- RIOS Gépház: Alap vagy Profi? Két új üzleti előfizetés debütál a Hardveraprón!
Ú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 TV-t vegyek?
- Formula-1
- Samsung Galaxy Watch6 Classic - tekerd!
- Intel találgatós topik
- Miskolc és környéke adok-veszek-beszélgetek
- Intel Core Ultra 3, Core Ultra 5, Ultra 7, Ultra 9 "Arrow Lake" LGA 1851
- Könyvajánló
- Path of Exile (ARPG)
- Alakul a SpaceX Starlink európai ellenfele
- Objektívek topikja
- További aktív témák...
- Honor 200 , 8/256GB , Kártyafüggetlen
- OLCSÓBB!!! Apple Ipad Pro 2 gen2 10,5" 2K retina A1709 64GB
- Samsung S25 Ultra 256GB Csak kipróbált!! Jótállás: 2028.06.19.-ig
- BESZÁMÍTÁS! Gigabyte H610M i5 13400F 16GB DDR4 512GB SSD RX 6700XT 12GB DeepCool MATREXX 40 650W
- Xiaomi Redmi Note 13 256GB Kártyafüggetlen 1Év Garanciával
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest