Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Задача: Да се напише програма, която открива дали има подниз от шаблон @..# в даден низ, където @ и # са символи, различни от нула и точка.
- 1. Ако @ < #, да се нанесат последователно в масив символите от @ до # включително. Например:
- a..d ще стане abcd
- b..h ще стане bcdefgh
- f..h ще стане fgh
- q..v ще стане qrstuv
- 2. Ако @ > # или @ == # да не се нанасят символите в масива
- 3. Всички останали символи, които не отговарят на шаблона @..#, се копират в масива.
- 4. Отпечатва се резултатният масив.
- Задачата да се реализира по 2 начина.
- НАПРИМЕР:
- Ако потребителят въвдете низа b..fg..az, вашата програма трябва да отпечата bcdefz.
- b..fg..az --> bcdefz
- (b..f отговаря на шаблона и 'b' < 'f', затова то става bcdef)
- (z - не отговаря на шаблона, копираме я)
- ('b' < 'f' - кодът на символа b е по-малък от кода на символа f - кодовете ги има в ASCII таблицата => 98 < 102)
- Ако потребителят въвдете низа p..bz, вашата програма трябва да отпечата z.
- p..bz --> z
- (p..b отговаря на шаблона, но 'p'> 'b', затова го игнорираме)
- (z - не отговаря на шаблона, копираме я)
- ('p' > 'b' - кодът на символа p е по-голям от кода на символа b - кодовете ги има в ASCII таблицата => 112 > 98)
- Ако потребителят въвдете низа a..gsabgz, вашата програма трябва да отпечата abcdefgsabgz.
- a..gsabgz --> abcdefgsabgz
- (a..g отговаря на шаблона, 'a' < 'g' и затова става abcdefg)
- ('a' < 'g' - кодът на символа a е по-малък от кода на символа g - кодовете ги има в ASCII таблицата => 97 < 103)
- (s, а, b, g, z са символи, които не отговарят на шаблона, копираме ги)
- */
- // 1 начин: чрез индексиране на масиви
- #include <stdio.h>
- #include <conio.h>
- #include <string.h>
- int main()
- {
- char input[100];
- char result[100];
- int i, j;
- printf("Vuvdete string: ");
- gets_s(input, 100);
- if (strlen(input) > 3)
- {
- for (i = 0, j = 0; input[i]; )
- {
- if ( input[i] != '.' &&
- input[i + 1] == '.' &&
- input[i + 2] == '.' &&
- input[i + 3] != '.')
- {
- for (; input[i] <= input[i + 3]; j++)
- {
- result[j] = input[i];
- input[i]++;
- }
- i += 4;
- }
- else
- {
- result[j] = input[i];
- i++;
- j++;
- }
- }
- }
- else
- {
- printf("Resultat: %s", input);
- _getche();
- return 0;
- }
- result[j] = 0;
- printf("Rezultat: %s", result);
- _getche();
- return 0;
- }
- //2 начин: чрез указатели
- #include <stdio.h>
- #include <conio.h>
- #include <string.h>
- int main()
- {
- char input[100];
- char result[100];
- char *pt_input, *pt_result;
- printf("Vuvdete string: ");
- gets_s(input, 100);
- if (strlen(input) > 3)
- {
- for (pt_input = input, pt_result = result; *pt_input; )
- {
- if ( *pt_input != '.' &&
- *(pt_input+1) == '.' &&
- *(pt_input+2) == '.' &&
- *(pt_input+3) != '.')
- {
- for (; *pt_input <= *(pt_input+3); pt_result++)
- {
- *pt_result = *pt_input;
- (*pt_input)++;
- }
- pt_input += 4;
- }
- else
- {
- *pt_result = *pt_input;
- pt_input++;
- pt_result++;
- }
- }
- }
- else
- {
- printf("Resultat: %s", input);
- _getche();
- return 0;
- }
- *pt_result = 0;
- printf("Rezultat: %s", result);
- _getche();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement