spotmc13
1

Список.

16.09.2010, 19:04. Показов 786. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста решить задачу....



В поле каждого элемнта списка записываются данные о товаре: название,
страна-изготовитель, стоимость. выведите на экран весь список и стоимость товаров
с данным названием.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2010, 19:04
Ответы с готовыми решениями:

Составить программу, которая формирует список L, включив в него по одному разу элементы, которые входят в список L1 но не входят в список L2
Составить программу, которая формирует список L, включив в него по одному разу элементы, которые...

Составить базу данных об учащихся. Составить программу позволяющую выводить полный список учащихся, список выбравших предмет, список лучших учеников
Составить базу данных об учащихся, предусмотрев поля: Ф.И.О., предметы по выбору, экзаменационные...

Список из 20 названий горных вершин. Переписать в другой список только те, название которых оканчивается на «тау»
Здравствуйте. Помогите пожалуйста исправить программу. Задан список из 20 названий горных вершин....

7. Написать программу, содержащую функцию, которая определяет, входит ли список М1 в список М2. Предполагается, что списки существуют
7. Написать программу, содержащую функцию, которая определяет, входит ли список М1 в список М2....

7
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
17.09.2010, 17:46 2
Spotmc13, на эту тему есть обширный материал от Lexus_Ilia: Динамические структуры данных (списки, очереди, стеки, деревья).
---
По заданию предлагаю такое решение:
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
program Project1;
 
type
 
  (*Типы для описания списка.*)
 
  (*Тип данных, которые будет содержать каждый элемент списка.*)
  TData = record
    Name : String;
    Country : String;
    Price : Single;
  end;
  (*Тип, задающий указатель на элемент списка.*)
  TPElem = ^TElem;
  (*Тип, описывающий элемент списка.*)
  TElem = record
    Data : TData;
    PNext : TPElem;
    PPrev : TPElem;
  end;
  (*Тип, описывающий список.*)
  TList = record
    PFirst : TPElem;
    PLast : TPElem;
  end;
 
(*Процедуры для работы со списком.*)
 
(*Добавление элемента в конец списка.*)
procedure ListAdd(var aList : TList; const aPElem : TPElem);
begin
  if aPElem = nil then Exit;
 
  aPElem^.PNext := nil;
  aPElem^.PPrev := nil;
  if aList.PFirst = nil then begin
    aList.PFirst := aPElem;
    aList.PLast := aPElem;
  end else begin
    aList.PLast^.PNext := aPElem;
    aPElem^.PPrev := aList.PLast;
    aList.PLast := aPElem;
  end;
end;
 
(*Удаление всего списка из памяти и инициализация.
Это очень важная процедура. Если список не удалить, то память, которую
занимали его элементы, окажется недоступной для дальнейшего использования.
Т. е. произойдёт "утечка памяти".*)
procedure ListFree(var aList : TList);
var
  PNext, PDel : TPElem;
begin
  if aList.PFirst = nil then Exit;
 
  PNext := aList.PFirst;
  while PNext <> nil do begin
    PDel := PNext;
    PNext := PNext^.PNext;
    Dispose(PDel);
  end;
 
  aList.PFirst := nil;
  aList.PLast := nil;
end;
 
var
  S : String;
  List : TList;
  PElem : TPElem;
