| 
| 
 | Вопрос # 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]:вообще решить не могу задачу а завтра сдавать |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |