igortychinin
?>

На изученном вами языке программирования составьте программу для замены в данном тексте всюду: части детектив на часть роман например, текст детектив без погони - это не детектив должен стать таким: роман без погони - это не роман, а из текста не могу заснуть без детектива должен получиться текст не могу заснуть без романа.

Информатика

Ответы

Lorik-lorik29
// PascalABC.NET 3.2, сборка 1374 от 10.01.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var s:=ReadlnString('>');
  s:=s.Replace('ДЕТЕКТИВ','РОМАН'); s.Println
end.

Примеры
> ДЕТЕКТИВ БЕЗ ПОГОНИ - ЭТО НЕ ДЕТЕКТИВ
РОМАН БЕЗ ПОГОНИ - ЭТО НЕ РОМАН

> НЕ МОГУ ЗАСНУТЬ БЕЗ ДЕТЕКТИВА
НЕ МОГУ ЗАСНУТЬ БЕЗ РОМАНА
osnovnoisklad3551
Вот исходник. заменишь строку и искомые слова.

/*
*
*   Программа решает задачу:  Дана строка символов. Группы символов,
*   разделенные пробелами (одним или несколькими) и не содержащие пробелы
*   внутри себя, будем называть словами.
*   Заменить в строке слова 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;
}
//
office426
Сначала немного теории.
--> - импликация, следование
Таблица истинности импликации

x1 x2 r
0   0  1
0  1   1
1  0   0
1  1   1
Общее правило: если x1<=x2, тогда правда, в остальных случаях ложь.
^ - Конъюнкция, логическое И
Таблица истинности конъюнкции
x1 x2 r
0   0  0
0   1 0
1   0  0
1   1  1
Общее правило: если x1 или x2 = 0, тогда ложь. x1=x2=1, только тогда правда.

(первая буква имени согласная ---> вторая буква имени согласная)^ четвертая буква имени согласная 
1) Лариса 
2) Сергей 
3) Геннадий 
4)Елена

Теперь по вариантам:
1) Лариса 
Получается (1-->0)^0=0^0=0, не подходит
2) Сергей 
(1-->0)^1=0^1=0, не подходит
3) Геннадий
(1-->0)^1=0^1=0, не подходит
4) Елена
(0-->1)^1=1^1=1, подходит
ответ: 4) Елена

Yurevna_Kharkchinov1302

70, 35, 43, 132, 121, 11, 60, 64, 24, 31

Объяснение:

1) Изначально s = 0, затем на каждой из 12 – 6 + 1 = 7 итераций к ней прибавляется 10, итого получится 70

2) Аналогично, s = 0 + 7 * (8 – 3) = 35

3) Итерация с i = 1: k = 2 * 4 + 1 = 9. Итерация с i = 2: k = 2 * 9 + 2 = 20. Итерация с i = 3: k = 2 * 20 + 3 = 43.

4) s = 0 + 12 * 11 = 132  

5) s = 0 + 11 * (12 – 1) = 121

6) u = 26 – 1 – 2 – 3 – 4 – 5 = 11

7) s = 4 + 5 + … + 11 = 60

8) s = 1 * 2 * 2 * … * 2 (8 – 3 + 1 раз) = 64

9) y = 0 + 4 * 1 + 4 * 2 + 4 * 3 = 24

10) s = 3 + 2 * 2 + 2 * 3 + 2 * 4 + 2 * 5 = 31

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

На изученном вами языке программирования составьте программу для замены в данном тексте всюду: части детектив на часть роман например, текст детектив без погони - это не детектив должен стать таким: роман без погони - это не роман, а из текста не могу заснуть без детектива должен получиться текст не могу заснуть без романа.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Strelkov567
Shago
buslavgroupe
ViktorovnaLarin
Андрей Анна22
aivanova
vera-sherepa231
naratnikova
ehrik-ch
Valentina
nusupova
Пимкина Сергеевич
tatiana2676
Eduard Melikyan
achernakov