Нужно срочно написать программу, до 7 часов утра в Paskale. Помогите пожалуйста. №1...

0 голосов
59 просмотров

Нужно срочно написать программу, до 7 часов утра в Paskale. Помогите пожалуйста.
№1 Написать программу, которая с помощью функции удаляет из строки последнее слово.
№2 Написать программу, которая с помощью функции выводит сообщение true, если цифры в строке расположены по убыванию и false в противоположном случае.
Если есть вопросы, напишите в коментариях.


Информатика Начинающий (484 баллов)
оставил комментарий Архангел (142k баллов)

Версия Паскаля?

оставил комментарий Начинающий (484 баллов)

DosBox 7.2

оставил комментарий Начинающий (484 баллов)

Первый номер уже не нужен, осталось только второй.

оставил комментарий Архангел (142k баллов)

DOSBox - это не версия паскаля, а программная оболочка.

оставил комментарий Начинающий (484 баллов)

Borland Paskal Версия 7.0

оставил комментарий Архангел (142k баллов)

В общем, язык изначально не указан, делаю в каком есть.

оставил комментарий Начинающий (484 баллов)

Вы сделаете в Borland Paskal Версия 7.0?

оставил комментарий Архангел (142k баллов)

PasCal, буквы К там нет

оставил комментарий Архангел (142k баллов)

Если нужен Борланд, там только uses Crt; надо добавить в заголовке

Дан 1 ответ
0 голосов
Архангел (142k баллов)
 
Правильный ответ
//PascalABC.Net
function DelWord(s:string):string;
var
  i,n:integer;
begin
  n:=length(s);
  i:=n;
  repeat
    if i>=1 then Dec(i);
  until s[i]=' ';
  Delete(s,i+1,n-i);
  DelWord:=s
end;

var
  st:string;
begin
  Write('Введите строку: '); Readln(st);
  Writeln('Результат: ',DelWord(st))
end.

Тестовое решение:
Введите строку: А роза упала на лапу Азора
Результат: А роза упала на лапу

//PascalABC.Net
function DescDigits(s:string):boolean;
var
  desc:boolean;
  i,n:integer;
  c1,c2:char;
begin
  n:=length(s);
  desc:=true;
  c1:='A'; { главное, чтобы символ был "старше" любой цифры }
  i:=1;
  repeat
    c2:=s[i];
    if c2 in ['0'..'9'] then
      if c2    Inc(i)
  until (i>n) or (not desc);
  DescDigits:=desc
end;

var
  s:string;
begin
  Write('Введите строку: '); Readln(s);
  if DescDigits(s) then Writeln('true') else Writeln('false')
end.

Тестовое решение:
Введите строку: Пример строки с цифрами 98 по убыванию 7 6,5, так4тоже1можно!
true

Вариант первой программы для Borland Pascal 7.01
uses Crt;
function DelWord(s:string):string;
var
  i,n:integer;
begin
  n:=length(s);
  i:=n;
  repeat
    if i>=1 then Dec(i);
  until s[i]=' ';
  Delete(s,i+1,n-i);
  DelWord:=s
end;

var
  st:string;
begin
  ClrScr; 
  Write('Введите строку: '); Readln(st);
  Writeln('Результат: ',DelWord(st));
  ReadKey
end.


оставил комментарий Архангел (142k баллов)

Для второй программы вставить uses Crt; ClrScr; ReadKey в аналогичных местах

оставил комментарий Начинающий (484 баллов)

Inc(i)
until (i>n) or (not desc);
Вы можете объяснить для чего это нужно, пожалуйста?

оставил комментарий Архангел (142k баллов)

В смысле - для чего? это цикл пробега по строке до тех пор, пока либо не будет нарушена последовательность убывания цифр, либо строка не закончится.

оставил комментарий Начинающий (484 баллов)

Понял, не был знаком с такими операциями. Как ваше решение можно отметить как лучшее?

оставил комментарий Архангел (142k баллов)

Вы должны дождаться второго и выбрать лучшее из двух. Если его так и не будет, через несколько часов появится возможность отметить лучшее и для одного решения.

оставил комментарий Начинающий (484 баллов)

Спасибо ещё раз помощь, очень сильно выручили.

оставил комментарий Архангел (142k баллов)

Пожалуйста.

...