Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.08 KB | None | 0 0
  1. /* Задача: Да се напише програма, която открива дали има подниз от шаблон @..# в даден низ, където @ и # са символи, различни от нула и точка.
  2.  1. Ако @ < #, да се нанесат последователно в масив символите от @ до # включително. Например:
  3.      a..d ще стане abcd
  4.      b..h ще стане bcdefgh
  5.      f..h ще стане fgh
  6.      q..v ще стане qrstuv
  7.  
  8.  2. Ако @ > # или @ == # да не се нанасят символите в масива
  9.  3. Всички останали символи, които не отговарят на шаблона @..#, се копират в масива.
  10.  4. Отпечатва се резултатният масив.
  11.  
  12.  Задачата да се реализира по 2 начина.
  13.  
  14.  НАПРИМЕР:
  15.  Ако потребителят въвдете низа b..fg..az, вашата програма трябва да отпечата bcdefz.
  16.     b..fg..az --> bcdefz
  17.     (b..f отговаря на шаблона и 'b' < 'f', затова то става bcdef)
  18.     (z - не отговаря на шаблона, копираме я)
  19.     ('b' < 'f' - кодът на символа b е по-малък от кода на символа f - кодовете ги има в ASCII таблицата => 98 < 102)
  20.  
  21. Ако потребителят въвдете низа p..bz, вашата програма трябва да отпечата z.
  22.     p..bz --> z
  23.     (p..b отговаря на шаблона, но 'p'> 'b', затова го игнорираме)
  24.     (z - не отговаря на шаблона, копираме я)
  25.     ('p' > 'b' - кодът на символа p е по-голям от кода на символа b - кодовете ги има в ASCII таблицата => 112 > 98)
  26.  
  27. Ако потребителят въвдете низа a..gsabgz, вашата програма трябва да отпечата abcdefgsabgz.
  28.     a..gsabgz --> abcdefgsabgz
  29.     (a..g отговаря на шаблона, 'a' < 'g' и затова става abcdefg)
  30.     ('a' < 'g' - кодът на символа a е по-малък от кода на символа g - кодовете ги има в ASCII таблицата => 97 < 103)
  31.     (s, а, b, g, z са символи, които не отговарят на шаблона, копираме ги)
  32.  
  33. */
  34. // 1 начин: чрез индексиране на масиви
  35. #include <stdio.h>
  36. #include <conio.h>
  37. #include <string.h>
  38.  
  39. int main()
  40. {
  41.     char input[100];
  42.     char result[100];
  43.     int i, j;
  44.  
  45.     printf("Vuvdete string: ");
  46.     gets_s(input, 100);
  47.  
  48.     if (strlen(input) > 3)
  49.     {
  50.         for (i = 0, j = 0; input[i]; )
  51.         {
  52.             if ( input[i] != '.' &&
  53.                 input[i + 1] == '.' &&
  54.                 input[i + 2] == '.' &&
  55.                 input[i + 3] != '.')
  56.             {
  57.                 for (; input[i] <= input[i + 3]; j++)
  58.                 {
  59.                     result[j] = input[i];
  60.                     input[i]++;
  61.                 }
  62.  
  63.                 i += 4;
  64.  
  65.             }
  66.  
  67.             else
  68.             {
  69.                 result[j] = input[i];
  70.                 i++;
  71.                 j++;
  72.             }
  73.         }
  74.     }
  75.     else
  76.     {
  77.         printf("Resultat: %s", input);
  78.         _getche();
  79.         return 0;
  80.     }
  81.    
  82.     result[j] = 0;
  83.     printf("Rezultat: %s", result);
  84.  
  85.     _getche();
  86.     return 0;
  87. }
  88.  
  89. //2 начин: чрез указатели
  90. #include <stdio.h>
  91. #include <conio.h>
  92. #include <string.h>
  93.  
  94. int main()
  95. {
  96.     char input[100];
  97.     char result[100];
  98.     char *pt_input, *pt_result;
  99.  
  100.     printf("Vuvdete string: ");
  101.     gets_s(input, 100);
  102.  
  103.     if (strlen(input) > 3)
  104.     {
  105.         for (pt_input = input, pt_result = result; *pt_input; )
  106.         {
  107.             if ( *pt_input != '.' &&
  108.                 *(pt_input+1) == '.' &&
  109.                 *(pt_input+2) == '.' &&
  110.                 *(pt_input+3) != '.')
  111.             {
  112.                 for (; *pt_input <= *(pt_input+3); pt_result++)
  113.                 {
  114.                     *pt_result = *pt_input;
  115.                     (*pt_input)++;
  116.                 }
  117.  
  118.                 pt_input += 4;
  119.  
  120.             }
  121.  
  122.             else
  123.             {
  124.                 *pt_result = *pt_input;
  125.                 pt_input++;
  126.                 pt_result++;
  127.             }
  128.         }
  129.     }
  130.     else
  131.     {
  132.         printf("Resultat: %s", input);
  133.         _getche();
  134.         return 0;
  135.     }
  136.    
  137.     *pt_result = 0;
  138.     printf("Rezultat: %s", result);
  139.  
  140.     _getche();
  141.     return 0;
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement