|
Вопрос # 5 228/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
не могу понять как решатьэту задачку.
Описать символьный массив длиной 80 символов.
2. Ввести предложение, состоящее из слов, разделенных пробелами. Массив просмотреть до точки, если она есть, или до последнего введеного символа. Выдать слова с указанием их длины, слова, удовлетворяющие заданию, пометить примечанием, например, "Начинается на заданную букву".
5. В случае исключительных ситуаций выдать сообщение
СТРОКА ПУСТА
СЛОВ, УДОВЛЕТВОРЯЮЩИХ ЗАДАНИЮ, НЕТ
СЛОВО ЕДИНСТВЕННОЕ
задание Слово заканчивается заданной буквой
 |
Вопрос задал: SHEV (статус: Посетитель)
Вопрос отправлен: 26 апреля 2011, 11:33
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Мережников Андрей
Здравствуйте, SHEV!
Пример кода для обработки массива смотри в приложении. Ввод данных в массив придумай сам.
Примерно так. ВНИМАНИЕ!!! Код не проверял!
Приложение: Переключить в обычный режим- <code language="pascal">
- var a:array [1..80] of char;
- i,ksu,ks,l:integer;
- fend,fends,fcond:boolean;
-
-
-
-
- begin
-
- for i:=1 to 80
- do a[i]:=' ';
-
-
-
-
-
- i:=1;
-
-
-
- while (i<=80)and not(fend)
- do begin
- l:=0;
-
- while (i<=80)and not(fend)
- do if a[i]=' ' then inc(i)
- else fend:=(a[i]='.');
-
-
-
- while (i<=80)and not(fends) and not(fend)
- do begin
- if (a[i]=' ')
- then fends:=true
- else if (a[i]='.')or(i=80)
- then fend:=true
- else begin
- write(a[i]);
- fcond:=(a[i]=isym);
- inc(l);
- inc(i);
- end;
- end;
- if (l>0)
- then begin
- inc(ks);
-
- if (fcond)
- then begin
-
- inc(ksu);
- end;
- writeln;
- end;
- end;
- if (ks=0)
-
- else begin
-
- if (ksu=0)
-
-
- end;
- end.
- </code>
-
-
 |
Ответ отправил: Мережников Андрей (статус: Абитуриент)
Время отправки: 27 апреля 2011, 20:40
Оценка за ответ: 4
|
Мини-форум вопроса
Всего сообщений: 4; последнее сообщение — 27 апреля 2011, 20:03; участников в обсуждении: 3.
|
min@y™ (статус: Доктор наук), 26 апреля 2011, 12:38 [#1]:
А где исходные данные? И, вообще, что не получается-то? Где вопрос?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
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 (статус: Посетитель), 27 апреля 2011, 20:03 [#4]:
вообще решить не могу задачу а завтра сдавать
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|