Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите написать код на Паскаль.

vadim kosurin Профи (770), открыт 2 недели назад
6 ответов
Инспектор Жопидý Просветленный (45910) 2 недели назад
program task;

var
f: text;
n, i, sum, count, weight: integer;
name: string;
passengers: array[1..1000] of record
name: string;
count: integer;
weight: integer;
end;

begin
// 1. Считываем данные из файла
assign(f, 'data.txt');
reset(f);
readln(f, n);
sum := 0;
for i := 1 to n do begin
readln(f, i);
if i mod 2 = 1 then
sum := sum + i;
end;
close(f);
writeln('Сумма нечетных чисел: ', sum);

// 2. Считываем типизированный файл данных
assign(f, 'data.txt');
reset(f);
readln(f, n);
for i := 1 to n do begin
readln(f, passengers[i].name, passengers[i].count, passengers[i].weight);
end;
close(f);

// Считаем количество пассажиров с багажом из двух и более вещей
count := 0;
for i := 1 to n do begin
if passengers[i].count >= 2 then
count := count + 1;
end;
writeln('Количество пассажиров с багажом из двух и более вещей: ', count);

// Проверяем, есть ли два пассажира с одинаковым весом багажа
weight := 0;
for i := 1 to n do begin
for j := i + 1 to n do begin
if passengers[i].weight = passengers[j].weight then begin
writeln('Есть два пассажира с одинаковым весом багажа');
weight := 1;
break;
end;
end;
if weight = 1 then
break;
end;
if weight = 0 then
writeln('Нет двух пассажиров с одинаковым весом багажа');

end.

Пример файла data.txt для первого задания:
5
1
2
3
4
5

Пример файла data.txt для второго задания:
5
Иванов 1 20
Петров 3 15
Сидоров 2 10
Кузнецов 4 25
Смирнов 1 15

Запуск программы:
1. Сохраните код в файле task.pas.
2. Запустите компилятор Pascal и скомпилируйте файл task.pas.
3. Запустите скомпилированный файл.
Программа выведет результаты выполнения заданий.
vadim kosurinПрофи (770) 2 недели назад
что за content_copyUse code with caution.Pascal . это как использовать?
Инспектор Жопидý Просветленный (45910) vadim kosurin, осторожно.
Christopher BrownУченик (104) 2 недели назад
Это неправильный ответ. В обоих пунктах задания требуется использовать типизированные файлы (в первом случае это будет файл целых чисел (integer, например)). А вы используете текстовые файлы. Подозреваю, что вы просто скинули ответ чат-бота.
Christopher Brown Ученик (104) 2 недели назад
Задание 1. Программа, которая построит файл с псевдослучайными целыми числами типа integer (двухбайтные знаковые):

 program CreateIntegerFile;

const
FileName = 'integer_file.bin';
NumberOfRecords = 512;
MaxValue = 1000;

var
IntFile: file of integer;
i: integer;

begin
randomize;
assign(IntFile, FileName);
rewrite(IntFile);
for i := 1 to NumberOfRecords do
write(IntFile, random(MaxValue+1));
close(IntFile)
end.

Количество чисел и максимальное значение числа задаётся константами NumberOfRecords и MaxValue соответственно. Имя файла, который будет создан, задаётся константой FileName.

Сумму нечётных чисел в файле, созданном предыдущей программой, позволит найти следующая программа:

 program CalcSumOfOddIntegers;

const
FileName = 'integer_file.bin';

var
IntFile: file of integer;
sum: int64 = 0;
n: integer;

begin
assign(IntFile, FileName);
reset(IntFile);
while not eof(IntFile) do
begin
read(IntFile, n);
if n mod 2 <> 0 then
sum := sum + n
end;
close(IntFile);
writeln('Sum of odd integers: ', sum)
end.

Путь к файлу можно задать в константе FileName, которая по умолчанию содержит имя файла, который должен находиться в одном рабочем каталоге (папке) с данной программой (вернее, с её исполняемым файлом, который вы запускаете): для этого можно либо запускать обе программы в одном каталоге, либо скопировать файл, созданный первой программой, в каталог, где запускается вторая программа, ну или, например, задать в обоих программах одинаковый абсолютный путь к файлу в константе FileName, например, так:

     FileName = 'C:\Users\UserName\Desktop\integer_file.bin' 

Задание 2 не помещается в ответ, см. в комментариях.
Christopher BrownУченик (104) 2 недели назад
Задание 2. Часть 1.
Программа построит файл с 10-ю записями типа TPassanger; имя файла задаётся константой FileName:
 program CreatePassengerFile;

const
FileName = 'passenger_file.bin';
NumberOfPassengers = 10;
SurnameLen = 20;
MinBagCount = 1;
MaxBagCount = 10;
MinBagWeight = 1;
MaxBagWeight = 30;

type
TPassenger = record
surname: string[SurnameLen];
BagCount: integer;
BagWeight: integer;
end;

function RandomAB(a, b: integer): integer;
begin
RandomAB := random(b - a + 1) + a
end;

procedure PrintPassenger(var passenger: TPassenger);
begin
writeln(passenger.surname, ':');
writeln(' Baggage count: ', passenger.BagCount);
writeln(' Baggage weight: ', passenger.BagWeight)
end;
(Продолжение ниже)
Christopher BrownУченик (104) 2 недели назад
(продолжение части 1)
 var
