Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type song=record
- name: string;
- minutes: integer;
- seconds: integer;
- end;
- type cd=record
- author:string;
- rating: integer;
- album:string;
- year: integer;
- sales_copies: integer;
- songs_count:integer;
- songs: array [0..20] of song;
- end;
- type cd_arr = array [0..30] of cd;
- function top_sort(album_count: integer; cds: cd_arr ): cd_arr;
- var
- i,k: integer;
- cd_buf: cd;
- begin
- for i:=1 to album_count-1 do begin
- for k:=1 to album_count-1 do begin
- if cds[k+1].rating>cds[k].rating then begin
- cd_buf:=cds[k];
- cds[k]:=cds[k+1];
- cds[k+1]:=cd_buf;
- //writeln('buf-swap');
- end;
- end;
- end;
- top_sort:=cds;
- end;
- var
- input_file_flag,output_file_flag:boolean;
- source:text;
- str,input_file_name,output_file_name: string;
- cds, output_cds: cd_arr;
- cd_num,i,k,buf : integer;
- begin
- Writeln('input from file or keyboard ?');
- readln(str);
- if str='file' then begin
- input_file_flag:=true;
- write('please, get input_file name: ');
- readln(input_file_name);
- end
- else
- input_file_flag:=false;
- Writeln('output to file or screen ?');
- readln(str);
- if str='file' then begin
- output_file_flag:=true;
- write('please, get output_file name: ');
- readln(output_file_name);
- end
- else
- output_file_flag:=false;
- if input_file_flag=true then begin//ут можно расхерачить директорию, но мне лень
- assign(source,input_file_name);
- reset(source);
- //file_flag:=true;
- readln(source,cd_num);
- for i:=1 to cd_num do begin
- readln(source,cds[i].album);
- readln(source,cds[i].author);
- readln(source,cds[i].rating,cds[i].sales_copies,cds[i].year);
- readln(source,cds[i].songs_count);
- for k:=1 to cds[i].songs_count do begin
- readln(source,cds[i].songs[k].name);
- readln(source,cds[i].songs[k].minutes,cds[i].songs[k].seconds);
- end;
- end;
- close(source);
- end
- else begin
- writeln('input cd numbers (max=30)');
- readln(cd_num);
- for i:=1 to cd_num do begin
- write('album : ');
- readln(cds[i].album);
- write('author : ');
- readln(cds[i].author);
- write('rating sales_copies year : ');
- readln(cds[i].rating,cds[i].sales_copies,cds[i].year);
- writeln('input songs number (max=20)');
- readln(cds[i].songs_count);
- writeln('input song to format "name/n minutes seconds"');
- for k:=1 to cds[i].songs_count do begin
- readln(cds[i].songs[k].name);
- readln(cds[i].songs[k].minutes,cds[i].songs[k].seconds);
- end;
- end;
- end;
- //сразу отсортируем по рейтингу
- cds:=top_sort(cd_num,cds);
- writeln('Please push command on format "2015" for top3 of 2015. For exit push "0"');
- buf:=2000;
- if output_file_flag=true then begin
- assign(source,output_file_name);
- rewrite(source);
- while buf<> 0 do begin
- readln(buf);
- k:=0;//counter of top
- for i:=1 to cd_num do begin
- if cds[i].year=buf then begin
- output_cds[k+1]:=cds[i];
- k:=k+1;
- end;
- if k=5 then break;
- end;
- writeln(source,k);
- for i:=1 to k do begin
- writeln(source,output_cds[i].album);
- writeln(source,output_cds[i].author);
- writeln(source,output_cds[i].rating,' ',output_cds[i].sales_copies,' ',output_cds[i].year);
- writeln(source,output_cds[i].songs_count);
- for k:=1 to cds[i].songs_count do begin
- writeln(source,output_cds[i].songs[k].name);
- writeln(source,output_cds[i].songs[k].minutes,' ',output_cds[i].songs[k].seconds);
- end;
- end;
- end;
- close(source);
- end
- else begin
- while buf <> 0 do begin
- readln(buf);
- k:=0;//counter of top
- for i:=1 to cd_num do begin
- if cds[i].year=buf then begin
- output_cds[k+1]:=cds[i];
- k:=k+1;
- end;
- if k=5 then break;//первые пять или меньше альбомов за все время
- end;
- writeln(k);
- for i:=1 to k do begin
- writeln(output_cds[i].album,#10, output_cds[i].author,#10,output_cds[i].rating,' ',output_cds[i].sales_copies,' ',output_cds[i].year,#10,output_cds[i].songs_count);
- for k:=1 to cds[i].songs_count do begin
- writeln(output_cds[i].songs[k].name,#10,output_cds[i].songs[k].minutes,' ',output_cds[i].songs[k].seconds);
- end;
- end;
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment