PDA

Pogledaj cijelu verziju : pascal- procedure brisanja i korekcije



Filip_k
03-06-2009, 20:27
imam big problem... radimo seminar iz infe i ja zapeo na ovom gore navedenom. Sve se to meni čini jako jednostavno, al dok se zapetljam onda se zapetljam :)
evo problema...
imam datoteku koja se popunjuje sa slogovima(u ovom slučaju slog se zove auto). Imam sad za taj auto znači ime korisnika, prezime, marka, registracija i sl. i sad mene zanima, da recimo u datoteci imam 10 unesenih korisnika auta sa svim ti karakteristikama kako da ja izbrišem sve u vezi jednog jednog korisnika.. npr.

writeln('Izaberite ime cije podatke zelite izbrisat ');
read(trime);
od stavi npr. marko....
Izgled datoteke prije brisanja:
broj ime prezime reg. marka_auta ....
1. ivo ivic 123 audi
2. marko matic 456 bnw

Izgled datoteke nakon brisanja:
broj ime prezime reg. marka_auta ....
1. ivo ivic 123 audi

molim vas ako itko može ovo rješit.... ako se netko nemože sjetit naredbe za brisanje iza pokazivača, evo je : truncate(ime_datoteke);

a korekciju bi ja htio napravit da mogu korigirat bilo što u unesenoj datoteci...

procedure korekcija;
var trime,kime,kprezime,kregistracija:string[20];
kor:integer;

begin
clrscr;
writeln('upisite ime osobe za koje zelite izmijeniti podatke');
read(trime);
assign(f,trime);
reset(f);
read(f,auto);
with auto do
begin
if trime=ime then
begin
repeat
TEXTCOLOR(15); writeln('BROJ','IME':6,'PREZIME':12,'VOZILO':10,'R EG. OZNAKA':14,'DATUM REGISTRACIJE':20);
TEXTCOLOR(3);
WRITELN;
writeln(j+1,'.',ime:10, prezime:10,marka:10,datreg:10,registracija:10);
delay(1500);

clrscr;
writeln('zelim izmjeniti :');
writeln;
writeln('1-ime');
writeln('2-prezime');
writeln('3-marku vozila');
writeln('4-registracisku oznaku');
writeln('5-datum registracije');
writeln('6-sve' );
writeln('7- ne zelim mijenjat');
read(kor);
case kor of
1: begin
with auto do
begin
writeln('upisite novo ime');
read(kime);
write(f,auto);
end;
end;
--ima jos endova--

na taj način, samo je problem što mi ni ovo neće, tj. neće mi doći do ovog dijela ''upisi novo ime'' (taj dio treba još malo izmjenit, al nisam pokušavao kad mi neće doći do tog dijela) :D

napravio sam dvije datoteke (f,g)...
f sam napravio iz razloga da mi je lakše napravit traženje:
{ovo nije trazenje, nego samo način na koj sam napravio jednu od datoteka
---ovo je kod dodavanja novih korisnika...... jedan mali dio}
if upcase(dn)='D' then
begin
with auto do
begin
inc(a);
writeln('upisati podatke o ',a+1,'. osobi');
writeln;
writeln('ime');
readln(ime);
assign(f,ime);
rewrite(f);
.....
seek(f,a); write(f,auto);
seek(g,a); write(g,auto);

u datoteci g mi je sve.... dakle ona je ona fiksna gdje je sve nabacano... al kod korekcije i kod brisanja moral bi izmjenit i u jednoj i u drugoj podatke... problem je sto mi to treba do sutra navečer, a ja neznam neke jednostavne stvari rješit... :(

hvala unaprijed i onom koji je sve ovo pročitao, a i onom koji će odgovorit (ak će takvog bit) :)

pozz iz podravine

Luka
03-06-2009, 23:26
koliko sam shvatio, iz arraya podataka trebaš izbaciti jedan?

to radiš tako da sve podatke nakon i-tog pomićeš ulijevo, a posljednji element brišeš (on je sad na pretposlijednjem mjestu)

Filip_k
04-06-2009, 22:10
koliko sam shvatio, iz arraya podataka trebaš izbaciti jedan?

to radiš tako da sve podatke nakon i-tog pomićeš ulijevo, a posljednji element brišeš (on je sad na pretposlijednjem mjestu)
nebi bio problem da trebam maknut jedan, npr. registraciju od tog korisnika. Ja trebam maknut sve o tom korisniku. dakle i reg., i ime, i prezime... to sam i ja mislio da se pomičem i brišem al kak da ga ja zaustavim, jer su mi tamo i druga imena i njihovi podatci :)

Filip_k
05-06-2009, 12:11
rješeno :)