дан текст, слова разделены пробелом или ";".поменять первую и последнюю букву каждого слова.

обучение решение

Оч срочно(((я ее пыталась написать, но она не работает(((

Примечание:
на Турбо Паскале

Примечание:
спасиб))) в принципе она у меня начиналась...
var a:string;l,i,k: integer;
begin
writeln(' введите текст');
readln (s);
l:=1; i:=1;
for i:=1 to length(s) do begin
if (s[i]=' ') or (s[i]=эжэ)
then begin k:=i-1; a:=s[k]; s[k]:=s[i]; s[i]:=a; l:=i+1; end;
end;
writeln (s)
end.


гдето есть ошибка не могу найти(((

Примечание:
про эжэ знаю)
вот и я не могу найти, даж препод не смогла....

Примечание:
Nxaj а она точно пойдет?
Ответы:
на чем хоть написать надо? Вы тут не про москву, которая дефолт-сити, а про языки, из-за которых и похоливарить можно ;)
представим что начинается стринговый массив уже с слова
begin
readln(s);
m:=2;
i:=1;
while i<length(s) do begin
if s[m]=';' or s[m]=' ' then begin g:=s[m-1]; s[m-1]:=s[i];s[i]:=g; i:=m+1; m:=m+2 end
else m:=m+1;
end;
writeln(s);
end.
мож я где-то и напутал, всё-таки 15 минут 4-го
Nxaj,
твоя программа зациклится на любом тесте, состоящем только из букв.
Артёмка,
балин, я ж говорю-3 часа ночи.
как обозначить пустую клетку стринга?
Вот мой вариант.
var s: string;
   i, j:integer;
   ch: char;
begin
 readln(s);
 j = 0;
 for i := 1 to length(s) do begin
   if (length(s) = i) or (s[i + 1] = ' ') or (s[i + 1] = ';') do begin
     if (j > 0) then begin
       ch := s[i]; s[i] := s[j]; s[j] := ch; j := 0;
     end;
   end else begin
     if (j = 0) then j := i;
   end;
 end;
end.
Nxaj,
а что такое "пустая клетка стринга"?
гдето есть ошибка не могу найти(((
1. Не объявлена переменная s
2. s[i]:=a; Символьной переменной вроде нельзя присваивать строки
3. эжэ надо заменить на ';'
4. Переменная l используется только в присваивании.
5. В алгоритме явно что-то не то.
Артёмка,
не надо меня сбивать и всё получается правильно:
uses crt;
var i,m:integer;
s:string;
g:char;
begin
readln(s);
m:=2;
i:=1;
while i<length(s) do begin
if (s[m]=';')or (s[m]=' ')or (m>length(s)) then begin g:=s[m-1]; s[m-1]:=s[i];s[i]:=g; i:=m+1; m:=m+2 end
else m:=m+1;
end;
writeln(s);
readkey;
end.
p.s. "пустая клетка стринга"-пустой байт где ничего не записано
это относится к тому случаю когда текст состоит из одного слова
решил эту проблему путем добавления условия (m>length(s))
в общем у меня такое-же решение только "стили" отличаются
> не надо меня сбивать и всё получается правильно
Я не сбиваю, а указываю на недочеты.
Дополнение #4
только что проверял
>Твоя новая программа завалится на таком тесте:
>a;;a
ктулху? :-D
я на повторение 2 разделительных знаков и не рассчитывал:"дан текст, слова разделены пробелом или ";".поменять первую и последнюю букву каждого слова."
даже если оч хочется, щас переделаю
>>"пустая клетка стринга"-пустой байт где ничего не записано
>Такого в паскале не бывает.
она условная, если даже не для компилятора, то для меня
>> не надо меня сбивать и всё получается правильно
>Я не сбиваю, а указываю на недочеты.
за это спасибо
> даже если оч хочется, щас переделаю
Нет, я же в шутку. И так сойдет.


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.