Advertisement
CosmicFox33

Untitled

Nov 17th, 2021
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.32 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define kmax 10
  5. #define lmax 20
  6. #include <locale.h>
  7.  
  8. void z1(char arr[kmax+1][lmax+1], char  subs[kmax*kmax+kmax][lmax+1], int *Col, int k)
  9. {
  10.     char c, s;
  11.     int i, j, col=0, l, p;
  12.     printf("Задание №1. \n");
  13.     for(i=0;i<k;i++)
  14.     {
  15.         c=arr[i][0];
  16.         for(j=0;c!='\n';j++)
  17.         {
  18.             c=arr[i][j];
  19.             s=arr[i][j+1];
  20.             if((c>='а'&&c<='я')||(c>='А'&&c<='Я'))
  21.             for(l=j+2;s!='\n';l++)
  22.             {
  23.                 s=arr[i][l];
  24.                 if((s>='А'&&s<='Я')||(s>='а'&&s<='я'))
  25.                 {
  26.                     for(p=0;p<l-j-1;p++) subs[col][p]=arr[i][j+1+p];
  27.                     subs[col][p]='\0';
  28.                     col++;
  29.                 }
  30.             }
  31.         }
  32.     }
  33.     if(col==0) printf("Такие подстроки не найдены.\n");
  34.     for(i=0;i<col;i++)
  35.     {
  36.         puts(subs[i]);
  37.     }
  38.     *Col=col;
  39. }
  40. void z2(char subs[kmax*kmax+kmax][lmax+1], int col, int *Mini)
  41. {
  42.     int mini, flag, minl, i,j, l;
  43.     printf("Задание №2. \n");
  44.     if(col==0) printf("Т.к. в задании №1 не были найдены подстроки, подходящие под условия, такой подстроки не существует.\n");
  45.     else
  46.     {
  47.         minl=lmax;
  48.         for(i=0;i<col;i++)
  49.         {
  50.             l=0;
  51.             for(j=0;subs[i][j]!='\0';j++) l++;
  52.             if(l<minl || (l==minl && flag==0))
  53.             {
  54.                 flag=1;
  55.                 minl=l;
  56.                 mini=i;
  57.             }
  58.         }
  59.         puts(subs[mini]);
  60.     }
  61.     *Mini=mini;
  62. }
  63. void z3(char subs[kmax*kmax+kmax][lmax+1], int imin)
  64. {
  65.     printf("Задание №3.\n");
  66.     int i, flag, l;
  67.     flag=0;
  68.     l=0;
  69.     for(i=0;subs[imin][i]!='\0';i++)
  70.     {
  71.         if(subs[imin][i]!=' ') flag=1;
  72.         if(!(subs[imin][i]==' ' && flag==0)) subs[imin][l++]=subs[imin][i];
  73.     }
  74.     subs[imin][l]='\0';
  75.     if(imin==-1) printf("Т.к. в задании №1 не были найдены подстроки, подходящие под условия, такой подстроки не существует.\n");
  76.     else
  77.     {
  78.         if(l==0) printf("Строка полностью удалена. \n");
  79.         else
  80.         {
  81.             if(l==i) printf("Строка осталась без изменений. \n");
  82.             else puts(subs[imin]);
  83.         }
  84.     }
  85. }
  86.  
  87. int main()
  88. {
  89.     system("chcp 1251");
  90.     system("cls");
  91.     setlocale(LC_ALL, "Russian");
  92.  
  93.     int col, mini=-1, k, i, j;
  94.     char arr[kmax+1][lmax+1], subs[kmax*kmax+kmax][lmax+1];
  95.  
  96.     printf("Лабораторная работа №4.\n");
  97.     do
  98.     {
  99.         printf("Введите k, не превышающее %d:", lmax);
  100.         scanf("%d", &k);
  101.         if(k<=0 || k>kmax) printf("k введено некорректно, повторите ввод.\n");
  102.         while(getchar()!='\n');
  103.     }while(k<=0 || k>kmax);
  104.  
  105.     printf("Введите строки (длина не должна превышать %d).\n", lmax);
  106.     for(i=0;i<k;i++)
  107.     {
  108.         printf("%d: ", i + 1);
  109.         fgets(arr[i], lmax, stdin);
  110.     }
  111.  
  112.     z1(arr, subs, &col, k);
  113.     z2(subs, col, &mini);
  114.     z3(subs, mini);
  115.  
  116.  
  117.     return 0;
  118. }
  119.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement