Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <ctype.h>
- #include <string.h>
- #include <stdio.h>
- using namespace std;
- void substrings(int n, char str[][81], char str1[][81], int *n1, int num []){
- int i; char *s,*s1; //s-на текущий символ. s1- на начало подстроки
- *n1=0; //число подстрок
- for(i=0;i<n;i++){
- s=str[i];
- s1=s;
- while(*s)
- if (*s=='>' || *s=='<' || *s=='='){
- if (s!=s1){
- //копирование подстроки
- num [*n1]=i; //запоминаем номер исходной cтроки
- strncpy(str1[*n1],s1,s-s1); //копируем часть строки
- str1[*n1][s-s1]='\0'; //добавляем нуль-символ в конец копии
- (*n1)++; //увеличиваем число подстрок
- }
- while(*s=='>' || *s=='<' || *s=='=')
- s++;
- s1=s; //начало новой подстроки
- }
- else
- s++;
- if (s!=s1){
- //копирование подстроки, расположенной в конце строки
- num [*n1]=i;
- strncpy(str1[*n1],s1,s-s1);
- str1[*n1][s-s1]='\0';
- (*n1)++;
- }
- } //закрывающаяся скобка от цикла for
- }
- int shortest_substring(char str1, int n1)
- {
- int minlen = 81, len = 0, minleni, i;
- char *s;
- for (i=0; i < n1; i++)
- {
- s = str1[i];
- for(; *s != '\0'; s++)
- len++;
- if (len < minlen)
- {
- minlen = len;
- minleni = i;
- }
- len = 0;
- }
- return minleni;
- }
- int main()
- {
- char str[10][81], str1[30][81];
- int i, i1, n=0, n1, num[30], f;
- //ввод строк до пустой или CTRL+Z
- puts("Input strings:\n");
- while (*gets(str[n]) && *str[n]&&n<10)
- n++;
- substrings(n,str,str1,&n1,num);
- if (n1==0)
- puts("No substrings");
- else
- {
- puts("Substings:");
- for(i=0; i<n1; i++)
- puts(str1[i]);
- i1 = shortest_substring(str1, n1);
- puts("Shortest substring is:");
- puts(str1[i1]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement