» »

[c++] Branje/ pisanje datotek

[c++] Branje/ pisanje datotek

Ph4nt0m ::

Imam težavo, za katero mi še ni uspelo najti rešitve, zato bi prosil za vašo pomoč. Vse bi bilo vredu, če bi šlo za eno vrsto podatka, sedaj pa moram iz datoteke prebrati več uporabnikov s tremi podatki. In sicer sem si zadevo zamislil tako, da so trije podatki zapisani v eni vrstici, ločeni pa so s presledki. Vsaka vrstica velja za novega uporabnika. V konkretnem primeru gre za simulator bankomata, torej prvi podatek je TRR, drugi PIN in tretji stanje na računu. Uporabnik ob prijavi vnese št. TRR, PIN, stanje pa se v primeru zdiga more prepisat. Dokler gre le za enega uporabnika, program deluje, vendar imam sedaj vsak podatek (TRR, PIN in stanje) v svoji vrstici. Prosim za pomoč.
www.kartusatoner.si

xyd1 ::

Vse podatke zapišeš v eno vrstico. Podatke ločiš z preslednico.

Namig 1: beri do preslednice
Namig 2: konec podatkov 1 uporabnika if(znak=="\n")


Tako nekako sem jas to razumel (vrjetno napačno)...

Ph4nt0m ::

V bistvu si razumel prav, tudi sam razmisljam v tej smeri. Ampak ne vem kako se lotiti programerskrga dela. Bi bilo torej primerno dvodimenzionalno polje? Prva dimenzija za uporabnike, druga pa za podatke? Ali ima mogoce kdo boljso resitev? Vrjetno je ob spremembi stanja potrebno prepisat celotno datoteko?
www.kartusatoner.si

golobich ::

Ph4ntom, če te jst to prav razumem imaš ti pač neko bazo napisano v beležnici in ti bi rad prebral podatke iz beležnice v C++.
Kaj če bi probal naredit eno strukturo podobno tej:
struct Podatki
{
  string ime_priimek;
  int trr;
  int pin;
};


In zdej bi imel eno funkcijo, ki bi preštela vse vrstice v beležnici (ena vrstica en uporabnik).
samo primer:
int sestej ()
{
 int uporabnik=0;
 //Prešteješ vrstice
 return uporabnik;
}


potem bi potreboval tabelo podatkov v meinu
int main ()
{
int x;
x=sestej();
Podatki tabela [x];
.
.
.
}

potem ko bi v C++ odpru datoteko myfile.open()...
bi zapisal ime in priimek v strukturo tam pod ime_priimek.
Rabu bi for zanko, ki bi šla do konc priimka. Kdaj veš kdaj je konec priimka?
Mogu bi it z for zanko čez, ko bi našu prvi presledek, bi števec se poveču za ena in preveru ali je naslednji znak = crka.
Ko pogoj nebo izpolnjen, lahko to zapišeš v ime_priimek. Glede TRR-ja, pa pina pa ti nebi znau pomagat.
glede kode za znak pa mislim da veš ;)
//imaš naprimer niz "Janez Novak ..........."
for (int j=0; j<niz.length(); j++)
{
 for (char znak='a'; znak<='z';i++)
 {
 if( (niz[j]==' ')&&(niz[j+1]!=znak) )
      {
         //pol moreš niz zapisat v spremenljivko ime_priimek
      }
  }
}


Pač to ni čisto točno, mislim pa da zna bit oreng približek ;)

Ph4nt0m ::

Ja je baza v bistvu, sam je nekoliko manj zakomplicirano, ker imena in priimka ni, ampak so le trije podatki tipa int. Torej TRR, PIN in pa stanje na računu. Bom pa poskusil uporabit prvi del nasveta, hvala :)
www.kartusatoner.si

golobich ::

Aja, sem mislil da je tudi ime in priimek pač uporabnika.

No probi it pa pol z for zanko čez vrstico...
pač maš naprimer prvo TRR pole pride preslede, pole pride PIN, presledek in STANJE na računu.
Zdej nevem če greš lahko točno čez for zanko čez vse, samo ko bi prišel do prvega presledka, bi se vstavil
in vse številke ki si jih prebral zapisal v spremenljivko trr. Z ostalim bi blo isto.
Nisem se drugače nič kaj preveč o pisanju in branju v datoteke oz. iz datotek ukvarju, tako da nevem veliko o tem ;)

Lp golobich

ERGY ::

Ph4nt0m, lahko bi me vprašal na faksu pa bi ti pokazal.

xyd1 ::

stanje kot int? mislim da bo float bolj pravilno (12340,15EUR oz z ".")

Isotropic ::

kaj pa, ce imas na zacetku nek identifier, za njim pa vrstice z podatki? pa je vec teh identov?
recimo
*stevilka
23232
232323
23
23
2323
23232
*ime
fsdfsd
sdfsd
*...

v loopu skozi file nastavis ustrezne variable, da ves, kaj imas za ene podatke? in if stavek za vsak ident/ variablo? a obstaja se kaksna boljsa varianta?
(resitev naj bi bila psevdo)

Zgodovina sprememb…



Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[java] imenovanje paketov

Oddelek: Programiranje
121129 (974) ales85
»

C# težava

Oddelek: Programiranje
233725 (2571) mladec
»

[Android]Vrnitev v "parent" activity

Oddelek: Programiranje
101507 (1380) KernelPanic
»

[Java] Evidenca delovnega časa - Java v navezi z Accessom

Oddelek: Programiranje
393282 (2502) c0dehunter
»

Ime Priimek v Ime_Priimek (strani: 1 2 )

Oddelek: Programska oprema
554984 (3944) Doman

Več podobnih tem