begin
  (*Инициализация списка.*)
  ListFree(List);
 
  (*Добавляем в список несколько элементов.*)
 
  (*1.*)
  New(PElem);
  PElem^.Data.Name := 'Name1';
  PElem^.Data.Country := 'Country1';
  PElem^.Data.Price := 10;
  ListAdd(List, PElem);
  (*2.*)
  New(PElem);
  PElem^.Data.Name := 'Name2!';
  PElem^.Data.Country := 'Country2';
  PElem^.Data.Price := 20;
  ListAdd(List, PElem);
  (*3.*)
  New(PElem);
  PElem^.Data.Name := 'Name2!';
  PElem^.Data.Country := 'Country3';
  PElem^.Data.Price := 30;
  ListAdd(List, PElem);
  (*4.*)
  New(PElem);
  PElem^.Data.Name := 'Name4';
  PElem^.Data.Country := 'Country4';
  PElem^.Data.Price := 40;
  ListAdd(List, PElem);
 
  (*Вывод элементов списка на экран.*)
  PElem := List.PFirst;
  if PElem = nil then Writeln('Список пуст.');
  while PElem <> nil do begin
    Writeln(
      'Name = ', PElem^.Data.Name,
      'Country = ', PElem^.Data.Country,
      'Price = ', PElem^.Data.Price:0:2
    );
    PElem := PElem^.PNext;
  end;
 
  (*Вывод стоимости товаров с заданным названием.*)
  Writeln('Задайте название товара:');
  Readln(S);
  Writeln('Список товаров с заданным названием:');
  PElem := List.PFirst;
  if PElem = nil then Writeln('Список пуст.');
  while PElem <> nil do begin
    if PElem^.Data.Name = S then
      Writeln(
        'Name = ', PElem^.Data.Name,
        'Country = ', PElem^.Data.Country,
        'Price = ', PElem^.Data.Price:0:2
      );
    PElem := PElem^.PNext;
  end;
 
  (*Удаление элементов списка из памяти.
  Этот шаг необходим. Если список не удалить из памяти, то память, которую
  он занимает, окажется потеряной (утечка памяти).*)
  ListFree(List);
 
  Readln;
end.
1
19 / 19 / 12
Регистрация: 21.08.2010
Сообщений: 136
17.09.2010, 18:09 3
хм, а вы проверяли как эта программа работает?
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
17.09.2010, 18:26 4
Я в консоли Delphi проверял. Создаётся список, затем весь этот список распечатывается. Потом надо задать наименование товара и выводится список всех элементов с таким же названием товара.
0
19 / 19 / 12
Регистрация: 21.08.2010
Сообщений: 136
17.09.2010, 18:31 5
я только разбираюсь в этой теме, может что-то не понял..
но у меня список элементов с таким же названием не выводится
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
17.09.2010, 18:38 6
Вот, например, как у меня работает. Да, я ещё добавил отступы при распечатке полей. Т. е. заменил:
Pascal
1
2
3
4
5
      Writeln(
        'Name = ', PElem^.Data.Name,
        'Country = ', PElem^.Data.Country,
        'Price = ', PElem^.Data.Price:0:2
      );
на:
Pascal
1
2
3
4
5
      Writeln(
        'Name = ', PElem^.Data.Name,
        ', Country = ', PElem^.Data.Country,
        ', Price = ', PElem^.Data.Price:0:2
      );
Цитата Сообщение от voice8787 Посмотреть сообщение
но у меня список элементов с таким же названием не выводится
Как я понял, название задаётся пользователем, затем программа должна найти в списке те элементы, название которых совпадает с введённым и вывести их на экран.
Миниатюры
Список.  
1
19 / 19 / 12
Регистрация: 21.08.2010
Сообщений: 136
17.09.2010, 18:44 7
дада, все правильно, немного не то вводил
спасибо за код!
0
spotmc13
20.09.2010, 17:10 8
Пасиб большое!!!!
20.09.2010, 17:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.09.2010, 17:10
Помогаю со студенческими работами здесь

Сформировать односвязный список так, чтобы после вставки каждого нового значения, список оставался отсортированным по возрастанию
сформировать односвязный список целочисл знач, таким образом чтобы после вставки каждого нового...

Список: перевернуть список
Дан список А, состоящий из записей: первое поле – символ, второе – адрес следующего элемента....

Список
Помогите пожалуйста с решением задачи: Предположим, что уже построен задан указателем P...

Список
4. Написать программу, строящую следующую списочную структуру. Каж¬дый элемент списка состоит из...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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