Új hozzászólás Aktív témák
-
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
-
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. -
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észreaz meg nem vicces.
Jhonny06: Olvass vissza ez nem programozói szak hanem rendszergazda... Most első félévben van prog és soha többet...
-
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?
-
pityaa23
senior tag
-
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
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.
-
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.
-
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
}
} -
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;
} -
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
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
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.
-
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.
-
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)
Ú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!
- ASRock B650M Pro RS microATX - garanciális, apró hibával
- LG OLED42C41LA 7 hónapos 2,5 év garancia.
- Szép Dell Precision 5560 Slim Tervező Vágó Laptop -70% 15,6" i7-11850H 64/1TB RTX A2000 4GB UHD 4K
- Acer Nitro V 16 AI Gamer Laptop! Ryzen 7 260/RTX 5070/32gb DDR5/2TB SSD/2560x1600/180hz/Beszámítok!
- Szép Dell Precision 5560 Slim Tervező Vágó Laptop -70% 15,6" Xeon W-11955M 64/1TB RTX A2000 4GB FHD+
- AKCIÓ! Gigabyte Z370M i5 9400F 16GB DDR4 512GB SSD RX 5700XT 8GB ZALMAN S2 TG Corsair S650W
- Beszámítás! Apple Mac mini 2020 M1 8GB 256GB SSD számítógép garanciával, hibátlan működéssel
- Vivo V40 SE 256GB, Kártyafüggetlen, 1 Év Garanciával
- Csere-Beszámítás! Olcsó Számítógép PC Akár játékra! Intel X5650 / GTX 1650 / 24GB / 240SSD+ 500HDD
- ÁRGARANCIA! Épített KomPhone i5 13400F 32/64GB RAM RX 7700 XT 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest