Oppure

Loading
20/05/10 11:24
petercriss
ciao a tutti ho appena finito di creare questo programma ...nel quale devo fare una creazione di un file e fare un'inserimento una stampa e un'inserimento al centro solo k non riesco a fare la procedura di inserimento al centro potreste darmi una mano purtroppo quando è stato spiegato nn ero presente

program file_cd;uses crt;
type compactdisk=record                                 {dichiarazione record}
                  titolo:string[20];
                  numerotracce:integer;               {campi del record}
                  prezzo:real;
                  autore:string[20];
                end;
cd=file of compactdisk;                              {inizializzazione struttura dati}
var f:cd;
    rec:compactdisk;                                 {dichiarazione delle variabili utilizzate}
    a:integer;
    x:string;
    sce:integer;
procedure crea(var f1:cd);               {procedura creazione}
begin

  rewrite(f1);                         {apertura file}
  reset(f1);
  repeat
  writeln('INSERISCI I DATI DEL CD');
  writeln('-------------------------------------------------');
  writeln('inserisci il titolo dell album');
  readln(rec.titolo);       { inserimento campo }
  writeln('inserisci il numero delle tracce presenti nel cd');
  readln(rec.numerotracce);  { inserimento campo }
  writeln('inserisci l autore del cd');
  readln(rec.autore);         { inserimento campo }
  writeln('inserisci il prezzo del cd');
  readln(rec.prezzo);         { inserimento campo }
  writeln('--------------------------------------------------');
  writeln('vuoi inserire un altro cd? s/n');  {richiesta di un nuovo elemento}
  readln(x);                  { lettura scelta}
  writeln('');
  write(f1,rec);

  clrscr;
  until x='n';                {scalta}
  close(f1);                  {chiusura file}
