Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 228

/ вопрос открыт /

Приветствую, уважаемые эксперты!
не могу понять как решатьэту задачку.
Описать символьный массив длиной 80 символов.
2. Ввести предложение, состоящее из слов, разделенных пробелами. Массив просмотреть до точки, если она есть, или до последнего введеного символа. Выдать слова с указанием их длины, слова, удовлетворяющие заданию, пометить примечанием, например, "Начинается на заданную букву".
5. В случае исключительных ситуаций выдать сообщение

СТРОКА ПУСТА
СЛОВ, УДОВЛЕТВОРЯЮЩИХ ЗАДАНИЮ, НЕТ
СЛОВО ЕДИНСТВЕННОЕ
задание Слово заканчивается заданной буквой

SHEV Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: SHEV (статус: Посетитель)
Вопрос отправлен: 26 апреля 2011, 11:33
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Мережников Андрей

Здравствуйте, SHEV!
Пример кода для обработки массива смотри в приложении. Ввод данных в массив придумай сам.
Примерно так. ВНИМАНИЕ!!! Код не проверял!

Приложение:
  1. <code language="pascal">
  2. var a:array [1..80] of char;
  3. i,ksu,ks,l:integer;
  4. fend,fends,fcond:boolean;
  5.  
  6.  
  7.  
  8.  
  9. begin
  10.  
  11. for i:=1 to 80
  12. do a[i]:=' ';
  13.  
  14.  
  15.  
  16.  
  17.  
  18. i:=1;
  19.  
  20.  
  21.  
  22. while (i<=80)and not(fend)
  23. do begin
  24. l:=0;
  25.  
  26. while (i<=80)and not(fend)
  27. do if a[i]=' ' then inc(i)
  28. else fend:=(a[i]='.');
  29.  
  30.  
  31.  
  32. while (i<=80)and not(fends) and not(fend)
  33. do begin
  34. if (a[i]=' ')
  35. then fends:=true
  36. else if (a[i]='.')or(i=80)
  37. then fend:=true
  38. else begin
  39. write(a[i]);
  40. fcond:=(a[i]=isym);
  41. inc(l);
  42. inc(i);
  43. end;
  44. end;
  45. if (l>0)
  46. then begin
  47. inc(ks);
  48.  
  49. if (fcond)
  50. then begin
  51.  
  52. inc(ksu);
  53. end;
  54. writeln;
  55. end;
  56. end;
  57. if (ks=0)
  58.  
  59. else begin
  60.  
  61. if (ksu=0)
  62.  
  63.  
  64. end;
  65. end.
  66. </code>
  67.  
  68.  


Ответ отправил: Мережников Андрей (статус: Абитуриент)
Время отправки: 27 апреля 2011, 20:40
Оценка за ответ: 4


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 27 апреля 2011, 20:03; участников в обсуждении: 3.
min@y™

min@y™ (статус: Доктор наук), 26 апреля 2011, 12:38 [#1]:

А где исходные данные? И, вообще, что не получается-то? Где вопрос?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
SHEV

SHEV (статус: Посетитель), 26 апреля 2011, 13:56 [#2]:

как мне массив переделать в char какие функции нужно что бы прога работала под charom а не под стрингом
uses crt;
var
a:array[1..80] of string; {одномерный массив}
str,sl,by,by1:string; {предложение,}
l:array[1..80] of integer; {оддномерный массив}
maxl,i:integer; {}
space,tochka:char; {пробел ,точка}
p,q,st,sch:byte; {}
begin
clrscr;
maxl:=0; p:=0; space:=' '; tochka:='.'; sch:=0;
writeln('Введите предложение:');
readln(str);
p:=pos(tochka,str);
if p>0 then str:=copy(str,1,p-1);
repeat
st:=length(str);
by1:=copy(str,st,st);
if by1=space then str:=copy(str,1,st-1)
else i:=1;
until i=1;
i:=0;
repeat
p:=pos(space,str);
if p=1 then
Delete(str,p,1)
else begin
i:=i+1;
a[i]:=copy(str,1,p-1);
Delete(str,1,p);
l[i]:=length(a[i]);
if maxl<l[i] then maxl:=l[i];
end;
until p=0;
if l[1]=0 then write ('Введенная строка пуста')
else begin
repeat
writeln ('Будем проводить проверку слов? 1 - да, 0 - нет');
readln(q);
until (q=1) or (q=0);
if q=0
then begin
writeln ('Проверка не была произведена');
for p:=1 to i do begin
writeln('слово №',p:2,':',a[p]:maxl,' (Длина слова =',l[p]:3,') Примечание: отсутсвует');
end;
end
else begin
writeln ('Введите 1 символ для сравнения окончания слова');
readln (by);
st:=length(by);
p:=pos(space,by);
if (st=0) or (st>=2)or (p=1) then begin
writeln ('Проверка не была произведена');
writeln ('Строка пуста или было введено более 1 символа для проверки');
sl:='отсутствует'
end
else begin
for p:=1 to i do begin
st:=length(a[p]);
by1:=copy(a[p],st,st);
if by=by1 then begin
sl:='Слово оканчивается на заданную букву';
inc(sch);
end
else sl:='Слово не оканчивается на заданную букву';
writeln('слово №',p:2,':',a[p]:maxl,' (Длина слова =',l[p]:3,') Примечание: ',sl);
end;
writeln ('Количество слов удовлетворяющих условию: ',sch);
end;
end;
end;
readln;
end.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 26 апреля 2011, 18:39 [#3]:

символьный массив: a:array [1..80] of char;
для чего вводится целочисленный массив?
Прочтите еще раз ВНИМАТЕЛЬНО задание.
Где там написано, что выделенные слова надо раскладывать по элементам массива?
SHEV

SHEV (статус: Посетитель), 27 апреля 2011, 20:03 [#4]:

вообще решить не могу задачу а завтра сдавать

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:03
Выполнено за 0.04 сек.