• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Строки. Помогите написать программу

Natashka

Ученик
Регистрация
30 Сен 2012
Сообщения
8
Реакции
0
Баллы
0
Строки. Помогите написать программу

Задание 1
Строка состоит из натуральных чисел, разделенных пробелом, и диапазонов чисел (начальное число-тире-конечное число). Удалить из строки все числа, входящие в эти диапазоны. Оставшиеся числа вывести на экран по возрастанию (диапазоны не выводить).

Входные данные:
15 9 2 5 3-6 1 3 7-10

Выходные данные:
1 2 15

помогите написать программу на Паскале
 
помогите написать программу на Паскале
Код:
Const
 Nmax=50;

Var
 S,S1,Sx:String;
 N,N1,Nr,i,j:Byte;
 A,B,Min,Max:Array[1..Nmax] of Word;
 D:Word;
 Code:Integer;
 bo:boolean;

Begin
 Writeln('Enter the string:');
 Readln(S);
 N:=0;
 Nr:=0;
 i:=0;
 Repeat
  Sx:='';
  repeat
   Inc(i);
   if (S[i]<>' ') and (S[i]<>'-') and (i<=Length(S)) then Sx:=Sx+S[i];
  until (S[i]=' ') or (S[i]='-') or (i>Length(S));
  if S[i]=' ' then
   begin
    Inc(N);
    Val(Sx,A[N],Code);
   end
  else
   if S[i]='-' then
    begin
     Inc(Nr);
     Val(Sx,Min[Nr],Code);
     Sx:='';
     repeat
      Inc(i);
      if (S[i]<>' ') and (i<=Length(S)) then Sx:=Sx+S[i];
     until (S[i]=' ') or (i>Length(S));
     Val(Sx,Max[Nr],Code);
    end;
 Until i>Length(S);

 N1:=0;

 For i:=1 to N do
  begin
   bo:=true;
   for j:=1 to Nr do
    if (A[i]>=Min[j]) and (A[i]<=Max[j]) then bo:=false;
   if bo then
    begin
     Inc(N1);
     B[N1]:=A[i];
    end;
  end;

 For i:=1 to N1-1 do
  For j:=1 to N1-i do
   if B[j]>B[j+1] then
    begin
     D:=B[j];
     B[j]:=B[j+1];
     B[j+1]:=D;
    end;

 Str(B[1],S1);
 For i:=2 to N1 do
  begin
   Str(B[i],Sx);
   S1:=S1+' '+Sx;
  end;

 Writeln;
 Writeln('Result:');
 Writeln(S1);
 Readln
End.
 
Назад
Сверху