end;                                           {fine}
procedure stampa(var f1:cd);    {procedura stampa}
begin   
  clrscr;                                {inizio}
  reset(f1);                            {apertura file}
  while not eof(f1) do                 {ciclo precondizionato}
    begin                                {inizio}
      read (f1,rec);
      writeln('titolo dell album:  ',rec.titolo);    {stampa album}
      writeln('numero tracce:  ',rec.numerotracce);  {stampa numero delle tracce}
      writeln('autore del cd:  ',rec.autore);                       {stampa del nome dell'autore}
      writeln('prezzo del cd:  ',rec.prezzo:2:2 ,'  euro');                       {stampa del prezzo}
      writeln('');
    end;
    close(f1);                                       {chiusura}
end;
procedure inserimento(var f1:cd);                    {procedura inserimento}
begin   
  clrscr;                                             {inizio}
  reset(f1);
  while not eof(f1) do                                      {apertura file}
        read (f1,rec);
        writeln('inserisci il titolo del nuovo album');       {lettura campo}
        readln(rec.titolo);
        writeln('inserisci il numero delle tracce presenti nel nuovo cd');{lettura campo}
        readln(rec.numerotracce);
        writeln('inserisci l autore del nuovo cd');                       {lettura campo}
        readln(rec.autore);
        writeln('inserisci il prezzo del nuovo cd');                      {lettura campo}
        readln(rec.prezzo);
        write(f1,rec);
  Close(f1);
                                                              {chiusura file}
end;                                                                      {fine}
procedure inserimento_al_centro(var f1:cd);
  begin   
  clrscr;                                             {inizio}
  reset(f1);
  while not eof(f1) do
      begin
        read (f1,rec);
        writeln('dopo quale elemento vuoi inserire il nuovo cd?');
        readln(a);
        writeln('inserisci il titolo del nuovo album');       {lettura campo}
        readln(rec.titolo);
        writeln('inserisci il numero delle tracce presenti nel nuovo cd');{lettura campo}
        readln(rec.numerotracce);
        writeln('inserisci l autore del nuovo cd');                       {lettura campo}
        readln(rec.autore);
        writeln('inserisci il prezzo del nuovo cd');                      {lettura campo}
        readln(rec.prezzo);


      end;
        write(f1,rec);
        close(f1);

end;
begin                           {inizio}
  clrscr;
  assign(f,'cd.dat');                  {assegnazione dello spazio nella memoria di massa}
  crea(f);                              {creazione}
  clrscr;
  repeat                                {ripeti}
    clrscr;
    writeln('MENU DI SCELTA CD-ROM');          {menu al video}
    writeln('---------------------');
    writeln(' 1)inserisci un nuovo cd');
    writeln(' 2)stampa lista dei cd');
    writeln(' 3)inserimento al centro');
    writeln(' 8)uscire');
    writeln('---------------------');
    writeln('');
    repeat                                                {ripeti}
    writeln('quale paragrafo vuoi consultare?');          {scelta}
    readln(sce);                                          {lettura variabile scelta}
  until (sce>0) and (sce<4) or (sce=8);                   {fine ciclo fino a che}
  case sce of                                             {case}
  1: begin
       clrscr;
       inserimento(f);
       writeln('...premere invio per continuare...');
       readln();
     end;                                                 {procudure scelte}
  2: begin
       clrscr;
       stampa(f);
       readln;
       writeln('...premere invio per continuare...');
       readln();

     end;

   3:begin
      clrscr;
      inserimento_al_centro(f);
      readln;
      writeln('...premere invio per continuare...');
      readln();

     end;
    end;
  until (sce=8);                                       {fine ciclo finoa che sce =8}
end.  {fine} 

Ultima modifica effettuata da Phi 01/06/10 11:15
aaa
20/05/10 12:25
Phi
Spero di aver capito giusto.

Comunque io userei un array :

program file_cd;
uses crt;

type
compactdisk=record
 titolo:string[20];
 numerotracce:integer;
 prezzo:real;
 autore:string[20];
end;
cd=file of compactdisk;
Tcd = array of compactdisk;

var
f:cd;
rec:Tcd;
i : longword;
x:char;
sce:integer;

procedure crea(var f1:cd);
begin
 setlength(rec,1);
 repeat
  writeln('INSERISCI I DATI DEL CD');
  writeln('-------------------------------------------------');
  with rec[high(rec)] do begin
   writeln('inserisci il titolo dell album');
   readln(titolo);       { inserimento campo }
   writeln('inserisci il numero delle tracce presenti nel cd');
   readln(numerotracce);  { inserimento campo }
   writeln('inserisci l autore del cd');
   readln(autore);         { inserimento campo }
   writeln('inserisci il prezzo del cd');
   readln(prezzo);         { inserimento campo }
  end;
  writeln('--------------------------------------------------');
  writeln('vuoi inserire un altro cd? s/n');  {richiesta di un nuovo elemento}
  readln(x);                  { lettura scelta}
  if x<>'n' then setlength(rec,high(rec)+2);
  clrscr;
 until x='n';                {scalta}
 rewrite(f1);
 for i := 0 to high(rec) do write(f,rec[i]);
 close(f1);
end;                                           {fine}

procedure stampa(var f1:cd);    {procedura stampa}
var rec:compactdisk;
begin
 clrscr;                                {inizio}
 reset(f1);                            {apertura file}
 while not eof(f1) do begin
  read (f1,rec);
  writeln('titolo dell album:  ',rec.titolo);    {stampa album}
  writeln('numero tracce:  ',rec.numerotracce);  {stampa numero delle tracce}
  writeln('autore del cd:  ',rec.autore);                       {stampa del nome dell'autore}
  writeln('prezzo del cd:  ',rec.prezzo:2:2 ,'  euro');                       {stampa del prezzo}
  writeln('');
 end;
 close(f1);                                       {chiusura}
end;

procedure inserimento(var f1:cd);
begin
 clrscr;                                             {inizio}
 reset(f1);
 setlength(rec,1);
 while not eof(f1) do begin
  read(f1,rec[high(rec)]);
  setlength(rec,high(rec)+2);
 end;
 Close(f1);
 with rec[high(rec)]do begin
  writeln('inserisci il titolo del nuovo album');       {lettura campo}
  readln(titolo);
  writeln('inserisci il numero delle tracce presenti nel nuovo cd');{lettura campo}
  readln(numerotracce);
  writeln('inserisci l autore del nuovo cd');                       {lettura campo}
  readln(autore);
  writeln('inserisci il prezzo del nuovo cd');                      {lettura campo}
  readln(prezzo);
 end;
 rewrite(f1);
 for i := 0 to high(rec) do write(f,rec[i]);
 close(f1);
end;                                                                      {fine}
procedure inserimento_al_centro(var f1:cd);
var a : word;
begin
clrscr;
reset(f1);
setlength(rec,1);
while not eof(f1) do begin
 read(f1,rec[high(rec)]);
 setlength(rec,high(rec)+2);
end;
Close(f1);

writeln('CD : ci sono ',high(rec),' elementi');
writeln('dopo quale elemento vuoi inserire il nuovo cd?');
repeat readln(a); until (a <= high(rec));
for i := a to (high(rec)-1) do rec[i+1]:=rec[i];
with rec[a-1] do begin
 writeln('inserisci il titolo del nuovo album');       {lettura campo}
 readln(titolo);
 writeln('inserisci il numero delle tracce presenti nel nuovo cd');{lettura campo}
 readln(numerotracce);
 writeln('inserisci l autore del nuovo cd');                       {lettura campo}
 readln(autore);
 writeln('inserisci il prezzo del nuovo cd');                      {lettura campo}
 readln(prezzo);
end;
rewrite(f1);
for i := 0 to high(rec) do write(f,rec[i]);
close(f1);
end;


// MAIN

BEGIN
  clrscr;
  assign(f,'cd.dat');                  {assegnazione dello spazio nella memoria di massa}
  crea(f);                              {creazione}
  clrscr;
  repeat                                {ripeti}
    clrscr;
    writeln('MENU DI SCELTA CD-ROM');          {menu al video}
    writeln('---------------------');
    writeln(' 1)inserisci un nuovo cd');
    writeln(' 2)stampa lista dei cd');
    writeln(' 3)inserimento al centro');
    writeln(' 8)uscire');
    writeln('---------------------');
    writeln('');
    repeat                                                {ripeti}
    writeln('quale paragrafo vuoi consultare?');          {scelta}
    readln(sce);                                          {lettura variabile scelta}
  until (sce>0) and (sce<4) or (sce=8);                   {fine ciclo fino a che}
  case sce of                                             {case}
  1: begin
       clrscr;
       inserimento(f);
       writeln('...premere invio per continuare...');
       readln();
     end;                                                 {procudure scelte}
  2: begin
       clrscr;
       stampa(f);
       readln;
       writeln('...premere invio per continuare...');
       readln();

     end;

   3:begin
      clrscr;
      inserimento_al_centro(f);
      readln;
      writeln('...premere invio per continuare...');
      readln();

     end;
    end;
  until (sce=8);                                       {fine ciclo finoa che sce =8}
END.  {fine}
aaa
26/05/10 15:02
francescomattia
si potrebbe fare con la doppia copiatura???? gentilmente qualcuno mi può dare una mano???
aaa