Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 11.05.2015
Сообщений: 18
1

Найти название книг заданного автора, изданные с 1960 по 1980 годы

08.10.2015, 15:38. Показов 2066. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сведения о книги состоят из фамилии автора, названия и года издания. Дан набор состоящий из 1000 таких сведений. найти: а) название книг данного автора, изданные с 1960 по 1980; б) упорядочить сведения о книгах по первой букве фамилии автора.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2015, 15:38
Ответы с готовыми решениями:

Найти названия книг заданного автора, которые были изданы начиная с 1960 г
Есть информационный массив f, в котором находятся данные о книгах(ФИО автора, название и год...

Вывести названия книг заданного автора, изданных с 1960 года
Дан файл содержащий сведения о книгах. Нужно вывести названия книг заданного автора, изданных с...

Найти названия книг данного автора, изданных с 1960 г.
Дан файл f, содержащий сведения о книгах. Сведения о каждой из книг - это фамилия автора, название...

Найти названия книг данного автора, изданных с 1960 г
. Дан файл f , содержащий сведения о книгах. Сведения о каждой из книг – это фамилия автора,...

10
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
09.10.2015, 13:05 2
roman0495, файл набора или его формат приведите
0
0 / 0 / 0
Регистрация: 11.05.2015
Сообщений: 18
09.10.2015, 14:36  [ТС] 3
любой файл
0
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
09.10.2015, 16:18 4
Файл может быть текстовым. Может быть типизированным. И там и там есть структура. Я и спрашивал про нее.
0
0 / 0 / 0
Регистрация: 11.05.2015
Сообщений: 18
12.10.2015, 04:50  [ТС] 5
Текстовый
0
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
12.10.2015, 06:33 6
хорошо, как отличать Фамилию автора, название книги, год издания?

Добавлено через 21 минуту
и на каком паскале это нужно?
0
0 / 0 / 0
Регистрация: 11.05.2015
Сообщений: 18
12.10.2015, 09:04  [ТС] 7
всм как отличать? на abc
0
Эксперт Pascal/Delphi
6810 / 4567 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
12.10.2015, 09:20 8
Цитата Сообщение от roman0495 Посмотреть сообщение
всм как отличать?
Как данные расположены в файле? В одной строке, разделенные пробелом (иным знаком-разделителем):
Фамилия_автора1 пробел название_книги1 пробел год_издания1
Фамилия_автора2 пробел название_книги2 пробел год_издания2
...
Или каждый элемент на отдельной строке?
Фамилия_автора1
название_книги1
год_издания1
Фамилия_автора2
название_книги2
год_издания2
...
Вот об этом вас спрашивают.
0
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
12.10.2015, 09:41 9
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

на TP (чистого ABC у меня нет):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
type
   index=record
      L:char;
      P:integer;
    end;
 
var
  idx:array[1..1000] of index;
  ti:index;
  f:text;
  s:array [0..50] of string;
  t,a:string;
  i,n,j,m,y:integer;
  b:boolean;
 
procedure split(delimeter:string;s:string;var sr:array of string;var count:integer);
var
  i:integer;
  t:string;
procedure additem;
begin
 if t<>'' then begin
  inc(count);
  sr[count-1]:=t;
  t:='';
 end;
end;
begin
  count:=0;t:='';
  for i:=1 to length(s) do
    if pos(s[i],delimeter)=0 then t:=t+s[i] else additem;
    additem;
end;
 
function str2int(s:string):integer;
var
  c,r:integer;
begin
  Val(s,r,c);
  str2int:=r;
end;
 
procedure printNline(var vf:text;n:integer);
var
  t:string;
begin
  reset(vf);
  for n:=1 to n do readln(vf,t);
  writeln(t);
  close(vf);
end;
 
begin
  assign(f,'books.txt');
  reset(f);
  i:=0;
  b:=false;
  write('Введите фамилию автора:');readln(a);
  writeln('Список книг автора "',a,'" за период с 1960 по 1980гг:');
  while not eof(f) do begin
    readln(f,t);
    m:=m+1;
    split(' ',t,s,n);
    idx[m].L:=s[0][1];
    idx[m].P:=m;
     y:=str2int(s[n-1]);
     if (a=s[0]) and ((y>=1960) and (y<=1980)) then begin writeln(t);b:=true;end;
  end;
  close(f);
    if not (b) then writeln('Ничего не найдено:');
  readln;
  for i:=1 to m-1 do
    for j:=i to m do
      if idx[i].L>idx[j].L then begin
        ti:=idx[i];idx[i]:=idx[j];idx[j]:=ti;
      end;
  writeln('Список книг, упорядоченный по первой букве:');
  j:=0;
  for i:=1 to m do begin
    j:=j+1;
    if j=23 then begin writeln('Нажмите "Enter" для продолжения...');j:=1;readln;end;
    printNline(f,idx[i].P);
  end;
  readln;
end.
Добавлено через 47 секунд
вот файл books.dat (1000 записей делать не стал):
Пушкин Сказка о рыбаке и рыбке 1979
Ушинский Четыре желания 1986
Перро Спящая красавица 1978
Иванов Дерево счастья 2001
Пушкин Сказки 1960
Гайдар Сказка о Военной Тайне, о Мальчише-Кибальчише и его твердом слове 1985
Гаршин Лягушка-путешественница 1977
Романовский Зеркало в старинном особняке 1983

Добавлено через 1 минуту
тестовый прогон:
Код
Введите фамилию автора:Пушкин
Список книг автора "Пушкин" за период с 1960 по 1980гг:
Пушкин Сказка о рыбаке и рыбке 1979
Пушкин Сказки 1960

Список книг, упорядоченный по первой букве:
Гайдар Сказка о Военной Тайне, о Мальчише-Кибальчише и его твердом слове 1985
Гаршин Лягушка-путешественница 1977
Иванов Дерево счастья 2001
Пушкин Сказки 1960
Перро Спящая красавица 1978
Пушкин Сказка о рыбаке и рыбке 1979
Романовский Зеркало в старинном особняке 1983
Ушинский Четыре желания 1986
1
0 / 0 / 0
Регистрация: 11.05.2015
Сообщений: 18
13.10.2015, 15:10  [ТС] 10
только у меня ошибку выдает ( неправильный тип подпрограммы)
split(' ',t,s,n);
0
Эксперт Pascal/Delphi
6810 / 4567 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
13.10.2015, 16:42 11
roman0495, для pabc.net:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
type
  index = record
    L: char;
    P: integer;
  end;
  arrstr = array [0..50] of string;
 
var
  idx: array[1..1000] of index;
  ti: index;
  f: text;
  s: arrstr;
  t, a: string;
  i, n, j, m, y: integer;
  b: boolean;
 
procedure split(delimeter: string; s: string; var sr: arrstr; var count: integer);
var
  i: integer;
  t: string;
  procedure additem;
  begin
    if t <> '' then begin
      inc(count);
      sr[count - 1] := t;
      t := '';
    end;
  end;
 
begin
  count := 0;t := '';
  for i := 1 to length(s) do
    if pos(s[i], delimeter) = 0 then t := t + s[i] else additem;
  additem;
end;
 
function str2int(s: string): integer;
var
  c, r: integer;
begin
  Val(s, r, c);
  str2int := r;
end;
 
procedure printNline(var vf: text; n: integer);
var
  t: string;
begin
  reset(vf);
  for n := 1 to n do readln(vf, t);
  writeln(t);
  close(vf);
end;
 
begin
  assign(f, 'books.txt');
  reset(f);
  i := 0;
  b := false;
  write('Введите фамилию автора:');readln(a);
  writeln('Список книг автора "', a, '" за период с 1960 по 1980гг:');
  while not eof(f) do 
  begin
    readln(f, t);
    m := m + 1;
    split(' ', t, s, n);
    idx[m].L := s[0][1];
    idx[m].P := m;
    y := str2int(s[n - 1]);
    if (a = s[0]) and ((y >= 1960) and (y <= 1980)) then begin writeln(t);b := true; end;
  end;
  close(f);
  if not (b) then writeln('Ничего не найдено:');
  readln;
  for i := 1 to m - 1 do
    for j := i to m do
      if idx[i].L > idx[j].L then begin
        ti := idx[i];idx[i] := idx[j];idx[j] := ti;
      end;
  writeln('Список книг, упорядоченный по первой букве:');
  j := 0;
  for i := 1 to m do 
  begin
    j := j + 1;
    if j = 23 then begin writeln('Нажмите "Enter" для продолжения...');j := 1;readln; end;
    printNline(f, idx[i].P);
  end;
  readln;
end.
2
13.10.2015, 16:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.10.2015, 16:42
Помогаю со студенческими работами здесь

Найти названия книг данного автора, изданных с 1960 года
Создать файл, содержащий сведения о книгах-фамилия автора, название, год издания. Найти названия...

Найти названия книг данного автора, изданных с 1960 года.
Сформирована переменная bibl, содержащая сведения о книгах. сведения о каждой из книг - это фамилия...

Дан файл f, содержащий сведения о книгах. Требуется найти названия книг данного автора, изданных с 1960 г
Дан файл f, содержащий сведения о книгах. Сведения о каждой из книг - это фамилия автора, название...

Определить название книг данного автора, изданного после заданного года
Задан файл, содержащий сведения о книгах. Сведения: фамилия, название, год издания. Определить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru