Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Hubbitus
Статус: 10-й класс
Рейтинг: 91
∙ повысить рейтинг >>
Micren
Статус: Практикант
Рейтинг: 81
∙ повысить рейтинг >>
witek25
Статус: 3-й класс
Рейтинг: 45
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 1294
от 26.04.2009, 17:05

Администратор:Dr_Andrew

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 165430: Кто может помогите? С вот такой программой на С: Ввести с клавиатуры фразу и два слова. Заменить во введённой фразе первое слово на второе везде, где оно встречается. Желательно программу набрать в Microsoft Visual Studio!!! Заранее...


Вопрос № 165476: Prıvet! Pomogıte plız s zadachey.. Маска подсетей Рассмотрим компьютерную сеть с настроенной TCP/IP маршрутизацией. Будем рассматривать некоторую ее модификацию. А именно в этой сети находить N подсетей. Каждая подсеть хар...

Вопрос № 165.430
Кто может помогите?
С вот такой программой на С:
Ввести с клавиатуры фразу и два слова. Заменить во введённой фразе первое слово на второе везде, где оно встречается.

Желательно программу набрать в Microsoft Visual Studio!!!
Заранее спасибо!

Приложение:

Отправлен: 20.04.2009, 16:39
Вопрос задал: Бурдейный Анатолий Петрович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Ilkras
Здравствуйте, Бурдейный Анатолий Петрович!
Таким вот образом:

Код:
/*
Ввести с клавиатуры фразу и два слова.
Заменить во введённой фразе первое слово на второе
везде, где оно встречается.
*/
#include <stdio.h>
#include <stdlib.h>

void main(void)
{
char in_str[512], * p_in_str;
char out_str[512], * p_out_str;
char word1[64], word2[64];
char *p;
int k;

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 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 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 выведите количество подсетей, в которых лежат оба компьютера.

    Prımer
    input.txt:
    2
    255.255.255.255
    255.255.255.0
    3
    192.168.31.1 192.168.31.2
    192.168.31.3 192.168.31.4
    192.168.31.1 192.167.31.2
    output.txt:
    1
    1
    0

    SPASIBO!!!
    Отправлен: 21.04.2009, 10:43
    Вопрос задал: Romanov Abram Tojikovich (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 2)

    Отвечает: Micren
    Здравствуйте, Romanov Abram Tojikovich!
    Программа:
    Код:

    #include <fstream>
    #include <string>
    #include <sstream>
    #include <list>
    #include <regex> // Заголовок подключающий библиотеку регулярных выражений

    using namespace std;
    using namespace std::tr1; // Пространство имен где находятся классы регулярных выражений

    class ipadress
    {
    private:
    union
    {
    unsigned int adress32:32;
    unsigned char adress8[4];
    }adress;
    friend ifstream& operator>>(ifstream& stream,ipadress& ip);
    friend bool oneNetwork(const ipadress& ip1,const ipadress& ip2,const ipadress& mask);
    };

    int main()
    {
    ifstream in("INPUT.TXT");
    ofstream out("OUTPUT .TXT");
    unsigned int netMasksCount;
    in>>netMasksCount;
    list<ipadress> masks;
    for(unsigned int i=0;i<netMasksCount;++i)
    {
    ipadress ip;
    in>>ip;
    masks.push_back(ip);
    }
    unsigned int netAdressCount;
    in>>netAdressCount;
    for(unsigned int i=0;i<netAdressCount;++i)
    {
    ipadress ip1,ip2;
    in>>ip1>>ip2;
    unsigned int counter=0;
    for(list<ipadress>::const_iterator it=masks.begin();it!=masks.end();++it)
    {
    counter+=oneNetwork(ip1,ip2,*it);
    }
    out<<counter<<endl;
    }
    return 0;
    }

    ifstream& operator>>(ifstream& stream,ipadress& ip)
    {
    string str;
    stream>>str;
    if(!stream.fail())
    {
    // Регулярное выражение для проверки формата строки
    regex regExp("^(\d{1,3}\.){3}\d{1,3}$");
    // Проверка формата. Должен быть ddd.ddd.ddd.ddd
    if(regex_match(str,regExp))
    {
    char sa[4];
    int ia;
    bool good=true;
    unsigned __int32 adress=0;
    istringstream sstream(str);
    for(unsigned int i=0;i<4&&good;++i)
    {
    if(i)sstream.ignore(1,'.');
    sstream.get(sa,4,'.');
    ia=atoi(sa);
    if(ia>255)good=false;
    adress=(adress<<8)|ia;
    }
    if(good)ip.adress.adress32=adress;
    else stream.setstate(ios::badbit);
    }
    else stream.setstate(ios::badbit);
    }
    return stream;
    }

    bool oneNetwork(const ipadress& ip1,const ipadress& ip2,const ipadress& mask)
    {
    return (ip1.adress.adress32&mask.adress.adress32)==(ip2.adress.adress32&mask.adress.adress32);
    }

    Следует сказать, что в программе используются регулярные выражения(пространство имён std::tr1) и не всякий компилятор имеет эти библиотеки(проверялась в MS VS 2008). В программе используется для проверки корректности формата введенного ip-адреса. Если Вам это не нужно(тем более, что такие программы пишутся под системы автоматическй проверки решений и условия там задаются стандартные без ошибочных данных) то просто удалите эти места и все проверки корректности ввода. Учитывая уровень вопроса(не для начинающих) код не комментировал. Думаю разбретесь.
    Ответ отправил: Micren (статус: Практикант)
    Ответ отправлен: 21.04.2009, 20:05

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 247995 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

    Отправить сообщение в эту рассылку:


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить сообщение в рассылку, откройте это письмо в браузере.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное