Nem annak, abból van const overload. Hanem ahogy írtam is, a String::print metódust kell const-tá alakítani.
Jester
Nem annak, abból van const overload. Hanem ahogy írtam is, a String::print metódust kell const-tá alakítani.
Jester
Legközelebb azért az ilyen hosszúakat légyszi a pastebin.com-ra, vagy a pastie.org-ra copy-paste-eld, ezeken az oldalakon szépen kiemeli a szintaktikát is (ha bejelölöd, hogy pl. C++ nyelvű forráskód), és így könnyebb áttekinteni, mint itt a PH-n. Ja, és ide csak dobd be a linket, amit kapsz a bemásolás után.
[ Szerkesztve ]
Sk8erPeter
Sziasztok!
Van egy új problémám. :S
A feladat szövege:
Írjunk C++ programot a következő feladatra:
A Húsvéti Nyúl háromfajta ajándékot (Gift) oszt:
színes tojást (ColoredEgg),
csokitfigurát (ChocolateFigure),
cukrot (Candy).
Mindegyik különböző súlyú, az alapegység egy statikus változója az alaposztálynak (baseWeight=10).
A színes tojás súlya darabonként ennek konstansszorosa (eggFactor=9), míg a csoki esetében ez a tényező chocolateFactor=10.5, a cukornál candyFactor=13.2.
A Nyúlnak írt programunk egy tömbben tartja nyilván a kiosztott ajándékokat. Az egyes ajándékok darabszámot is tartalmaznak. A színes tojásnál saját paraméterként nyilvántartjuk még a színt (RED, GREEN, BLUE, VIOLET), a csokifiguránál az olvadáspontot (MeltingPoint), a cukorkánál a minőséget (HARD, SOFT). A célunk kiszámolni és kiírni az egyes ajándékok súlyát (getWeight()).
a) Implementáljuk az osztályokat és konstansokat az EasterBunny névtérben figyelve arra, hogy esetlegesen egyes konstansokat is tagként vagy statikus tagként érdemes implementálni. Ne legyen egy függvénytörzsben sem felesleges, nem használt kód! Egy új ajándéktípus esetleges felvételéhez ne kelljen a már meglévő osztályokat módosítani!
b) Írjon egy egyszerű programot (nem dinamikus tömbbel!), ami megmutatja legalább három különböző típusú ajándék felvételét, valamint kiírja a nevüket a súlyukat és a paraméterüket.
A nem működő megoldásom az alábbi linkeken látható:
Headers.h
http://pastebin.com/YWd9tYSb
Functions.cpp
http://pastebin.com/hYSd5Vu3
Testing.cpp
http://pastebin.com/6SveRAWV
A problémáim:
- A Testing.cpp fájlban létrehozott tömböm elemeinek neveit miként tudom kiírni a for ciklusban?
- Az alosztályok egyedi paramétereit hogy tudnám kiírni?
Az általam használt módszer igazábból már ott "megbukott", hogy a getParameter függvényt kéri a Gift osztályba is, de oda a feladat kritériumai szerint nem tehetem be. Ezen megoldásomban még benne van, de itt az ostream ír hibát.
Kérlek segítsetek.
Előre is köszönöm.
Üdvözlettel: Papa
[ Szerkesztve ]
Sziasztok!
Egy conosle applicationt szeretnék grafikus felülettel megáldani. Lényegébe a graf felhasználói felületen csak indulóparamétereket kérnék be, amivel majd fog futni a program.
Próbáltam windows form-ban a meglévő kódomat alkalmazni, de van pár hely ahol hibát dob, mert nem managed kódban történtek a dolgok (ilyen pl.egy új szál indítása).
Megoldható e úgy a dolog, hogy a meglevő programomból egy függvényt csinálok, majd lefordítom DLL-be? Majd ezt a DLL-t felhasználni a windows form programban a megfelelő paraméterek meghívása után?
van lehetoseg nativ kod hivasara managed kodbol: DllImport
in asm we trust
Hali!
Az eredeti kód azért nem fordul, mert void visszatérési értékű a getParameter() függvényed a Gift osztályban, ami miatt a cout elszáll.
Ezt megoldhatod úgy, hogy inkább double visszatérési értékűvé változtatod:
double getParameter(){ return 0; }; /// void getParameter(){} helyett
De ennél a kiíratást egyszerűbben oldanám meg, mondjuk lehetne minden osztálynak egy void print() művelete, ami épp a feladat által kiírt tulajdonságokat írná ki.
Egy lehetséges példa a Te feladatodra vonatkozóan:
-a Gift osztályban deklarálj egy
virtual void print();
függvényt, az összes többi osztályban pedig egy sima (nem virtuális)
void print();
függvényt.
-maga a megvalósítás pedig a következőképpen nézhetne ki (csak egy lehetséges megoldás, lehetne rajta bőven csiszolni, de gyorsmegoldásként szerintem megfelel):
using namespace std;
void Gift::print()
{
cout << "Weight: " << baseWeight << endl;
cout << "Quantity: " << db << endl;
}
void ColoredEgg::print()
{
cout << "Name: Colored Egg" << endl;
cout << "Quantity: " << getWeight() << endl;
//Paraméter:
char colours[4][7] = { "RED", "GREEN", "BLUE", "VIOLET" };
cout <<"Color: "<< colours[colour] << endl;
}
void ChocolateFigure::print()
{
cout << "Name: Chocolate Figure" << endl;
cout << "Quantity: " << getWeight() << endl;
//Paraméter:
std::cout <<"Melting Point: "<< MeltingPoint << endl;
}
void Candy::print()
{
cout << "Name: Candy" << endl;
cout << "Quantity: " << getWeight() << endl;
//Paraméter:
char quality_names[4][5] = { "HARD" , "SOFT" };
std::cout <<"Quality: "<< quality_names[quality] << endl;
}
-Ezenkívül szerintem a destruktort a Gift osztályban virtuálissá kellene tenned, hogy ne legyen memóriaszivárgás:
virtual ~Gift() {}
A Testing.cpp-ben pedig a for ciklus akkor ez alapján a következőképpen nézhetne ki (a többi rendben van):
for (int i = 0; i < 3; i++) // kiíratjuk
{
cout << "************************" <<endl; //csak az elválasztás kedvéért
Present[i]->print();
}
Sk8erPeter
Sziasztok!
Van egy beadandóm és valamiért nem akar lefutni, hibát nem dob ki, csak simán kiakad! CodeBlocks-ban írom... tudom van jobb is... a debuggal arra jutottam hogy megakad a keres fgv-ben az if-es sorban. legalábbis oda rakta a sárga nyilat a debug..
A feladat: "Egy N résztvevőjű kutyaszépségversenyen M különböző szempont szerint pontoznak minden kutyát, s az eredményt a KUTYA(N,M) mátrix tartalmazza. Minden szempont alapján maximum MAX(I) pont adható (nem negatív egész szám). Az összetett versenyből automatikusan kiesik az a kutya, amely valamelyik kategóriában nem éri el a kategóriánként megadott alsó ponthatárt (MIN(I)). Készítsen C++ programot, amely megadja azt a kategóriát, ahol a legkevesebb kieső volt!"
És a kód:
#include <iostream>
using namespace std;
void beolvas(int&, int&, int*, int*, int**);
void keres(int&, int&, int*, int*, int**);
void kiir(int&, int&, int*);
int main()
{
int n,m;
cout << "Kutyaszepsegverseny" << endl << endl;
int *min, *max, *k;
int** kutya;
beolvas(n,m,max,min,kutya);//ellenőrzött beolvasás
k = new int[m];
keres(n,m,k,min,kutya);//legkevesebb kieső keresése
kiir(n,m,k);//az összes legkevesebb kieső kiírása
return 0;
}
void beolvas(int &n, int &m, int* max, int* min, int** kutya){
bool rossz=true;
string temp;
do {
cout << "Hany kutya szerepel (1-...): ";
cin >> n;
if (cin.fail()) {
cout << "Nem szamot adott meg!" << endl << "Adjon meg egy pozitiv egesz szamot!" << endl;
rossz=true;
}else {
rossz= (n<1);
if (rossz) {
cout << "Helytelen erteket adott meg!" << endl << "Adjon meg egy pozitiv egesz szamot!" << endl;
}
}
cin.clear(); getline (cin,temp,'\n');
}while (rossz);//kutyák számának (n) ellenőrzött beolvasása
do {
cout << endl <<"Hany szempontot pontoznak (1-...): ";
cin >> m;
if (cin.fail()) {
cout << "Nem szamot adott meg!" << endl << "Adjon meg egy pozitiv egesz szamot!" << endl;
rossz=true;
}else {
rossz= (m<1);
if (rossz) {
cout << "Helytelen erteket adott meg!" << endl << "Adjon meg egy pozitiv egesz szamot!" << endl;
}
}
cin.clear(); getline (cin,temp,'\n');
cout << endl;
}while (rossz);//szempontok számának (m) ellenőrzött beolvasása
max = new int[m];
for (int i=1; i<=m; i++){
do{
cout << i << ". szempont maximum ponthatara (2-...): "; cin >> max[i-1];
if (cin.fail()) {
cout << "Nem szamot adott meg!" << endl << "Adjon meg egy kettonel nagyobb egesz szamot!" << endl;
rossz=true;
}else {
rossz= (max[i-1]<2);
if (rossz) {
cout << "Helytelen erteket adott meg!" << endl << "Adjon meg egy kettonel nagyobb egesz szamot!" << endl;
}
}
cin.clear(); getline (cin,temp,'\n');
}while (rossz);
}//szempontok maximum ponthatára
min = new int[m];
for (int i=1; i<=m; i++){
do{
cout << i << ". szempont minimum ponthatara (0-" << max[i-1]-1 << "): "; cin >> min[i-1];
if (cin.fail()) {
cout << "Nem szamot adott meg!" << endl << "Adjon meg egy nem negativ szamot (0-" << max[i-1]-1 << ")!" << endl;
rossz=true;
}else {
rossz= ((min[i-1]<0) || (min[i-1]>=max[i-1]));
if (rossz) {
cout << "Helytelen erteket adott meg!" << endl << "Adjon meg egy nem negativ szamot (0-" << max[i-1]-1 << ")!" << endl;
}
}
cin.clear(); getline (cin,temp,'\n');
}while (rossz);
}//szempontok minimum ponthatára
kutya = new int*[n];
for (int i=1; i<=n; i++){
kutya[i-1] = new int[m];
}
for (int i=1; i<=n; i++){
for (int j=1; j<=m; j++){
do{
cout << i << ". kutya " << j << ". szempontra kapott pontja (maximum: " << max[j-1] << "): "; cin >> kutya[i-1][j-1];
if (cin.fail()) {
cout << "Nem szamot adott meg!" << endl << "Adjon meg egy nem negativ szamot (0-" << max[j-1] << ")!" << endl;
rossz=true;
}else {
rossz= ((kutya[i-1][j-1]<0) || (kutya[i-1][j-1]>max[j-1]));
if (rossz) {
cout << "Helytelen erteket adott meg!" << endl << "Adjon meg egy nem negativ szamot (0-" << max[j-1] << ")!" << endl;
}
}
cin.clear(); getline (cin,temp,'\n');
}while (rossz);
}
}
}
void keres(int &n, int &m, int* k, int* min, int** kutya){
for (int j=1; j<=m; j++){
k[j-1]=0;
for (int i=1; i<=n; i++){
if (kutya[i-1][j-1]<=min[j-1]) {
k[j-1]=k[j-1]+1;
}
}
}
}
void kiir(int &n, int &m, int* k){
int v=n;
for (int i=1; i<=m; i++){
if (k[i-1]<v) {
v=k[i-1];
}
}
if (v==0) {
for (int i=1; i<=m; i++){
if (k[i-1]==v) {
cout << i <<". szempont szerint nem volt kieső kutya!" << endl;
}
}
}else {
for (int i=1; i<=m; i++){
if (k[i-1]==v) {
cout << i <<". szempont szerint volt a legkevesebb kieső kutya!" << endl;
}
}
}
}
Nagyon megköszönném a segítségeteket, mert már semmi ötletem sincs hogy miért nem megy!
üdv: Péter
Igen, ott a hiba.
Program received signal SIGSEGV, Segmentation fault.
0x0000000000400cca in keres (n=@0x7fff4645dc2c, m=@0x7fff4645dc28, k=0x18960b0, min=0x0, kutya=0x0) at t.cpp:118
118 if (kutya[i-1][j-1]<=min[j-1]) {
Innen rögtön látszik mi a baj: a min és a kutya paraméter is 0. Ha közelebbről megnézed, az is kiderül miért: mert a beolvas függvény az érték szerinti átadásból következően nyilván nem módosítja a main-ben lévő változókat.
Egyébiránt ezt a fordító (gcc) nekem jelzi is:
t.cpp:15: warning: 'max' is used uninitialized in this function
t.cpp:15: warning: 'min' is used uninitialized in this function
t.cpp:15: warning: 'kutya' is used uninitialized in this function
Ha ezeket referenciaként adod át már jobb lesz a helyzet, ekkor működni is látszik a programod
Jester
Tudatlanabb vagyok mint sejtettem! Még csak most kezdtem el tanulni a c-t és úgy tanították hogy a tömböknél nem kell eléírni &-t. Ezekszerint van más amit elé kell írni?!
Azt kell eléírni
Ha tömbben lévő értékeket akarod módosítani, akkor nem kell. Itt viszont magát a tömböt (a kezdetére mutató pointert) akarod módosítani, tehát kell a referencia.
Jester
Ehh... hát erre soha nem jöttem volna rá magamtól! :S Tökéletes! Nagyon köszönöm!
Sziasztok!
Az volna most a problémám, hogy egy unsigned char tömböt használok puffernek, miután olvasok hálózatról bájtokat.
Az a baj, hogyha megnövelem a méretét, kifagy a program. Mitől lehet ez, vagy mit tudtok javasolni, hogy csináljak kellően nagy buffert? Eddig a tömb indexeivel szépen körbe tudtam járni a bufferem, keresgélni ami kell nekem, csak ilyesmi buffer féle lenne jó.
Köszi
Nem ártott volna, ha leírod, milyen módon hoztad most létre a tömbödet.
Hogyan növeled a méretét? Dinamikusan kezeled, nyújtózkodó tömbről van szó?
Amúgy ha string osztályt használsz az #include <string> után, akkor azzal elég kényelmesen tudsz dinamikusan hozzápakolászni elemeket, pl. egy string * buffer változóba (feladattól függően simán string buffer is elég (* nélkül) ), és azon is ugyanúgy végig tudsz rohangászni indexeléssel.
Itt vannak az elérhető függvények: string class, itt meg példa pl. a hozzáfűzésre: append.
[ Szerkesztve ]
Sk8erPeter
Úgy hozom létre, hogy unsigned char [100000];
Első körben fix nagy tömbre van szükségem, szal nem akarom dinamikusan növelni.
Jó lenne kb 1MB adat tárolására képes tömböt létrehozni.
Ezt írtad: "Az a baj, hogyha megnövelem a méretét, kifagy a program."
És akkor mégis hogyan akarod megnövelni, ha ilyen módon hozod létre a tömböt?
Mi bajod van a dinamikus növeléssel?
Sk8erPeter
Na szal félreértjük egymást.
Szal úgy növelem meg, hogy átírom az értéket, majd újrafordítom.
Tehát Char[100]-al megy, Char[200]-al nem. Persze nem 100-as mértéken fagy ki, hanem ilyen 1000000 nagyságban. Stack overflow hiba...
egy mega adatot nem szokas a stack-ra pakolni.. a compilered/OS-ed jelenlegi beallitasaival nem is fer el ott, ezt meg is mondja neked a rendszer (stack overflow).. hasznald a free store-t:
unsigned char * str = new unsigned char[1000000];
in asm we trust
hello!
egy nagyon egyszeru kerdesem lenne, megsem tudok rajonni.
a feladat az, hogy olvassak be txt-bol szavakat, es taroljam el oket egy tombben.
a gondom az, hogy ki van kotve, hogy nem "tudhatom" elore, hogy hany adatbol all a txt, ezert is gondoltam dinamikus tombre, megsem mukodik :/
a kodom:
#include <iostream>
#include <fstream>
using namespace std;
void main ()
{
int x=0;
char *szavak;
szavak= new char[];
ifstream be("adatok.txt");
if(!be)
{
cerr<<"hiba a filemegnyitas soran";
}
else
{
do
{
be.read(szavak[x],15);
x++;
}
while (!be.eof());
be.close();
}
for (int i=0;i<x;i++)
{
cout<<szavak[i]<<endl;
}
}
havernak csinalom a hazifeladatat, ami holnapra kellene neki.
nagyon megkoszonnem, ha valaki tudna segiteni.
[ Szerkesztve ]
some men just wanna watch the world burn...
Muszaj primitiv tombot ( char ** ) hasznalni? Ha igen, akkor azt kell csinalnod, mint pl. amit az std::vector, azaz lefoglalni X meretu tombot, es ha betelik, foglalni mondjuk egy duplaakkorat, es atmasolni a meglevoket, stb.
while (!sleep) sheep++;
stringgel meg lehetne oldani?
mert kesobb szuksegem lesz a szavakon beluli karakterek cserejere is.
(#772) Sk8erPeter char helyett valahogy stringgel meglehetne oldani?
[ Szerkesztve ]
some men just wanna watch the world burn...
Akár úgy is megoldhatod, ahogy itt szerepel: istream::read - C++ Reference
// read a file into memory
#include <iostream>
#include <fstream>
using namespace std;
int main () {
int length;
char * buffer;
ifstream is;
is.open ("test.txt", ios::binary );
// get length of file:
is.seekg (0, ios::end);
length = is.tellg();
is.seekg (0, ios::beg);
// allocate memory:
buffer = new char [length];
// read data as a block:
is.read (buffer,length);
is.close();
cout.write (buffer,length);
delete[] buffer;
return 0;
}
Viszonylag primitív (de végül is célravezető) megoldás, a fájl végére ugrik, így tudja meg a fájl méretét, ennek megfelelő helyet foglal, majd vissza az elejére, és elkezdi a beolvasást fájl végéig.
De emvy megoldás-javaslata is tökéletes.
---------------------------------------------------------------------------------------------
Szerk.:
(#771) j0k3r!
persze, a string típus is teljesen jó.
PÉLDA:
string::push_back
// string::push_back
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main ()
{
string str;
ifstream file ("test.txt",ios::in);
while (!file.eof())
{
str.push_back(file.get());
}
cout << str;
return 0;
}
Sokkal rövidebb is a kód.
[ Szerkesztve ]
Sk8erPeter
emvy, Sk8erPeter nagyon szepen koszonom a segitseget!
majd jelentkezem, ha elakadok : )
some men just wanna watch the world burn...
A fajlmeret-beolvasas nem mukodik - gondolom szavankent kell belerakni a tombbe, azt meg elore nem tudja, hogy hany szo van.
while (!sleep) sheep++;
nem is kellett olyan sokat varni...
ez a megoldas jol mukodik:
// string::push_back
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main ()
{
string str;
ifstream file ("test.txt",ios::in);
while (!file.eof())
{
str.push_back(file.get());
}
cout << str;
return 0;
}
de mivel karakterenkent menti el, nem pedig szavankent, ezert nem jo nekem.
get helyett getline meg nem mukodik, vagy valamit rosszul csinaltam :/
(a txt fileban soronkent vannak irva a szavak)
some men just wanna watch the world burn...
up!
some men just wanna watch the world burn...
Nálam tökéletesen megy.
szavankent rakja bele egy string tombbe?
some men just wanna watch the world burn...
Ja bocsi, az elkerülte a figyelmem, hogy az a lényeg, hogy szavanként tárold el.
Az sem túl nehéz, akkor meg csináld azt, hogy mondjuk sima string helyett string*-ot használsz.
Írtam egy példát, bevallom, nem igazán néztem át, hogy helyes-e, és mivel láttam, hogy sürgős, elég gyorsan írtam, így lehetnek benne hibák, mindenesetre kipróbáltam, és működik.
Az eredeti példa analógiájára csináltam, de kissé átalakítva.
Így néz ki:
// string::push_back
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main ()
{
ifstream file ("teszt.txt",ios::in);
if( !file.good() ){ //Fájlpara
cout<<"Hiba a fajllal...";
}
else //OK
{
string* words;
const int default_size=100; //kezdetben pl. 100 méretű tömböt hozunk létre
words=new string[default_size];
int size=default_size; //eltároljuk az alapértelmezett (kezdő)méretet, ha kell, növelünk
int count=0; //hol tartunk a tömbben? (egyszerűbb nyilvántartani)
while( file.good() ) //countot majd a cikluson belül növeljük
{
char c=file.get();
if(c==' ') count++; //szóközt kaptunk, növelünk, következő helyre tároljuk a szót
if(count<default_size){ //még beleférünk
words[count].push_back(c);
}
else{ //nyújtózkodunk
//pl. duplázzuk a kezdőméretet
string* tmp=new string[size*2]; //átmeneti változó, kétszeres kezdőmérettel
for(int uj=0;uj<count;uj++){ //csak count-ig van értelme menni, csak addig töltöttük fel
tmp[uj]=words[uj];
}
size*=2; //duplázzuk
tmp[count].push_back(c);
delete[] words; //töröljük az eredeti adatait
words=tmp; //végül belemásoljuk a nyújtott mérettel
}
}
for(int i=0;i<count;i++){
cout <<"i: "<<i<<".: "<< words[i] << endl;
}
}
return 0;
}
Sk8erPeter
Jah, természetesen nem, attem egyáltalán nem műxik.
Látom már van megoldás arra is.
koszonom szepen!
futas kozbe neztem lepesrol lepesre es nalam 1 gond van:
if(c==' ') count++;
ez a feltetel sosem teljesul be, ergo count 0 marad es 1 hosszu stringbe osszefuzi oket szokozzel elvalasztva :/ sot a vegen a kiiratasnal hiaba van 1 hosszu stringben az egesz meg azt se irja ki :/
szerk: viszont ha ponttal valasztom el oket, akkor elvalasztja a szavakat!
[ Szerkesztve ]
some men just wanna watch the world burn...
mostmar szokozzel is mukodik, en voltam a hibas, mivel enterekkel voltak elvalasztva a szavak, nem pedig szokozzel
Sk8erPeter ismet
mar csak egyetlen szepseghibaja van, hogy az elso szo kivetelevel minden szo elso karaktere szokoz : )
nincs valami parancs, ami ha szokozt lat eldobja a karaktert? (ignore vagy valami ilyesmi)
[ Szerkesztve ]
some men just wanna watch the world burn...
Ezt könnyű megoldani, csináld azt, hogy az if(c==' ') count++; rész után tegyél egy nagy else blokkot, a következőképpen:
if(c==' ') count++; //szóközt kaptunk, növelünk, következő helyre tároljuk a szót
else{
if(count<default_size){ //még beleférünk
words[count].push_back(c);
}
else{ //nyújtózkodunk
//........
//........
}
}
És ezzel elvileg jó.
Sk8erPeter
Az alap operator>> az éppenséggel benyel mindenféle szóközt (whitespace). Most akkor tuti, hogy vectort nem szabad használni? Mert azzal kb ennyi az egész:
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
ifstream file("teszt.txt", ios::in);
if(!file.good())
{
cout<<"Hiba a fajllal...";
return 1;
}
vector<string> words;
while(file.good())
{
string word;
file >> word;
words.push_back(word);
}
for(int i = 0; i < words.size(); i++)
{
cout <<"i: "<< i <<".: " << words[i] << endl;
}
return 0;
}
Jester
Most akkor tuti, hogy vectort nem szabad használni?
barmit lehet hasznalni : )
neked is koszonom szepen!
some men just wanna watch the world burn...
ÓÓ, basszus, eszembe se jutott, hogy megeszi a szóközt a >> operátor, és a vector felhasználása helyett írtam egy nyújtózkodó tömböt Na sebaj, végül is szerencsére nem tartott sokáig.
Sk8erPeter
na lassan csak kesz lesz.
inkabb leirom a teljes feladatot.
szoval txt-ben szavak -> szavakat beolvas -> kivalasztok veletlenszeruen egy szot -> ahany betu, annyi *-ot kiirok -> aztan 10et tippelhet az user
pl az adott szo barack: ******
es a tipp 'a' betu volt akkor: *a*a** igy kell modositanom, mindaddig mig ki nem talaljak, vagy le nem telik a 10 'esely'
namost mar megvan a random resze, megvan a random szo, kiirja a megfelelo szamu csillagot, csak ott akadtam el, hogy hogy tudom a bekert betut egyesevel vegigellenorizni az adott indexu vector karakterein?
[ Szerkesztve ]
some men just wanna watch the world burn...
Magyarul akasztófázni kell.
Szerk.
for (int i=0;i<vector[randomodik].length();i++)
{
if ( vector[randomodik].substr(i,1) == betu)
{
// csinálja ezt
}
}
[ Szerkesztve ]
nem gyozom megkoszonni! igen, akasztofa : )
holnap remelem befejezem, szerdara kell a sracnak, nem holnapra.
some men just wanna watch the world burn...
De hogy mostanság miért a "vak vezet világtalant" a divat azt nem értem
Jester
hello megint!
valaki ranezne erre, hogy miert szall el az elso do while utan? (ha valaki kiprobalna, akkor az adatatok a data.txt-ben vannak soronkent 1 szo)
elore is koszonom.
some men just wanna watch the world burn...
Konkrétan el nem száll nálam, csak rögtön kilép az első tipp után. Az meg azért van, mert a kitalálós ciklusban a feltétel pont fordítva van. Azt javítva még működik is, bár igazán kreatív módon hasznosítottad az itt elhangzott javaslatokat
Jester
koszonom szepen!
a kreativ jelzo alatt azt erted, hogy sz*r?
some men just wanna watch the world burn...
Gondolom úgy érti, hogy eléggé egy az egyben húztad rá a javaslatokra.
Egyébkét miért nem használsz vektort? Vagy direkt nem lehet?
Nem akkor fagyott ki Neked elsőnek, ha nem raktál be neki data.txt-t?
nem nem fagyott ki, data.txt mindig volt, csak kicsit felreerthetoen irtam az "elso" do while ciklust.
itt a 'vegleges'
ha vektort hasznaltam volna, az miben egyszerusitette volna meg a munkamat?
es megegyszer koszonom mindenkinek, aki segitett.
some men just wanna watch the world burn...
Nem kellett volna a tömb nyújtogatásával szórakozni, hanem a fileból beolvasásnál simán pushbackelni minden új szót a vectorba. De ezt mintha mondta volna is Sk8erPeter.
Háááát, ha egyszer úgyis 1000 elemű fix méretű tömbbe olvasol, akkor aztán tök mindegy utána mit varázsolsz. Totál felesleges átmásolni egy másik (immár megfelelő méretű) tömbbe.
setlocale(LC_ALL,"Hun"); ebben nem vagyok olyan biztos, hogy működik. Nálam tuti nem. Persze ha nem is ellenőrzöd a visszatérési értéket akkor sose tudod meg.
numberofstars ez jó félrevezető változónév az imperialista kémek megtévesztésére ... mivelhogy még véletlenül sem a csillagokat számolja.
if(numberoftips<=10 && numberofstars==unknownlength) itt szerény véleményem szerint mindenképp numberoftips<=10
system("pause"); ezért, ha én tanár lennék, azonnal egyest adnék...
+1: kellene egy #include <cstdlib> a (s)rand miatt.
Jester
setlocale(LC_ALL,"Hun"); - ebben en sem vagyok biztos, ezert a vegen kiszedtem a kodbol
numberofstars - teljesen igazad van ez inkabb numberofnotstars vagy numberofpoints
if(numberoftips<=10 && numberofstars==unknownlength) - ezt nem teljesen ertem azert nem numberoftips<10 -et irtam, mivel ha az user pont 10. tippre talalja ki, akkor is mukodjon
system("pause"); - ezt pont a tanar mutatta, hogy ne szalljon el futtatas utan a win32 console application, ergo latod, hogy nyertel-e vagy sem
+1: kellene egy #include <cstdlib> a (s)rand miatt. - mostmar ezt is tudom
es koszonom az epito jellegu kritikat!
[ Szerkesztve ]
some men just wanna watch the world burn...
system("pause"); ezért, ha én tanár lennék, azonnal egyest adnék...
ne tudd meg, mit tepem en a szamat emiatt mindenhol, de hiaba... sok helyen eleve ezt ajanljak az ujoncoknak
setlocale(LC_ALL,"Hun") megy Vistán 7-en meg linuxon, de elég gázos és furcsa a dolog.
j0k3r!: a tanár elég hülye volt, hogy ilyet mutatott... Használd helyette ezt, egyszerű és minden oprendszeren műxik:
cout<<"Press [Enter] to continue . . .";
cin.get();
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!