Другие языки программирования и технологии
Пожалуйста, будтье так добры, помочь решить задчаку в Паскале: Составьте программу, печатающую последнее слово в ...
Составьте программу, печатающую последнее слово в предложении в обратном порядке.
без dec можно.
а вот попроще нельзя. можно посложнее. вдруг после последнего слова еще пробелы есть? а вдруг строка только из пробелов состоит? если нужно, чтобы это учитывалось, то так:
Var s:string; i:integer;
Begin
Readln(s); i:=length(s);
while (i>0) and (s [ i]=' ') do i:=i-1;
if i=0 then Writeln('слова в строке не обнаружены')
else repeat Write(s[ i]); i:=i-1 until (i=0) or (s[ i]=' ');
End.
А Александра не слушайте. Его поправка с ошибкой.
а вот попроще нельзя. можно посложнее. вдруг после последнего слова еще пробелы есть? а вдруг строка только из пробелов состоит? если нужно, чтобы это учитывалось, то так:
Var s:string; i:integer;
Begin
Readln(s); i:=length(s);
while (i>0) and (s [ i]=' ') do i:=i-1;
if i=0 then Writeln('слова в строке не обнаружены')
else repeat Write(s[ i]); i:=i-1 until (i=0) or (s[ i]=' ');
End.
А Александра не слушайте. Его поправка с ошибкой.
var s:string; i:integer;
begin
readln(s); i:=length(s);
repeat write(s[ i]); dec(i); until (i=0)or(s[ i]=' ');
writeln; readln
end.
begin
readln(s); i:=length(s);
repeat write(s[ i]); dec(i); until (i=0)or(s[ i]=' ');
writeln; readln
end.
подправлю Krab Bark'а
repeat write( s[ i ] ); dec(i); until (i <> 0) or (s[ i]=' ');
repeat write( s[ i ] ); dec(i); until (i <> 0) or (s[ i]=' ');
это же элементарней некуда. Измеряете длинну строки, делаете цикл с обратным шагом с условием до первого пробела или другого не буквенного символа и записываете данные в новую строку, число на котором цикл остановился используется для следующего цикла в прямом порядке начиная с него и заканчивая числом длинны строки переписываете со 2 строки в первую. Далее выводите на дисплей и все. В итоге у вас выводится все предложение с последним словом записанном наоборот.
dec можно заменить на i:=i-1; а or это "или" можно удалить, но тогда программа будет ужасной, можно правда циклом for заменить
var s:string; i:integer;
begin
readln(s); i:=length(s);
for i:= length(s) downto 0 do begin
if (s[ i]=' ') then break; //или не break, может быть exit либо еще что-то
write(s[ i]);
dec(i); // либо i:=i-1;
end;
writeln; readln
end.
var s:string; i:integer;
begin
readln(s); i:=length(s);
for i:= length(s) downto 0 do begin
if (s[ i]=' ') then break; //или не break, может быть exit либо еще что-то
write(s[ i]);
dec(i); // либо i:=i-1;
end;
writeln; readln
end.
Похожие вопросы
- Составить программу, печатающую значение true, если указанное явление истинно, и false в противном случае.
- помогите пожалуйста..паскаль..составить программу вычисления суммы неповторяющихся элементов одномерного массива
- Умные люди есть тут?;)) ) Помогите, пожалуйста, с домашней работой по информатике. Нужно в Паскале составить алгоритм реш
- Програмисты, помогите! В Турбо Паскаль составить программу для решения квадратного уравнения(ax^2+bx=c)
- Помогите решить задачи по Паскалю
- помогите решить задачу на паскале: напечатать "столбиком" значения sin2, sin3, ..sin 20.
- Помогите решить задачу в паскале, пожалуйста! !
- Помогите решить, пожалуста (ТУрбо Паскаль)
- Помогите решить задачу на паскале
- Помогите решить задачу в паскале. Задание: Заменить в строке все вхождения "да" на "нет".