Подсчитать в списке количество слов, содержащих цифры, а затем удалить все цифры списка — Pascal(Паскаль)

TYPE
    LINK=^ELEM;
    ELEM=RECORD
         INF: CHAR;
         NEXT:LINK
     END;
VAR
    P,T,F,F1,T1,U,N,P1:LINK;
    I, N1, K: INTEGER; L:BOOLEAN;
BEGIN
    WRITELN('ВВЕДИТЕ КОЛИЧЕСТВО ЭЛЕМЕНТОВ СПИСКА');
    READLN(N1);
{формирование списка}
    NEW(F);
    P:=F;
    WRITELN ('ВВОДИТЕ СИМВОЛЫ');
    READ(P^.INF);
    FOR  I:=2 TO N1 DO
      BEGIN
       NEW(T);  READ(T^.INF);
       P^.NEXT:=T;  P:=T;
      END;
    T^.NEXT:=NIL;
    P:=F;K:=0;
{проход по списку}
    WHILE  P<>NIL DO
      BEGIN
         L:=TRUE;
{выделение слов}
         WHILE (P^.INF=' ') AND (P<>NIL)  DO P:=P^.NEXT ;
         WHILE (P^.INF<>' ') AND (P<>NIL)  DO
           BEGIN
             IF P^.INF IN ['0'..'9'] THEN L:=FALSE;
             P:=P^.NEXT ;
           END;
         IF L=FALSE  THEN  INC(K);
     END; 
{вывод списка}
   WRITELN('В ИСХОДНОМ СПИСКЕ');
   P:=F;
   WHILE P<>NIL DO
     BEGIN
        WRITE(P^.INF:2);
         P:=P^.NEXT
     END;   
   WRITELN('КОЛИЧЕСТВО СЛОВ,СОДЕРЖАЩИХ ЦИФРЫ',    );
 
 {удаление цифр в начале списка}
    P:=F;  N:=F;
    WHILE (P^.INF IN ['0'..'9']) AND (P<>NIL) DO
      BEGIN
        N:=P^.NEXT; DISPOSE(P); P:=N
      END;
{удаление цифр в середине списка}
    F:=P; N:=P; P:=P^.NEXT;
    WHILE P<>NIL DO
      BEGIN  
        IF (P^.INF IN ['0'..'9']) THEN
         BEGIN 
           N^.NEXT:=P^.NEXT; DISPOSE(P); P:=N^.NEXT; 
         END 
        ELSE 
         BEGIN
           N:=P;   P:=P^.NEXT;
         END;
       END;
{вывод списка}
   WRITELN(' СПИСОК БЕЗ ЦИФР');
   P:=F;
   WHILE P<>NIL DO
     BEGIN
        WRITE(P^.INF:2);
         P:=P^.NEXT
     END;   
 END.

Leave a Comment

35 − = 29