PassengerFile: file of TPassenger;
surnames: array [1..NumberOfPassengers] of string[SurnameLen] =
(
'Martinez', 'Blaine', 'Allen', 'Felix', 'Amos',
'Huffman', 'Booker', 'Jackson', 'Vinson', 'Jenkins'
);
passenger: TPassenger;
i: integer;

begin
randomize;
assign(PassengerFile, FileName);
rewrite(PassengerFile);
for i := 1 to NumberOfPassengers do
begin
passenger.surname := surnames[i];
passenger.BagCount := RandomAB(MinBagCount, MaxBagCount);
passenger.BagWeight := RandomAB(MinBagWeight, MaxBagWeight);
write(PassengerFile, passenger);
PrintPassenger(passenger)
end;
close(PassengerFile)
end.
Christopher BrownУченик (104) 2 недели назад
Задание 2. Часть 2.
Для его анализа файла, созданного предыдущей программой, предназначена следующая программа:
 program AnalyzePassengerFile;

const
FileName = 'passenger_file.bin';
NumberOfPassengers = 10;
SurnameLen = 20;

type
TPassenger = record
surname: string[SurnameLen];
BagCount: integer;
BagWeight: integer;
end;
TPassengerArray = array [1..NumberOfPassengers] of TPassenger;

{ Get number of passengers with BagCount >= 2 }
function GetNumWithBagCountGE2(passengers: TPassengerArray): integer;
var
i, res: integer;
begin
res := 0;
for i := 1 to NumberOfPassengers do
if passengers[i].BagCount >= 2 then
res := res + 1;
GetNumWithBagCountGE2 := res
end;
(продолжение ниже)
Christopher BrownУченик (104) 2 недели назад
(продолжение части 2)
 { Find the index of two passengers with the same BagWeight. If there are no
such records in the array, assign the value -1 to Pas1Idx. }
procedure FindPasWithSameBagWeight(passengers: TPassengerArray;
var Pas1Idx, Pas2Idx: integer);
var
i1, i2: integer;
begin
for i1 := 1 to NumberOfPassengers - 1 do
begin
for i2 := i1 + 1 to NumberOfPassengers do
begin
if passengers[i1].BagWeight = passengers[i2].BagWeight then
begin
Pas1Idx := i1;
Pas2Idx := i2;
exit
end
end
end;
Pas1Idx := -1
end;
(продолжение ниже)
Christopher BrownУченик (104) 2 недели назад
 var
PassengerFile: file of TPassenger;
passengers: TPassengerArray;
i, Pas1Idx, Pas2Idx: integer;

begin
assign(PassengerFile, FileName);
reset(PassengerFile);
for i := 1 to NumberOfPassengers do
read(PassengerFile, passengers[i]);
close(PassengerFile);
writeln('Number of passengers with baggage count >= 2: ',
GetNumWithBagCountGE2(passengers));
FindPasWithSameBagWeight(passengers, Pas1Idx, Pas2Idx);
if Pas1Idx = -1 then
begin
writeln('There are no passengers with the same baggage weight!')
end
else
begin
writeln('Two passengers with the same baggage weight (',
passengers[Pas1Idx].BagWeight, '): ', passengers[Pas1Idx].surname,
', ', passengers[Pas2Idx].surname)
end
end.
Professional Professional Мудрец (15740) 2 недели назад
Here is a Pascal program that addresses both parts of the given task:

### Part 1: Sum of Odd Numbers in a Data File
```pascal
program SumOddNumbers;
var
f: text;
number, sum: integer;
begin
assign(f, 'data.txt'); // Replace 'data.txt' with the name of your data file
reset(f);
sum := 0;
while not eof(f) do
begin
readln(f, number);
if number mod 2 <> 0 then
sum := sum + number;
end;
close(f);
writeln('The sum of odd numbers is: ', sum);
end.
```

### Part 2: Passenger Data File
```pascal
program PassengerData;
type
Passenger = record
surname: string[50];
baggageCount: integer;
baggageWeight: integer;
end;

var
f: file of Passenger;
p: Passenger;
count, i: integer;
weights: array[1..100] of integer; // Adjust size as needed
baggageWeights: array[1..100] of integer;
found: boolean;

begin
assign(f, 'passengers.dat'); // Replace 'passengers.dat' with the name of your data file
reset(f);
count := 0;
i := 0;
found := false;

while not eof(f) do
begin
read(f, p);
if p.baggageCount >= 2 then
inc(count);
inc(i);
baggageWeights[i] := p.baggageWeight;
end;
close(f);

writeln('Number of passengers with two or more baggage items: ', count);

// Check for passengers with the same baggage weight
for i := 1 to High(baggageWeights) - 1 do
begin
for count := i + 1 to High(baggageWeights) do
begin
if (baggageWeights[i] = baggageWeights[count]) and (baggageWeights[i] <> 0) then
begin
found := true;
break;
end;
end;
if found then
break;
end;

if found then
writeln('There are at least two passengers with the same baggage weight.')
else
writeln('No two passengers have the same baggage weight.');
end.
```

### Instructions:
1. **Part 1**: This program reads a text file `data.txt` line by line, checks if the number is odd, and sums up the odd numbers.
2. **Part 2**: This program reads records from a binary file `passengers.dat` where each record contains a passenger's surname, baggage count, and baggage weight. It counts passengers with two or more baggage items and checks if there are at least two passengers with the same baggage weight.

Make sure to create and populate the data files (`data.txt` for the first part and `passengers.dat` for the second part) accordingly. Adjust the file paths and array sizes as needed.
Похожие вопросы