Új hozzászólás Aktív témák
-
Gyuri16
senior tag
#include <iostream>
#include <sstream>
#include <time.h>
using namespace std;
int main() {
time_t t;
time(&t);
struct tm * tt = localtime(&t); // feltoltjuk a tm structot
// kiszamoljuk az ertekeket a struct leirasa alapjan
int year = 1900 + tt->tm_year;
int month = 1 + tt->tm_mon;
int day = tt->tm_mday;
stringstream ss; // Int -> String konverziohoz
ss << year << '.'; //Ev
if (month < 10) { // 1 helyett 01 legyen
ss << 0;
}
ss << month << '.'; //Honap
if (day < 10) {
ss << 0;
}
ss << day << '.'; //Nap
string datum = ss.str(); //stringet csinalunk belole
cout << datum << endl;
return 0;
}most vettem csak eszre, hogy char tombot hasznalsz, szoval akkor meg stringbol csinalni kell egy char[]-t, pl igy:
char d[12];
strcpy(d, datum.c_str());
(strcpynek a string.h include kell)
vigyazz mert a te kododban csak 11 byteot foglalsz le a datumnak, de az 12 byteot foglal (a null byte a vegen)Nem vagyok egoista, csak uborkagyalu!
-
Sk8erPeter
nagyúr
Eddigi olvasgatások alapján a Szoftverfejlesztés C++ nyelven c. könyv elég jónak tűnik, de feltételezi a C nyelv ismeretét, nem írtad, hogy van-e ilyen alapod.
Ha nincs, akkor pl. a Programozzunk C++ nyelven c. könyv.Ezenkívül/ehelyett biztos a többiek is tudnak még ajánlani megfelelő forrásokat.
[ Szerkesztve ]
Sk8erPeter
-
-
Sk8erPeter
nagyúr
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
-
Sk8erPeter
nagyúr
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
-
Sk8erPeter
nagyúr
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
-
Jester01
veterán
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
-
WonderCSabo
félisten
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 ]
-
-
Jester01
veterán
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
-
Sk8erPeter
nagyúr
Innen letölthetsz C++-os jegyzeteket (előadónk oldala), a lényeg röviden elég jól benne van mindegyik anyagrészből: [link] (most épp le tudod tölteni, félév elején eltűnnek a linkek (mondjuk a cím elérhető), hogy lehessen látni, épp hol tartunk)
(#811) emvy: tudom én, hogy tudod.
Sk8erPeter
-
Sk8erPeter
nagyúr
Egyébként a vector, string és ehhez hasonlók az STL-tárolók témakörbe tartozik.
Igen nehéz lenne általánosan megfogalmazni, mikor melyik típus jó, de pl. a vector egy olyan osztály, amelynek sablonparaméterként át lehet adni a típust. Elég hasznos, mert így szinte bármilyen adattípust tudsz kezelni (egész számok, karakterek, karaktertömbök, stb.).Sk8erPeter
-
pityaa23
senior tag
dev c++-t használunk, de amikor ide bemásolom teljesen átíródik a dolog, nem értem miért.
Ne csesszetek le vazzeg mondom nemrég kezdtem Az meg igaz, hogy a tömb kicsi lett Majd megírom neki mert már elküldtem.
fel tudom valahova tölteni a progit, hogy megnézzétek?
[ Szerkesztve ]
-
Jhonny06
veterán
Hanyagold az ilyen kéréseket, már párszor csináltam hasonlót gyakorlás/jószívűségem miatt, de soha nem jött semmi válasz vissza (na jó, talán egyszer).
Mondjuk az illető nagyobbat fog szívni, mert ha nem gyakorolja, akkor nem fogja tudni, esetleg következő alkalommal belekérdeznek.. meg kell adni neki az induláshoz a segítséget, aztán hagyni, hadd szenvedjen. Az ilyenek minek mennek progra?
[ Szerkesztve ]
-
G4bi89
senior tag
Igen elfogadták és big thanks.
Nem pofátlanságból nem írtam eddig hanem mert nem volt időm. Megírtam hozzá a dokumentációt is még mert az is kellett és elfogadta azt is meg magát a program kódot.
Meg írtunk egy ZH-t a struktúrákból ami érdekes módon megy 26pontból 17-et értem el. Mondjuk maradék 9pontból is meglehetett volna pár, de nem tudtam befejezni volt benne hiba így inkább töröltem az a részt mivel ha nem fut le a program akkor 0 pont az egészre az meg nem vicces.Jhonny06: Olvass vissza ez nem programozói szak hanem rendszergazda... Most első félévben van prog és soha többet...
[ Szerkesztve ]
"egyenlőre muszály biciglizni külömben..."
-
FireKeeper
nagyúr
az megvan, hogy melyik függvényt kéne használnom (az fstream kell majd), hanem azt nem tudom hirtelen, hogy hogy kell azt kezelni, hogy a fájl nem a .exe mappájában van, hanem egy más elérési úton, hogy hogy kell beparaméterezni a függvényt, hogy bármilyen helyen lévő fájlból tudjon dolgozni.
vagyis a felhasználó megadja az elérési utat és a fájlnevet, és nekem utána ebből kell dolgoznom.steam, GOG, uPlay: @petermadach || HotS: PeterMadach#2675 || Xperia 10 V || Ultrawide & SFF masterrace || Unofficial and unpaid VXE R1 shill
-
WonderCSabo
félisten
vagy
string s;
getline(cin, s);
f.open(s.c_str());fstream :: is_open helyett én fstream::good -ot szoktam használni
Ú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!