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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2012, 19:08   #1
Лилитана
 
Регистрация: 19.12.2012
Сообщений: 2
По умолчанию Строки. Ошибку.

Дан текст. Откорректировать данный текст: между двумя определенными символами (введенными с клавиатуры) вставить звездочку, подсчитать количество вставок и сумму кодов всех символов до вставки звездочек и после.

Сначала звездочку не вставляло, потом исправила, начало вставлять, но немного неправильно.
Пожалуйста, помогите найти где у меня ошибка.


Код:
program lab_7;
uses crt;
var t:string;
    s1,s2:char;
    i,j,x,sum,sum2:integer;
begin
  clrscr;
  write('Input text: '); readln(t);
  write('Input first symbol: '); readln(s1);
  write('Input second symbol: '); readln(s2);
  sum:=0;
  sum2:=0;
  j:=1;
  for i:=1 to length(t) do sum:=sum+ord(t[i]);
  for i:=1 to length(t) do if t[i]=s1 then begin
                                           repeat inc(j);
                                           until (t[j]=s2) or (j>length(t));
                                           if t[j]=s2 then begin insert('*',t,i+1);
                                                                 inc(x);
                                                                 end;
                                           end;
  for i:=1 to length(t) do sum2:=sum2+ord(t[i]);
  writeln('Summa codes of symbols in starting text: ',sum);
  writeln('Summa codes of symbols in new text: ',sum2);
  writeln('Symbol "*" input in text: ',x,' times');
  writeln('New text: ',t);
  readln;
end.

Последний раз редактировалось ACE Valery; 20.12.2012 в 01:31.
Лилитана вне форума Ответить с цитированием
Старый 20.12.2012, 00:42   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Ты нигде не инициализируешь переменную x, как минимум.
Son Of Pain вне форума Ответить с цитированием
Старый 20.12.2012, 07:19   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Код:
program lab_7;
uses crt;
var t:string;
    s1,s2:char;
    i,j,x,sum,sum2:integer;
begin
  clrscr;
  write('Input text: '); readln(t);
  write('Input first symbol: '); readln(s1);
  write('Input second symbol: '); readln(s2);
  sum:=0;
  sum2:=0;
  x := 0;
  for i:=1 to length(t) do sum:=sum+ord(t[i]);
  i := 1;
  while i < length(t) do 
  begin
    if t[i]=s1 then 
    begin
      j := i + 1;
      if t[j]=s2 then 
      begin 
        insert('*',t,j);
        inc(x);
        inc(i);
      end;
    end;
    inc(i);
  end;
  for i:=1 to length(t) do sum2:=sum2+ord(t[i]);
  writeln('Summa codes of symbols in starting text: ',sum);
  writeln('Summa codes of symbols in new text: ',sum2);
  writeln('Symbol "*" input in text: ',x,' times');
  writeln('New text: ',t);
  readln;
end.
Если я правильно понял задание, то примерно так. Код не проверял, тут написал.
Лучше использовать цикл while ибо строка изменяется по ходу цикла.
phomm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки (найти ошибку) limaxY Общие вопросы C/C++ 8 05.01.2011 04:55
Как найти ошибку(строки) Nafanja20 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 21.05.2010 21:42
Строки в Паскале, найти ошибку bingooo Помощь студентам 0 07.04.2010 19:24
Строки. Помогите найти ошибку. 5nizza77 Помощь студентам 1 16.10.2009 16:10