1- // Ââåñòè ñòðîêó. Çàìåíèòü çíàêè ïðåïèíàíèÿ íà ñîêðàùåíèÿ
2- // ('.' - ò÷ê, ',' - çïò, '?' - âïð, ':' - äò÷)
3-
4- // If cyrillic symbols are broken:
5- // ctrl + shift + P -> Change file rncoding -> Reopen with encoding -> Windows 1251
6-
7- #define USE_RUS 0 // 1 - yes
1+ // Ввести строку. Заменить знаки препинания на сокращения
2+ // ('.' - тчк, ',' - зпт, '?' - впр, ':' - дтч)
83
94#include <stdio.h>
105#include <stdlib.h>
11- #if USE_RUS == 1
12- #include <locale.h>
13- #endif
6+ #include "reducts.c"
147
158#define length (x ) (sizeof(x) / sizeof((x)[0]))
16- int len = 0 ;
179
18- char * readstr ()
19- {
10+ int len = 0 ;
11+ char * readstr () {
2012 len = 0 ;
21- int capacity = 1 ; // åìêîñòü äèíàìè÷åñêîé ñòðîêè
22- char * s = (char * )malloc (sizeof (char )); // äèíàìè÷åñêàÿ ïóñòàÿ ñòðîêà
13+ int capacity = 1 ;
14+ char * s = (char * )malloc (sizeof (char ));
2315 char c = getchar ();
24- while (c != '\n' )
25- {
16+ while (c != '\n' ) {
2617 s [(len )++ ] = c ;
27- if (len >= capacity )
28- { // åñëè ðåàëüíûé ðàçìåð áîëüøå ðàçìåðà êîíòåéíåðà, òî óâåëè÷èì åãî ðàçìåð
29- capacity *= 2 ; // óâåëè÷èâàåì åìêîñòü â äâà ðàçà
30- s = (char * )realloc (s , capacity * sizeof (char )); // ñîçäà¸ì íîâóþ ñòðîêó ñ óâåëè÷åííîé åìêîñòüþ
18+ if (len >= capacity ) {
19+ capacity *= 2 ;
20+ s = (char * )realloc (s , capacity * sizeof (char ));
3121 }
3222 c = getchar ();
3323 }
3424 s [len ] = '\0' ;
35- return s ; // âîçâðàùàåì óêàçàòåëü
25+ return s ;
3626}
3727
38- void print_char (char ch )
39- {
40- switch (ch )
41- {
42- case '.' :
43- printf (USE_RUS == 1 ? "Ò×Ê" : "DOT" );
44- break ;
45- case ',' :
46- printf (USE_RUS == 1 ? "ÇÏÒ" : "COMMA" );
47- break ;
48- case '!' :
49- printf (USE_RUS == 1 ? "ÂÑÊË" : "EXCLM" );
50- break ;
51- case '?' :
52- printf (USE_RUS == 1 ? "ÂÏÐÑ" : "QSTN" );
53- break ;
54- case ':' :
55- printf (USE_RUS == 1 ? "ÄÂÒ×" : "COLON" );
56- break ;
57- default :
58- printf ("%c" , ch );
59- break ;
28+ void main () {
29+ printf ("Input string:\n" );
30+ char * str = readstr ();
31+
32+ printf ("\nString after replace:\n" );
33+ for (int i = 0 ; i < len ; i ++ ) {
34+ int flag = 1 ;
35+ for (int c = 0 ; c < W_COUNT ; c ++ ) {
36+ if (str [i ] == punct [c ]) {
37+ printf ("%s" , words [c ]);
38+ flag = 0 ;
39+ }
40+ }
41+ if (flag ) printf ("%c" , str [i ]);
6042 }
61- }
62-
63- void main ()
64- {
65- #if USE_RUS == 1
66- setlocale (LC_ALL , "Russian" );
67- system ("chcp 1251" );
68- #endif
69-
70- printf (USE_RUS == 1 ? "Ââåäèòå ñòðîêó:\n" : "Input string:\n" );
71- char * str = readstr (); // ñ÷èòûâàåì äèíàìè÷åñêóþ ñòðîêó
72- printf (USE_RUS == 1 ? "\nÑòðîêà ïîñëå çàìåíû:\n" : "\nString after replace:\n" );
73- for (int i = 0 ; i < len ; i ++ )
74- print_char (str [i ]);
7543 free (str );
7644}
0 commit comments