/* * * Программа решает задачу: Дана строка символов. Группы символов, * разделенные пробелами (одним или несколькими) и не содержащие пробелы * внутри себя, будем называть словами. * Заменить в строке слова S на слова W ( S, W - заданы). * * */
1.) программаға сәйкес операцияларды орындауға арналған компьютердің негізгі құрылғысы, қызметтік бөлігі. Көптеген жартылай өткізгішті элементтерден тұратын және компьютерде барлық есептеулер мен ақпарат өндеу жұмыстарын орындайтын электрондық микросхема. Қазіргі компьютерлерде бір немесе бірнеше процессорлар жұмыс істейді.
2.Процессор деген компьютердегі барлық қызметті атқарып тұрған адамның миы сияқты құрылғы, арифметикалық-логикалық қызметтер атқарады. процессорды CPU американдық компаниялар Intel, AMD жасап шығарады.
ОЗУ деген қысқа мерзімге мәлімет сақтауға арналған. компьютерде жасалып жатұан операциялардың бәрң осы озуда сақталады. компьютерді өшіргенде бәрі кетіп қалады.
Материнская плата деген компаның орталық астанасы. Процессор, озу, слоттар, жесткий диск бәрң соған қосып жалғанады.
Видеокарта деген графикалық ақпараттардың қалыпты жұмыс істеуіне арналған. Видео және ойындардың графикасына жауап беретін құрылғы осы.
/*
*
* Программа решает задачу: Дана строка символов. Группы символов,
* разделенные пробелами (одним или несколькими) и не содержащие пробелы
* внутри себя, будем называть словами.
* Заменить в строке слова S на слова W ( S, W - заданы).
*
*
*/
//
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#define bool int
#define true 1
#define false 0
#define MAX(x, y) (((x) > (y)) ? (x) : (y))
#define SPACE ' '
// Подпрограмма определяет, является ли группа символов словом.
bool isWordc (const char*const str, const char*const begin, int len);
//
#pragma argsused
int main(int argc, char* argv[])
{
const char*const def_str = "Ехал грека через реку , видит грека – в реке рак. Сунул грека руку в реку, рак за руку греку – цап! рекурсия рукавицы";
const char* S[] = { "грека", "реку", "руку", "рак", "ААА" };
const char* W[sizeof(S) / sizeof(char*)] = { "ААА", "поле", "ногу", "мышь", "Грека" };
const int countS = sizeof(S) / sizeof(char*);
int i, offset, delta, isWord;
char* pos;
char* str = (char*)malloc(strlen(def_str)+1);
if (!str) return 1;
memcpy(str, def_str, strlen(def_str)+1);
for ( i = 0; i < countS; ++i) {
pos = str;
while ((pos = strstr(pos, S[i])) != NULL) {
// Группы символов, разделенные пробелами, будем называть словами.
if (isWordc(str,pos,strlen(S[i])) == true) {
if (strlen(S[i]) != strlen(W[i])) {
// При разной длине - компенсируем разницу, т.е при замене рак на раковина не должны портиться другие данные.
delta = strlen(S[i]) - strlen(W[i]);
if (delta < 0) {
offset = pos - str;
str = (char*)realloc(str, strlen(str) + 1 - delta );
if (!str) return 1;
str[strlen(str) - delta] = '\0';
pos = str + offset;
memmove(pos - delta, pos, strlen(pos));
}
memset(pos, SPACE, MAX(strlen(W[i]), strlen(S[i]))); // Замена "грека" на "АА" = "АА___"
}
strncpy(pos, W[i], strlen(W[i]));
}
pos += strlen(S[i]);
}
}
free(str);
return 0;
}
//
//
// Подпрограмма определяет, является ли группа символов словом.
bool isWordc(const char*const str, const char*const begin, int len) {
bool lhs,rhs; // ( рак и раковина разные слова.)
// Приведение к (unsigned char) необходимо т.к. функции isspace и ispunct делают проверку (A>-1 && A<=255).
lhs = (begin == str); // Исключаем выход за границы.
lhs = lhs || (isspace((unsigned char) *(begin - 1)) || ispunct((unsigned char) *(begin - 1)));
rhs = isspace((unsigned char) *(begin + len))|| ispunct((unsigned char) *(begin + len));
return lhs && rhs;
}
//
1.) программаға сәйкес операцияларды орындауға арналған компьютердің негізгі құрылғысы, қызметтік бөлігі. Көптеген жартылай өткізгішті элементтерден тұратын және компьютерде барлық есептеулер мен ақпарат өндеу жұмыстарын орындайтын электрондық микросхема. Қазіргі компьютерлерде бір немесе бірнеше процессорлар жұмыс істейді.
2.Процессор деген компьютердегі барлық қызметті атқарып тұрған адамның миы сияқты құрылғы, арифметикалық-логикалық қызметтер атқарады. процессорды CPU американдық компаниялар Intel, AMD жасап шығарады.
ОЗУ деген қысқа мерзімге мәлімет сақтауға арналған. компьютерде жасалып жатұан операциялардың бәрң осы озуда сақталады. компьютерді өшіргенде бәрі кетіп қалады.
Материнская плата деген компаның орталық астанасы. Процессор, озу, слоттар, жесткий диск бәрң соған қосып жалғанады.
Видеокарта деген графикалық ақпараттардың қалыпты жұмыс істеуіне арналған. Видео және ойындардың графикасына жауап беретін құрылғы осы.
Объяснение: