Строка: Найти и напечатать все идентификаторы, не содержащие цифр. - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <stdio.h>
#include <ctype.h>
#define M 21
#define N 50
void poisk (char B[N][M]);
void main()
{
    char A[N][M];
    int i, j,x;
    
    printf("\n Vvedite stroky identificatorov,");
    printf("\n v konce  potavte '###'\n");
    for (i=0;i<=N;i++)
    {
        if(i==N)
        {
            printf("\n error \n");
            return;
        }
 
        for(j=0;j<M;j++)
        {
          if (j==M-1)
          {
              printf("\n error");
              return;
          }
          x=scanf("%c",&A[i][j]);
          if (x==0)
            printf("\n error,ne vvedeni indifikatori");
          if (A[i][j]==' ')
            break;
          if(A[i][j]=='#' && A[i][j-1]=='#' && A[i][j-2]=='#')
              break;
          
        }
        if (A[i][j]=='#' && A[i][j-1]=='#' && A[i][j-2]=='#')
            break;
    }
    printf("\n vi vveli:\n");
    for (i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
          printf("%c",A[i][j]);
          if(A[i][j]=='#' && A[i][j-1]=='#' && A[i][j-2]=='#')
              break;
          if (A[i][j]==' ')
            break;
          
        }
        if(A[i][j]=='#' && A[i][j-1]=='#' && A[i][j-2]=='#')
              break;
    
    }
    
    poisk(A);
    return;
}
 
void poisk (char B[N][M])
{
    int i,j,schet;
    printf("\n Rezul'tat:");
    for (i=0;i<M;i++)
    {
        
        j=0;
        schet=0;
        while(B[i][j]!=' '|| j<M-1)
        {
 
            if(B[i][j]=='#' && B[i][j+1]=='#' && B[i][j+2]=='#')
              break;
            if (B[i][j]==' ' || B[i][j+1]==' ')
                break;
            if (isdigit(B[i][j]))
                if(isalpha(B[i][j+1]))
                  schet++;
            if(isalpha(B[i][j]))
                if(isdigit(B[i][j+1]))  
                    schet++;
            j++;
 
        }
 
        if (schet==j)
            for(j=0;j<N;j++)
            {
 
                if(B[i][j]=='#' && B[i][j+1]=='#' && B[i][j+2]=='#')
                   break;
                printf("%c",B[i][j]);
                if (B[i][j]==' ')
                    break;
            }
        if(B[i][j]=='#' && B[i][j+1]=='#' && B[i][j+2]=='#')
            break;
    }
    return;
}
Есть вот такой вот код, но мне сказали сделать другую лабу, а успеть вовремя я не смогу т.к. даже эту я писала около недели, а новую сдавать завтра, поэтому кто сможет помогите пожалуйста... Новая лаба: Задана последовательность индификаторов разделенная 1-м или несколькими пробелами, оканчивающаяся "," сразу после последнего индификатора. Каждый индификатор не более 20 символов, длина последовательности не более 35 индификаторов. Найти и напечатать все индификаторы не содержащие цифр. Лаба которую я скинула: То же самое только заканчивакется тремя "#". Каждый индификатор не более 20 символов. Найти и напечатать все индификаторы в которых буквы и цифры чередуются.

Решение задачи: «Строка: Найти и напечатать все идентификаторы, не содержащие цифр.»

textual
Листинг программы
#include<stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
#define M 21   //количество символов в слове
#define N 35   //количество слов
 
char A[N][M];
void poisk(void);
 
main()
{
 
    int i,j;
   char x;
 
    printf("\n Vvedite stroky identificatorov,");
   printf("\n v konce  potavte ','\n");
 
   for (i=0; i<M; ++i)
   {
    for (j=0; j<N; ++j)
      {
        x=scanf("%c",&A[i][j]);
         if (x==0)
            printf("\n error,ne vvedeni indifikatori");
         if ((A[i][j]==' ')||(A[i][j]==','))
            break;
      }
      if (A[i][j]==',')
        break;
   }
   /*вывод содержимого на дисплей*/
   printf("\n vi vveli:\n");
   for (i=0;i<N;i++)
   {
    for(j=0;j<M;j++)
      {
        printf("%c",A[i][j]);
         if ((A[i][j]==' ')||(A[i][j]==','))
            break;
      }
      if (A[i][j]==',')
        break;
   }
   printf("\n");
   poisk();
    getchar();
   getchar();
   return 0;
}
/*поиск идентификаторов не содержащих цифр и вывод их на дисплей*/
void poisk(void)
{
    int i,j,rez,k;
   printf("\n Rezul'tat:\n");
   for (i=0;i<N;++i)
   {
      rez=0;
    for(j=0;j<M;++j)
      {
         if (isdigit(A[i][j]))
            {
                rez=1;
               break;
            }
         if ((A[i][j]==' ')||(A[i][j]==','))
            break;
      }
      if (rez==0)
      {
            for (k=0;k<M;++k)
         {
            printf("%c",A[i][k]);
            if ((A[i][k]==' ')||(A[i][k]==','))
                break;
         }
      }
      if (A[i][j]==',')
        break;
   }
}

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы