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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2011, 12:03   #1
Bonifacyi
 
Регистрация: 25.01.2009
Сообщений: 5
По умолчанию Непонятное поведение программы

Доброго дня всем читающим!!
Возник вопрос по простенкой программе, которую удалось реализовать, но с одним недочетом. Итак, условие задачи звучит так: Вводится текстовая строка, состоящая из «слов» - последовательностей символов, не содержащих пробелов. Отдельные «слова» отделены друг от друга пробелами. Вывести на печать в обратном порядке: Все гласные, которые есть во всех словах, оканчивающихся на заданный символ (символ вводится)....
Реализация программы не такая уж сложная, однако есть одно большое НО. Дело в том, что в программе не работает второе чтение( первое это ввод строки, второе- ввод буквы). Причем не работает именно второе чтение. То есть, если поменять местами ввод строки и ввод буквы, то строка не будет вводится, а программа пойдет дальше. Итак исходный код:
Код:
Program Second;
uses Crt;
var
    let,u :  string;
    ws: array[1..100] of string;
    w:  string;
    len, len_slova: integer;
    i, j, q: integer;


Begin
    ClrScr;
    write('Type you string, please : ');
    read(u);
    writeln (u);
    write('Type letter? please : ');
    read(let);
    writeln (let);

	writeln;
    len := length(u);

    i := 1;

    while i <= len do
	if u[i] in ['a'..'z','A'..'Z', '*'..'п','Ђ'..'џ'] then begin
	    w := (u[i]);
	    i := i + 1;
	    while (i <= len) and
	     ( ((u[i] >='a') and (u[i] <='z')) or
	       ((u[i] >='A') and (u[i] <='Z')) or
	       ((u[i] >='Ђ') and (u[i] <='џ')) or
	       ((u[i] >='*') and (u[i] <='п'))
	     ) do begin
		w := w + u[i];
		i := i + 1;
	    end;
	    j := 1;
	    while (j <= q) and (w<>ws[j]) do
		j := j + 1;
	    if j > q then begin
		q := q + 1;
		ws[q] := w;
	    end;
	end
	else

	    i := i + 1;
     writeln('Your array of words:');
    for i := 1 to q do
       begin
	len_slova:=length( ws[i]);
	write(ws[i]+'   ');
	writeln(len_slova);
       end;
	writeln;
	writeln('number of words: ',q);
{	write('Enter last letter, please:  ');
	readln(u);
	writeln(u);}
	readln;


    for i:=q downto 1 do
    begin
      w:=ws[i];
      len_slova:=length(ws[i]);
      if w[len_slova]= u[1] then
	begin  writeln(w);
	 for j:=len_slova downto 1 do
	   begin
	    if (w[j]='*') or (w[j]='Ґ') or (w[j]='с') or (w[j]='Ё') or (w[j]='®')
	       or (w[j]='г') or (w[j]='н') or (w[j]='о') or (w[j]='п') or (w[j]='л') then

	     write(w[j]+' ');
	   end;
	end;

	 writeln;
    end;

    readln;
end.
Практически в самом начале есть несколько строчек про сточку и про последнюю букву. вот именно они работают некорректно.
Запускал и в турбо паскале и под борландом

Последний раз редактировалось Bonifacyi; 18.12.2011 в 12:07.
Bonifacyi вне форума Ответить с цитированием
Старый 18.12.2011, 13:28   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Код:
write('Type you string, please : ');
    read(u);
    writeln (u);
    write('Type letter? please : ');
    read(let);
    writeln (let);
А ведь не зря в Паскале есть ещё и readln()!

Дело в том, что read() не все читает из буфера. Там остается символ от Enter, который Вы нажимаете, завершая ввод.
Попробуйте ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 18.12.2011, 14:10   #3
Bonifacyi
 
Регистрация: 25.01.2009
Сообщений: 5
По умолчанию

Семёёён Семёёёёныч!!!! Спасибо, все получилось!!!!
Самое смешное, что readln пробовал, но неосознанно... для, красоты так сказать.
Еще раз огромное спасибо!!
Bonifacyi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятное поведение скрипта AlexDn JavaScript, Ajax 7 06.08.2010 06:16
Непонятное поведение типа J-Max Общие вопросы Delphi 12 10.02.2010 17:15
Непонятное поведение алгоритма master_root Общие вопросы Delphi 3 11.06.2008 14:32
Непонятное поведение программы на Delphi Kashp Помощь студентам 10 14.12.2007 21:12