Вопрос задан 08.10.2023 в 03:43. Предмет Информатика. Спрашивает Медяник Алексей.

Помогите уменьшить время программы, все тесты проходит, проблема только во времени (на языке

паскаль) var s:string ; var k,i:integer; begin readln(s); k:=0; for i:=1 to length(s) do if s[i]='a' then begin s[i]:='b'; k:=k+1; end; for i:=1 to length(s) do if s[i]='A' then begin s[i]:='B'; k:=k+1; end; writeln(s); writeln(k); end.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Александрова Александра.

Код (Pascal)

var

 s: string;

 k, i: integer;


begin

 readln(s);

 k := 0;

 for i := 1 to length(s) do

   if s[i] = 'a' then

   begin

     s[i] := 'b';

     k := k + 1;

   end

   else if s[i] = 'A' then

   begin

     s[i] := 'B';

     k := k + 1;

   end;

 writeln(s);

 writeln(k);

end.

-----------------------------------------

Файл с решением прикреплён.


0 0
Отвечает Канак Андрійко.

На Паскале если используются переменные типа string, то обработка строки занимает ну ооооочень много времени.  Вместо string лучше использовать массив char.  На скринах приведен пример программ с использованием char.  Символы считывались из файла , размер 20000.  Время работы программ (разницу) оцените сами.




0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для уменьшения времени выполнения программы можно использовать другой подход. Вместо того, чтобы проходить по строке два раза и заменять символы 'a' и 'A', вы можете выполнить замену символов в одном проходе. Вот более оптимизированный вариант вашей программы на языке Pascal:

pascal
var s: string; k, i: integer; begin readln(s); k := 0; for i := 1 to length(s) do begin if (s[i] = 'a') or (s[i] = 'A') then begin s[i] := 'b'; k := k + 1; end; end; writeln(s); writeln(k); end.

В этой версии программы мы проходим по строке только один раз и заменяем символы 'a' и 'A' на 'b', если они соответствуют условию. Это должно существенно ускорить выполнение программы, так как мы избегаем второго прохода по строке.

0 0

Похожие вопросы

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

Последние заданные вопросы в категории Информатика

Задать вопрос