Прикреплённый файл «3.c»
Загрузка 1 #include <stdio.h>
2 #include <stdlib.h>
3
4 char *x=NULL; // мой массив (подлежит расширению по необходимости)
5 int size_x=0; // текущая емкость массива
6 int count_x=0; // занятая емкость массива (count <= size)
7 int step_x=2;
8
9
10 void append( char k )
11 {
12
13
14 // если в массиве не осталось пустого места
15 // (в частности, в начале, когда массив вообще нулевой длины)
16 if( size_x == 0)
17 {
18 x = malloc( 1 * sizeof(char));
19 size_x = 1;
20 }
21 if( count_x == size_x )
22 {
23 /*
24 // 8<----------8<----------------8<-------------------------------
25 new_a = malloc( (size + step) * sizeof(int) );
26 if( new_a == NULL )
27 {
28 return; // выходим и ничего не делаем.
29 // собственно говоря, ничего другого в этой функции
30 // и не поделаешь.
31 }
32
33 // переписываем заполненный фрагмент массива в новое,
34 // увеличенное место памяти.
35 for( j = 0; j < count; j ++ )
36 {
37 new_a[j] = a[j];
38 }
39 free(a);
40 a = new_a; // текущий массив будет увеличенного размера
41 // 8<----------8<----------------8<-------------------------------
42 * */
43
44 x = realloc( x, (size_x * step_x) * sizeof(char) );
45 printf( " -- произведено увеличение емкости с %d до %d элементов\n",
46 size_x, size_x*step_x);
47 size_x = size_x * step_x;
48 }
49
50 // в этой точке гарантируется, что в массиве есть свободное место, т.е.
51 // count < size, и можно выполнить очередное присваивание в a[count].
52
53 x[count_x] = k;
54 count_x ++;
55
56 }
57
58
59 int main ()
60 {
61 int i;
62 char c;
63 int palindrome = 0; // является ли текст палиндромом
64
65 // enter points
66 scanf("%c", &c );
67 while( ! (c=='.') )
68 {
69 if((c >= 'A') && (c<='Z')) // c -- заглавная буква
70 c = c - 'A' + 'a'; // сконвертировать в одноименную строчную букву
71 append(c);
72 scanf("%c", &c );
73 }
74
75 palindrome = 1;
76 /*
77 *
78 * 12345
79 * . . i = 0
80 * . . i = 1
81 * . i = 2 // можем не проверять
82 *
83 * 123456
84 * . . i = 0
85 * . . i = 1
86 * .. i = 2 // должны проверить
87 */
88 for( i = 0; i < count_x/2; i++){
89 if( x[i] != x[count_x-i-1] ) {
90 palindrome = 0;
91 break;
92 }
93 }
94
95 // print result
96 if(palindrome)
97 {
98 printf("yes\n");
99 }
100 else
101 {
102 printf("no\n");
103 }
104 return 0;
105 }
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2012-05-29 15:56:20, 0.5 KB) [[attachment:1.c]]
- [получить | показать] (2012-05-29 15:56:28, 4.9 KB) [[attachment:2.c]]
- [получить | показать] (2012-05-29 16:10:50, 3.0 KB) [[attachment:3.c]]
Вам нельзя прикреплять файлы к этой странице.