daily pastebin goal
73%
SHARE
TWEET

Untitled

a guest Mar 21st, 2019 47 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <ctype.h>
  3. #include <string.h>
  4. #include <stdio.h>
  5. using namespace std;
  6.  
  7. void substrings(int n, char str[][81], char str1[][81], int *n1, int num []){
  8.     int i; char *s,*s1; //s-на текущий символ. s1- на начало подстроки
  9.     *n1=0; //число подстрок
  10.     for(i=0;i<n;i++){
  11.         s=str[i];
  12.         s1=s;
  13.         while(*s)
  14.             if (*s=='>' || *s=='<' || *s=='='){
  15.                 if (s!=s1){
  16.                      //копирование подстроки
  17.                     num [*n1]=i; //запоминаем номер исходной cтроки
  18.                     strncpy(str1[*n1],s1,s-s1); //копируем часть строки
  19.                     str1[*n1][s-s1]='\0'; //добавляем нуль-символ в конец копии
  20.                     (*n1)++; //увеличиваем число подстрок
  21.                 }
  22.                 while(*s=='>' || *s=='<' || *s=='=')
  23.                     s++;
  24.                     s1=s; //начало новой подстроки
  25.             }
  26.             else
  27.                 s++;
  28.             if (s!=s1){
  29.                  //копирование подстроки, расположенной в конце строки
  30.             num [*n1]=i;
  31.             strncpy(str1[*n1],s1,s-s1);
  32.             str1[*n1][s-s1]='\0';
  33.             (*n1)++;
  34.             }
  35.     } //закрывающаяся скобка от цикла for
  36. }
  37. int shortest_substring(char str1, int n1)
  38. {
  39.     int minlen = 81, len = 0, minleni, i;
  40.     char *s;
  41.     for (i=0; i < n1; i++)
  42.     {
  43.         s = str1[i];
  44.         for(; *s != '\0'; s++)
  45.             len++;
  46.         if (len < minlen)
  47.         {
  48.             minlen = len;
  49.             minleni = i;
  50.         }
  51.         len = 0;
  52.     }
  53.     return minleni;
  54. }
  55.  
  56. int main()
  57. {
  58.     char str[10][81], str1[30][81];
  59.     int i, i1, n=0, n1, num[30], f;
  60. //ввод строк до пустой или CTRL+Z
  61.     puts("Input strings:\n");
  62.     while (*gets(str[n]) && *str[n]&&n<10)
  63.         n++;
  64.     substrings(n,str,str1,&n1,num);
  65.     if (n1==0)
  66.         puts("No substrings");
  67.     else
  68.     {
  69.         puts("Substings:");
  70.         for(i=0; i<n1; i++)
  71.             puts(str1[i]);
  72.         i1 = shortest_substring(str1, n1);
  73.         puts("Shortest substring is:");
  74.         puts(str1[i1]);
  75.     }
  76.     return 0;
  77. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top