Вопрос № 165430: Кто может помогите? С вот такой программой на С: Ввести с клавиатуры фразу и два слова. Заменить во введённой фразе первое слово на второе везде, где оно встречается. Желательно программу набрать в Microsoft Visual Studio!!! Заранее...
Вопрос № 165476: Prıvet! Pomogıte plız s zadachey.. Маска подсетей Рассмотрим компьютерную сеть с настроенной TCP/IP маршрутизацией. Будем рассматривать некоторую ее модификацию.
А именно в этой сети находить N подсетей. Каждая подсеть хар...
Вопрос № 165.430
Кто может помогите? С вот такой программой на С: Ввести с клавиатуры фразу и два слова. Заменить во введённой фразе первое слово на второе везде, где оно встречается.
Желательно программу набрать в Microsoft Visual Studio!!! Заранее спасибо!
Отвечает: Ilkras
Здравствуйте, Бурдейный Анатолий Петрович! Таким вот образом:
Код:
/* Ввести с клавиатуры фразу и два слова. Заменить во введённой фразе первое слово на второе везде, где оно встречается. */ #include <stdio.h> #include <stdlib.h>
printf("Input the phrase:"); gets(in_str);//ввести текст printf("Input 1st word: "); gets(word1); printf("Input 2nd word: "); gets(word2); memset(out_str, 0, 512);//инициализируем строку символами конца строки p_in_str = in_str;//инициализируем пойнтеры началами строк p_out
_str = out_str; /* Эти два пойнтера все время указывают на "необработанные" части строк */
while(p_in_str - in_str < strlen(in_str))// подстрахуемся - проверим, что не выходим за границы строки { p = strstr(p_in_str, word1);//Ищем вхождение слова в строку (возвращает пойнтер на вхождение) if(p != NULL)// если не найдено, то возвращает ноль тогда прерываем процесс { k = p - p_in_str; memcpy(p_out_str, p_in_str, k);//копируем все до найденого слова в выходную
строку p_out_str += k;// продвигаем пойнтер выходной строки memcpy(p_out_str, word2, strlen(word2));//копируем новое слово p_out_str += strlen(word2);//еще раз продвигаем пойнтер выходной строки p_in_str += k + strlen(word1);//теперь продвигаем пойнтер входной строки } else break; } /* Копируем остаток*/ strcat(out_str, p_in_str);
printf("The result is: %s
", out_str); }
Результат работы:
Код:
Input the phrase:aaa bbb ccc aaa bbb ccc aaa bbb ccc Input 1st word: ccc Input 2nd word: zzz The result is: aaa bbb zzz aaa bbb zzz aaa bbb zzz
Ответ отправил: Ilkras (статус: Студент)
Ответ отправлен: 20.04.2009, 23:40
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 247937 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 165.476
Prıvet! Pomogıte plız s zadachey..
Маска подсетей Рассмотрим компьютерную сеть с настроенной TCP/IP маршрутизацией. Будем рассматривать некоторую ее модификацию. А именно в этой сети находить N подсетей. Каждая подсеть характеризуется своей маской. Маска подсети представляет собой 4 однобайтных числа, разделенных точкой. Причем для масок выполнено следующее свойство: если представить маску в двоичном виде, то сначала она будет содержать k единиц, а потом q нулей, причем k + q = 32.
Например, 255.255.255.0 — маска подсети, а 192.168.0.1 — нет.
Поясним, как получается двоичное представление IP-адреса. Для этого числа, составляющие IP-адрес, представляются в двоичной системе счисления (при этом каждое из них дополняется ведущими нулями до длины в 8 цифр), после чего удаляются точки. Получившееся 32-битное число и есть двоичное представление IP-адреса. Например, для адреса 192.168.0.1 этот процесс выглядит так: 192.168.0.1 → 11000000.1010
1000.00000000.00000001 → 11000000101010000000000000000001. Таким образом, двоичным представлением IP-адреса 192.168.0.1 является 11000000101010000000000000000001.
Будем говорить, что два компьютера с IP1 и IP2 лежат в подсети, если IP1 / Mask = IP2 / Mask, где Mask — маска этой подсети, а / — операция побитового логического «и». IP компьютера представляет собой так же 4 однобайтных числа, разделенных точкой.
Вам даны M пар IP адресов компьютеров. Для каждой из них Вам надо определить,
в скольких подсетях из заданных они лежат.
Входные данные В первой строке входного файла INPUT.TXT записано число N — количество подсетей. В следующих N строках перечислены маски этих подсетей. В N + 2 строке находится число M (0 ≤ M ≤ 10000). В следующих M строках записаны пары IP адресов, разделенных пробелом.
Выходные данные Для каждой пары IP адресов в отдельной строке выходного файла OUTPUT.TXT выведите количество подсетей, в которых
лежат оба компьютера.
Следует сказать, что в программе используются регулярные выражения(пространство имён std::tr1) и не всякий компилятор имеет эти библиотеки(проверялась в MS VS 2008). В программе используется для проверки корректности формата введенного ip-адреса. Если
Вам это не нужно(тем более, что такие программы пишутся под системы автоматическй проверки решений и условия там задаются стандартные без ошибочных данных) то просто удалите эти места и все проверки корректности ввода. Учитывая уровень вопроса(не для начинающих) код не комментировал. Думаю разбретесь.
Ответ отправил: Micren (статус: Практикант)
Ответ отправлен: 21.04.2009, 20:05
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 247995 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.