Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 21.09.2011, 00:40   #1
ArsGo
Пользователь
 
Регистрация: 10.10.2010
Сообщений: 17
По умолчанию Шифровка. String. Pascal.

Кто может, пожалуйста, исправьте ошибки в программе.

Задача:
Текст зашифрован так: определяется длина самого длинного слова (N), и каждая английская буква заменяется на букву, стоящую на N позиций ранее, строчные остаются строчными, заглавные заглавными.

Код:
uses
  SysUtils;
Var
C: String;
i:integer;
max,b,k:integer;

Begin
read(C);
max:=0;
k:=0;
for i:=1 to length (C) do
begin
if ((c[i] <> chr(32)) and (c[i]<>chr(46))) then
 begin
 inc(k);
 if k>max then max:=k;
 end;
end;

    for i:= 1 to length(C) do
     begin
     if ((ord(C[i])<>32) and (ord(C[i])<>46)) then
     begin
      b:=ord(C[i])+max;
      if  ((90<b) and (b<94)) or ((b>122) and (b<126)) then
      b:=b-26;
      C[i]:=chr(b);
      end;
     end;
 writeln(C);
 readln;
 readln;
End.

________
1) Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)

2) Кросспостинг запрещён правилами форума.

3) (предваряя следующее нарушение, в качестве профилактики): одна тема - один вопрос.
для другого вопроса, другой задачи - создавайте новую тему (не забыв дать адекватное название, разумеется!)

Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 21.09.2011 в 02:03.
ArsGo вне форума
Старый 21.09.2011, 01:08   #2
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Неправильно находится длина самого длинного слова, т.к. при встрече пробела переменная k не сбрасывается в ноль, то max=длине строки минус пробелы и точки
Цитата:
заменяется на букву, стоящую на N позиций ранее
скорее всего имеется ввиду что при рассмотрении к примеру буквы на 5 позиции и N=3, подставляется буква стоящая на 2 позиции
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума
Старый 21.09.2011, 01:30   #3
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от ArsGo Посмотреть сообщение
Кто может, пожалуйста, исправьте ошибки в программе.
Держи
Код:
const
  UpCase= ['A'..'Z'];
  LoCase= ['a'..'z'];
  Alphabet= UpCase+LoCase;
  AlphLength= 26;

Var
  C: String;
  i:integer;
  max,b,k:integer;

Begin
  readln(C);
  max:=0;
  k:=0;
  for i:=1 to length (C) do
    if c[i] in Alphabet then begin
      inc(k);
      if k>max then max:=k;
    end
    else k:=0;

  for i:= 1 to length(C) do
    if c[i] in UpCase then
      c[i]:= Chr((Ord(c[i])-Ord('A')+AlphLength-max) mod AlphLength + Ord('A'))
    else if c[i] in LoCase then
      c[i]:= Chr((Ord(c[i])-Ord('a')+AlphLength-max) mod AlphLength + Ord('a'));
  writeln(C);
  readln;
End.
Предпочитаю на "ты".
TinMan вне форума
Старый 21.09.2011, 01:58   #4
ArsGo
Пользователь
 
Регистрация: 10.10.2010
Сообщений: 17
По умолчанию

Ого, спасибо Вам большое, очень рад, что есть еще отзывчивые и умные люди =)
Если не трудно, могли бы Вы помочь в упрощении 1-го кода, проверяющего число на возможность разложения на сумму 2-х квадратов.
var a,b,n:longint;
begin
//reset(input,'squares.in');
//rewrite(output,'squares.out');
readln(n);
for a:=1 to round(sqrt(n))+1 do
begin
b:=round(sqrt(n-a*a));
if a*a+b*b=n then begin
writeln('YES');
if a>b then writeln(b,' ',a)
else writeln(a,' ',b);
readln;halt;
end;end;
write('NO');
readln;readln;
end.
ArsGo вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
тип данных string на pascal knopach Помощь студентам 2 15.12.2010 16:28
Как получить адрес String строки или преобразовать String madboy4ik Общие вопросы по Java, Java SE, Kotlin 6 15.01.2010 11:57
Pascal (тип String и массивы). 4otenado Помощь студентам 8 25.12.2009 18:11
String(Файл) - PASCAL Andrux Паскаль, Turbo Pascal, PascalABC.NET 0 07.06.2009 18:07
Turbo Pascal 7.0 Строки (String) Lerank Помощь студентам 11 16.12.2008 20:27