С Новым годом! Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 15.05.2018
Сообщений: 17

Стек: Найти квартиру с минимальной средней площадью комнаты

25.05.2018, 09:27. Показов 1018. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста с 1 или 2 заданием (можно с обеими если есть желание). Не могу понять как это сделать.
Запись с полями: адрес квартиры; количество комнат; общая площадь квартиры. 1. Найти квартиру с минимальной средней площадью комнаты. Средняя площадь комнаты определяется как (общая площадь квартиры)/(количество комнат).
2. Скопировать в новый стек информацию о четырехкомнатных квартирах, общая площадь которых больше заданного значения.
Код:

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
type 
 FSB = record
   adr: string;
    kvart: integer;
    pl: integer;
    
  end;
 
type  celltype = record 
        info: FSB; 
        next: ^ celltype 
    end; 
    STACK = ^ celltype; 
    
var top: STACK;
 
function Empty(top: STACK): boolean;
begin
  Empty:= Top=nil;
end; 
 
procedure Push(z: FSB; var top: STACK);
Var p: STACK;
begin
  new(p);
  p^.next:= top;
  p^.info:= z;
  top:=p;
end;    
 
procedure LoadToBd(fn: String; var top: stack);
var  f: text;
  a: FSB;
begin
  assign(f, fn);
  reset(f);
  while not eof(f) do
  begin
    readln(f, a.adr);
    readln(f, a.kvart);
    readln(f, a.pl);
   
    push(a,top);
  end;
  close(f);
end;
 
procedure Pop(var top: STACK; var x: FSB);
Var p: STACK;
begin
  if Empty(top)=False then begin
    p:= top^.next;
    x:=top^.info; 
    dispose(top); 
    top:=p;            
  end  else
     writeln('стек уже пуст');
end;  
 
procedure WriteStack(var top: stack);
var
  temp: stack;
  z: FSB;
begin
  while top<>nil do
  begin
    pop(top, z);
    push(z, temp);
    Writeln(z);
  end;
  
  while temp<>nil do
  begin
    pop(temp, z);
    push(z, top);
  end;
end;
 
 
var
  z:FSB;
  p: Integer;
 
begin
  top := nil;
  LoadToBd('laba1.txt',top);
  WriteStack(top);
 
 
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.05.2018, 09:27
Ответы с готовыми решениями:

Найти эллипс с минимальной площадью
Привет народ, два года на голом программировнаие и изредка численных методах, совсем без аналитической геометрии, сделали свое черное дело...

Найти сторону квадрата с минимальной площадью, в который можно вписать данный треугольник
Всем доброго времени суток. Нужно решить следующую задачу: найти сторону квадрата, с минимальной площадью, в который можно вписать данный...

Найти размеры цилиндрического бака заданного объёма с минимальной площадью полной поверхности
Бак для перевозки жидкости имеет форму цилиндра объемом V. Какими должны быть размеры цилиндра, чтобы количество материала,...

2
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,059
25.05.2018, 10:08
Файло „laba1.txt“ где?

Добавлено через 20 минут
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
type 
  FSB = record
    adr: string;
    kvart: integer;
    pl: integer;
    
    constructor (s1,s2,s3 : String);
    begin
      adr := s1; kvart := StrToInt(s2); pl := StrToInt(s3);
    end;
    
    procedure print := WriteLnFormat('{0,-30} | {1,5} | {2}', adr, kvart, pl);
  end;
 
function Load(fName : String) : Stack<FSB>;
begin
  Result := New Stack<FSB>;
  var s := ReadAllLines(fName);
  for var i := 0 to s.Count div 3-1 do
    Result.Push(New FSB(s[i*3], s[i*3+1], s[i*3+2]));
end;
 
procedure WriteStack(s : Stack<FSB>) := foreach var f in s do f.print;
 
procedure Find1(s : Stack<FSB>) := s.MinBy(f -> f.pl/f.kvart).print;
 
function Find2(s : Stack<FSB>; kvart, pl : Integer) : Stack<FSB>;
begin
  Result := New Stack<FSB>;
  foreach var f in s.Where(f -> (f.kvart=kvart) and (f.pl>pl)) do
    Result.Push(f);
end;
 
begin
  var s := Load('laba1.txt');
  WriteLn('Весь список квартир:'); WriteStack(s);
  
  WriteLn('Квартира с минимальной средней площадью:'); Find1(s);
  
  var s2 := Find2(s, 4, ReadInteger('Четырёхкомнатные квартиры площадью больше ='));
  WriteLn('Получен список:'); WriteStack(s2);
end.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
25.05.2018, 12:09
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function Load(fn : string) : Stack<(string, integer, integer)>;
begin
  result := new Stack<(string, integer, integer)>(
    ReadAllLines(fn).Batch(3).Select(v -> (v.ElementAt(0), v.ElementAt(1).ToInteger, v.ElementAt(2).ToInteger))
  );
end;
 
begin
  var s := Load('kvart.txt');
  Println('Квартира с минимальной средней площадью: ', s.MinBy(v -> v[2] / v[1]));
  var p := ReadlnInteger('Значение площади для поиска: ');
  var s2 := new Stack<(string, integer, integer)>(s.Where(v -> (v[1] = 4) and (v[2] > p)));
  s2.Println;
end.
, просто как дополнительный вариант...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2018, 12:09
Помогаю со студенческими работами здесь

Найти треугольники с максимальной с максимальной и и минимальной площадью
На плоскости задано N четырех угольников координатами своих вершин вершин, X Y, найти треугольники с максимальной с максимальной и и...

Цилиндр с минимальной площадью поверхности
Требуется изготовить из жести ведро без крышки данного объема V цилиндрической формы. Каковы должны быть высота цилиндра и радиус...

Вывести названия стран с минимальной площадью
Решить задачу по обработке записей: Дан список стран с указанием занимаемой населения и занимаемой площади. Вывести названия стран с...

Поиск минимальной и средней суммы
как найти минимальную суммарную и минимальную среднюю зарплаты? package zadanie_2; import java.io.IOException; public class...

Запрос с вычислениями. вывод средней, минимальной и максимальной зарплаты
Обьясните пожалуйства как создать запрос с такими условиями: 1-Вывод максимального и минимального оклада по заданому отделу ( название...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru