
Pascal ABC Дан текстовый файл t1.txt, содержащий целые числа, не превышающие 30000. Найти длину
самой длинной цепочки одинаковых чисел, идущих подряд в файле t1.txt и записать эту цепочку в файл t2.txt То есть вывести на экран длину самой длинной цепочки и записать в файл эту цепочку Можно решить как через файлы, так и не через файлы

Ответы на вопрос

//t1.txt должен быть в папке с программой
//Pascal
var
f: text;
numValue, Counts, n, c, t, i: integer;
begin
assign(f, 't1.txt');
reset(f);
Counts := 0;
c := 0;
while not eof(f) do
begin
readln(f, n);
if (c = 0) or (n = t) then
c := c + 1
else
c := 1;
t := n;
if c > Counts then
begin
Counts := c;
numValue := n
end
end;
close(f);
assign(f, 't2.txt');
rewrite(f);
writeln('Длина цепочки: ', Counts);
for i := 1 to Counts do
writeln(f, numValue);
close(f)
end.



Программа на языке Pascal, которая решает задачу:
```pascal program maxChain; var inputFile, outputFile: TextFile; inputFileName, outputFileName: string; number, currentNumber, maxChainLength, currentChainLength: integer; begin // Запрашиваем у пользователя имя входного файла Write('Введите имя входного файла: '); ReadLn(inputFileName);
// Открываем входной файл для чтения AssignFile(inputFile, inputFileName); Reset(inputFile);
// Инициализируем значения переменных maxChainLength := 0; currentChainLength := 1; ReadLn(inputFile, currentNumber);
// Пока не достигнут конец файла while not Eof(inputFile) do begin // Считываем число из файла ReadLn(inputFile, number);
// Если число равно предыдущему, увеличиваем длину текущей цепочки if number = currentNumber then begin currentChainLength := currentChainLength + 1; end else // В противном случае сбрасываем текущую цепочку и начинаем новую begin if currentChainLength > maxChainLength then begin maxChainLength := currentChainLength; end; currentChainLength := 1; end; currentNumber := number; end;
// Закрываем входной файл CloseFile(inputFile);
// Запрашиваем у пользователя имя выходного файла Write('Введите имя выходного файла: '); ReadLn(outputFileName);
// Открываем выходной файл для записи AssignFile(outputFile, outputFileName); Rewrite(outputFile);
// Записываем найденную максимальную цепочку в выходной файл Writeln(outputFile, 'Максимальная длина цепочки: ', maxChainLength); Writeln(outputFile, 'Цепочка чисел:'); // Открываем входной файл снова Reset(inputFile);
currentChainLength := 1; ReadLn(inputFile, currentNumber);
while not Eof(inputFile) do begin ReadLn(inputFile, number); if number = currentNumber then begin currentChainLength := currentChainLength + 1; Writeln(outputFile, currentNumber); end else begin if currentChainLength = maxChainLength then begin Break; end; currentChainLength := 1; end; currentNumber := number; end;
// Закрываем входной и выходной файлы CloseFile(inputFile); CloseFile(outputFile); end. ```
Пояснение к программе:
1. Пользователю предлагается ввести имя входного файла с числами. 2. Открываем входной файл для чтения и инициализируем переменные. 3. Читаем первое число из файла и сохраняем его в переменной `currentNumber`. 4. Запускаем цикл `while`, который будет выполняться до конца файла. - Считываем число из файла в переменную `number`. - Если `number` равно `currentNumber`, значит мы нашли следующее число в цепочке. Увеличиваем переменную `currentChainLength` на 1. - Если `number` не равно `currentNumber`, значит мы достигли конца текущей цепочки чисел. Проверяем, если текущая цепочка длиннее максимальной цепочки, то обновляем значение `maxChainLength`. - Сбрасываем значение `currentChainLength` в 1 и сохраняем `number` в `currentNumber`. 5. Запрашиваем у пользователя имя выходного файла. 6. Открываем выходной файл для записи. 7. Записываем в выходной файл информацию о максимальной длине цепочки. 8. Открываем входной файл снова. 9. Запускаем цикл `while` для записи самой длинной цепочки чисел в выходной файл. - Считываем число из файла в переменную `number`. - Если `number` равно `currentNumber`, значит мы нашли следующее число в цепочке. Увеличиваем переменную `currentChainLength` на 1 и записываем `currentNumber` в выходной файл. - Если `number` не равно `currentNumber`, значит мы достигли конца текущей цепочки чисел. Проверяем, если текущая цепочка есть самая длинная цепочка, то выходим из цикла. - Сбрасываем значение `currentChainLength` в 1 и сохраняем `number` в `currentNumber`. 10. Закрываем входной и выходной файлы.


Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili