Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбиенеие на файлы 
V
    Опции темы
mossad
Дата 14.1.2009, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 22.12.2008

Репутация: нет
Всего: нет



Здравствуйте, многоуважаемые Прогаммисты. У меня есть код, но это однофайловая реализация. Как должна выглядеть многофайловая реализация??

Код
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main()
{
    char ch, answer, *p;
    char str[5][67] = {'\0'},  search_str[67] = {'\0'};
    unsigned int str_n = 0, symbol_n = 0;
    unsigned int i = 0, k = 0, n = 0;
    textcolor(7);
    //--------------------------------------------------
    cprintf("%s\n\r", "Input text:");
    while(str_n < 5)
    {
        ch = getchar();
        if(symbol_n == 0 && ch == ';') break;
        str[str_n][symbol_n++] = ch;
        if(ch == '\n'){ ++str_n; symbol_n = 0; }
        if(symbol_n > 66) { cprintf("error: too many characters in string."); exit(1); }
    }
    //-------------------------------------------
    symbol_n = 0;
    fflush(stdin);
    cprintf("%s\n\r", "Input substring to search:");
    for(;;)
    {
        ch = getchar();
        if(ch == '\n') break;
        search_str[symbol_n++] = ch;
        if(symbol_n > 66) { printf("error: too many characters in string.\n"); exit(1); }
    }
    if(!strlen(search_str)){ printf("error: substring to search is empty!"); exit(1);};

    //--------------------------------------------------------------
    cprintf("\n========================================================\n");
    for(n = 0; n < str_n; n++)
    {
        textcolor(10);
        cprintf("\r\n%s%d: %s", "string ", n+1, str[n]);
        p = str[n];
        cprintf("\r");
        while(*p)
        {
            if((p = strstr(p, search_str)) != NULL)
            {
                for(i = 0; i < strlen(str[n]); i++)
                {
                    if(&(str[n][i]) == p)
                    {
                    textcolor(14);
                    for(k = 0; k < strlen(search_str); k++) cprintf("%c", str[n][i++]);
                    --i;
                    }
                    else
                    {
                       textcolor(7);
                       cprintf("%c", str[n][i]);
                    }
                }
                label:
                    cprintf("\rContinue search in this string[y/n]: ");
                    fflush(stdin);
                    answer = tolower(getchar());
                    if(answer == 'y') p += (strlen(search_str));
                    else if(answer == 'n') break;
                else goto label;

             }
             else
             {
                textcolor(7);
                cprintf("*****Substring not found.");
                break;
             }
        }
    }
    return 0;
}



Заранее спасибо.
PM MAIL   Вверх
bsa
Дата 14.1.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



mossad, если речь идет о проекте, который состоит из нескольких файлов, то для начала тебе нужно разделить функцию main() на несколько. Затем тебе необходимо часть функций переменсти в другой файл с исходниками и сделать для него h-файл, который будет содержать декларации функций и переменных, определенных в соответствующем ему файле реализации.
PM   Вверх
mossad
Дата 14.1.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 22.12.2008

Репутация: нет
Всего: нет



Спасиб за ответ, только я не знаю где должны быть границы каждого файла, т.е где начинается каждый новый и куда надо включать #include "****.h". если можно, разбейте границы и что нужно дописать.
PM MAIL   Вверх
bsa
Дата 14.1.2009, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Принято, чтобы все инклюды шли в начале файла.
Что помещать в каждый файл ты должен определить сам. Обычно, туда помещают законченный по смыслу набор функций. Т.е. сначала ты должен свою программу разбить на функции, а затем распределить их по отдельным файлам.
PM   Вверх
mossad
Дата 15.1.2009, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 22.12.2008

Репутация: нет
Всего: нет



такая беда с этой прогой: несмотря на то, какие параметры я ввожу ( максимальную длину строки к примеру 10 ) она все равно принимает где-то 70 и дальше не берет. в чем причина???
PM MAIL   Вверх
taiven
Дата 15.1.2009, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 30.6.2008

Репутация: 2
Всего: 9



в каком смысле дальше не берёт? В каждой строке ты можешь ввести максимум 67 символов. Если ты ввёл больше 67 символов, то программа выводит сообщение об ошибке и завершается. Если ты хочешь ввести 10 символов, например в первой строке, то вводишь эти 10 символов и нажимаешь клавишу <ENTER>, после чего вводишь вторую строку и т.д., пока не будет введено пять строк или же не будет введена строка начинающаяся с символа ';'. Что из перечисленного у тебя не получается?
PM   Вверх
mossad
Дата 15.1.2009, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 22.12.2008

Репутация: нет
Всего: нет



проблема вот в чем: вот реакция нынешней программы (которая сверху) зажимаем любую   клавишу  курсор переезжает первую строку целиком едет дальше по второй и останавливается где-то по середине и не идет дальше. причем если мы в тексте программы меняем 67 на 10 он по-прежнему едет через первую строку , потом до середины второй. т.е проблема в том что у нас не выходит ограниченный массив. Но ладно с ним с ограниченностью, главная беда в том что у меня послезавтра экзамен по инфе, на котором мне нужно представить не только эту прогу но и отчет к ней. Я понимаю что за полсеместра должен был научится хоть чему-нибудь, но этого не случилось, либо из-за смены обстановки ( как ни крути впервые за свою жизнь уехал в Москву, да еще на несколько месяцев ), либо из-за того что плохо адаптируюсь, но скорее всего из-за лени... Понимаю что должен был взяться за голову но не было ни опыта ни усердия. У нас в школе конечно была информатика, но очень веселая... Наш учитель читал нам про какие-то языки,  мы  даже проходили word)) но это не осело в моеем мозгу, хотя бы потому что мы с другом все время сидели в инете( да и к инфе никто серьезно не относился. Я бросал все на физику, алгебру и геометрию. Сдал ЕГЭ каким-то чудом на 84 математику, 77 физику, 94 русский smile 
потом тоже каким-то чудом поступил в МИФИ с общагой. Долгое время ходил с круглыми глазами, не веря что я - студент)). После, ближе к первому сентября переехал в общагу. У нас замечательное общежитие: квартирного типа, своя кухня, свой санузел) потихоньку стал привыкать, с парнями познакомился. Думал буду в уголке сидеть и плеер слушать, так нет, все разговорились, в первый день даже в карты играли)). Потом первая недяля самостоятельного быта, это круто чувствовать что ты сам решаешь что тебе есть, когда постираться, что делать, с кем говорить и куда идти. СВОБОДА)). Первая неделя заставила всех офигеть, никто ничего не понимает, какие-то лабы ( никогда не забуду первую лабу ). Но по-тихоньку все  освоились, здоровенные формулы больше никого не пугали)) Все по-тихоньку стали забивать, так прожили считай весь семестр. В институте меня не переставало преследовать странное ощущение того что я ничего не знаю. В школе было ясно что я делаю, что я знаю, что я выучил, а что - нет. В инсте какое-то -аморфное состояние: толи ты знаешь предмет, толи нет. Вроде как-то наработал на зачет  - живешь дальше. И вот я дошел до зачетов. началась зачетка а всем по фигу. вроде кто начал смотреть сериалы ( ну там lost, dr.House и.т.д), кто все также гамает, кто начал бегать ( я пытаюсь поддерживать форму, но так тяжело просыпаться в 6 утра). Зато я так и не спился и не скурился, хотя эт оч напряжно в компании быть трезвым((( но у мя вродь непереносимость алкоголя. И как будто во сне я сдавал зачеты.  "Вродь этот поставили автомат - о. круто с чего бы это??")))получил все допущен до экзаменов, но до меня стало доходить что теперь будет еще хуже ведб экзамен эт те не зачет)). Грустновато встретил НГ. ведь раньше это был классный праздник с подарками и хлопушками, запах ели и мандаринов мммм))). Но весь праздник я был хмур, а все у мя спрашивали как в "Темном рыцаре " "а че ты такой грустный".
А для меня теперь НГ значил только приближение сессии((. И вот 8 января пошел на физику. до нее вроде три дня плотно учил, но ощущения полного знания не было. Но билет попался нормальный (т.е без релятивистской фигни) пошел на ответ, и мне попался экзаменатор, который за правильный билет и пару дополнительных вопросов поставил пять. Тут я охренел. Люди у меня. человека который в физике ни фига не рубит отл. Занесло голову а то что через 4 дня матан, мне и думать не хотелось. Когда до экзамена осталось два дня  я спохватился, и понял, что попал. Матан был гораздо хуже.Вообще не ясно.  Опять пару дней плотных ботаний, и по-прежнему ноль в голове. Когда вытянул, опять повезло ничего сложного. когда отвечал пык-мык вродь тут првильно, тут не совсем, короче препод меня гонял по всему курсу, но я думал что иду только на тройку. А он говорит: " Ну теперь сложный вопрос на пятерку". И я в который раз охренел. Вцепился в эту задачу и сидел над ней час, вроде что-то получалось, но скорее всего я просто надоел преподу и он, глядя на 5 по физике. поставил столько же. У мя ноги дрожали когда вышел)). Все вышесказанное иначе как везение я бы не назвал. Но теперь с везухой не прокатит((. Инфа эт еще хуже. С преподами нам повезло, кроме одного. Это просто машина. Он очень сильно придирается к оформлению, вплоть до лишнего пробела в комментариях и размера шрифта. И ему я должен сдавать индивидуальную прогу, которой нет а так же идеальный отчет((((. Понимаю что тут конючу уже месяц сначала в одном разделе потом в другом, но так не хочется вылетать из инста. а у самого вообще не выходит. Некоторые могут полчаса посидеть над учебником и все понять, я скок дней не вбухал все без толку.Понимаю что наглею но прога оч нужна((представленная выше работает так как надо но мне нужна многофункциональная реализация, а сверху однофункциональная(((. Помогите пожалуйста, ребят вам полчаса работы, а мне вылет из инста(((

Заранее спасибо.

PM MAIL   Вверх
pan2004
Дата 15.1.2009, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 2
Всего: 9



Цитата(mossad @  15.1.2009,  21:11 Найти цитируемый пост)
проблема вот в чем: вот реакция нынешней программы (которая сверху) зажимаем любую   клавишу  курсор переезжает первую строку целиком едет дальше по второй и останавливается где-то по середине и не идет дальше.

У меня проблемы такой нет, на WinXP SP3 компиляторе minGW все пашет)
Только goto убери подальше, оно по глазам бьет)

ЗЫ Интересно читать, аффтар, писши исчо smile

Добавлено через 3 минуты и 58 секунд
да, пришлось убрать textcolor() вызовы на фиг и заменить cprintf на printf - minGW такого не понимает, но это фигня)


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
vinter
Дата 15.1.2009, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 8
Всего: 56



mossad, ты расскажи чем закончится экзамен smile Программа у тя правильная должна быть, по крайней мере описанная тобой ошибка проявлятся не должна


--------------------
Мой блог
PM MAIL WWW   Вверх
taiven
Дата 15.1.2009, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 30.6.2008

Репутация: 2
Всего: 9



компилятор, какой используешь? Borland 3.1?
PM   Вверх
mossad
Дата 15.1.2009, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 22.12.2008

Репутация: нет
Всего: нет



тот компилятор к которому Ты написал в прошлый раз( с цветом)
Спасиб что помогаешь.

PM MAIL   Вверх
mossad
Дата 16.1.2009, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 22.12.2008

Репутация: нет
Всего: нет



Ребят ужасно важная для меня прога если сегодня не будет - мне конец. Помогите плз.
PM MAIL   Вверх
taiven
Дата 16.1.2009, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 30.6.2008

Репутация: 2
Всего: 9



вот разбил на файлы:
search.h
Код

#ifndef MY_SEARCH_H
#define MY_SEARCH_H

void input_text(char (*text)[67], unsigned int *str_num);
void input_search_string(char *search_string);
void do_search(char (*text)[67], char *search_string, unsigned int str_num);

#endif

search.cpp
Код

#include "my_search.h"

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

void input_text(char (*text)[67], unsigned int *str_num)
{
    char ch;
    unsigned int symbol_n = 0;

    textcolor(7);
    cprintf("%s\n\r", "Input text:");

    while(*str_num < 5)
    {
        ch = getchar();
        if(symbol_n == 0 && ch == ';') break;
        text[*str_num][symbol_n++] = ch;
        if(ch == '\n'){ ++(*str_num); symbol_n = 0; }
        if(symbol_n > 66) { cprintf("error: too many characters in string."); exit(1); }

    }
    fflush(stdin);
}

void input_search_string(char *search_string)
{
    char ch;
    unsigned int symbol_n = 0;

    textcolor(7);
    cprintf("%s\n\r", "Input substring to search:");

    for(;;)
    {
        ch = getchar();
        if(ch == '\n') break;
        search_string[symbol_n++] = ch;
        if(symbol_n > 66) { printf("error: too many characters in string.\n"); exit(1); }
    }

    if(!strlen(search_string)){ printf("error: substring to search is empty!"); exit(1);};
}

void do_search(char (*text)[67], char *search_string, unsigned int str_num)
{
    unsigned int i = 0, k = 0, n = 0;
    char ch, answer, *p;

    if(!strlen(search_string)){ printf("error: substring to search is empty!"); exit(1);}
    for(i = 0; i < str_num; i++)
    {
        if(!strlen(text[i]))
        {
            printf("error: text for search is empty!");
            exit(1);
        }
    }

    cprintf("\n========================================================\n");
    for(n = 0; n < str_num; n++)
    {
        textcolor(10);
        cprintf("\r\n%s%d: %s", "string ", n+1, text[n]);
        p = text[n];
        cprintf("\r");
        while(*p)
        {
            if((p = strstr(p, search_string)) != NULL)
            {
                for(i = 0; i < strlen(text[n]); i++)
                {
                    if(&(text[n][i]) == p)
                    {
                    textcolor(14);
                    for(k = 0; k < strlen(search_string); k++) cprintf("%c", text[n][i++]);
                    --i;
                    }
                    else
                    {
                       textcolor(7);
                       cprintf("%c", text[n][i]);
                    }
                }
                label:
                    cprintf("\rContinue search in this string[y/n]: ");
                    fflush(stdin);
                    answer = tolower(getchar());
                    if(answer == 'y') p += (strlen(search_string));
                    else if(answer == 'n') break;
                else goto label;
             }
             else
             {
                textcolor(7);
                cprintf("*****Substring not found.");
                break;
             }
        }
    }
}

main.cpp
Код

#include "my_search.h"

int main()
{
    char str[5][67] = {'\0'};      //основной текст
    char search_str[67] = {'\0'};   //искомая строка
    unsigned int str_n = 0;         //количество введенных строк

    input_text(str, &str_n);
    input_search_string(search_str);
    do_search(str, search_str, str_n);

    return 0;
}

но думаю это не самый удачный вариант, может кто-то предложит получше...

PM   Вверх
mossad
Дата 16.1.2009, 20:34 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 22.12.2008

Репутация: нет
Всего: нет



Спасибо большое за код, но мне нужен вариант с prj-файлом.я попытался разбить и вот че вышло:


файл stroka.prj
Код

main.c
myio.c
text.c


файл main.c
Код


#include "myfuncs.h"

extern char *SEARCH, *QUERY, *FINAL;

void main( void )
{
    do{
       Title( SEARCH );
       GetText( char text[], unsigned len );
       GetSam( char *sample );
       Search( char text[], char *sample,unsigned int str);
    } while ( YesNo ( QUERY ) );
    Finish( FINAL );
}




файл myio.c
Код

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#include " const.h"


void Title( void )
{
    cprintf( "\n\r%s\n\r%s\n\r", SEARCH, INPUT );

} /* Title */


char *StrGet( char buf[],   /* буфер дл получени строки */
          unsigned len  /* максимальна длина строки */
            )

{
    buf[0] = ( len > STRMAXLEN ) ? STRMAXLEN : len;
    buf[0]++;
    cgets( buf );

    if ( buf[1] == 0 )
        return NULL;
    else
        return ( buf + 2);

} /* StrGet */



void GetText (char (*text)[67], unsigned int *len)
{
    char ch;
    unsigned int len = 0;

    while(*str < 5)
    {
        ch = getchar();
        if(len == 0 && ch == ';')
              break;

        text[*str][len++] = ch;
          if(ch == '\n')
             {
               ++(*str); len = 0;
             }
          if(len > 66)
             {
               cprintf("error: too many characters in string.");
               exit(1);
             }

    }
    fflush(stdin);
}

void GetSam(char *sample)
{
    char ch;
    unsigned int len = 0;

    cprintf("%s\n\r", "Input sample to search:");

    for(;;)
    {
        ch = getchar();
        if(ch == '\n')
             break;
        sample[len++] = ch;
        if(len > 66)
           {
             printf("error: too many characters in string.\n");
             exit(1);
           }
    }

    if(!strlen(sample))
       {
         printf("error: sample to search is empty!");
         exit(1);
       };
}


void Search (char (*text)[67], char *sample, unsigned int str)
{
    unsigned int i = 0, k = 0, n = 0;
    char  answer, *p;

    if(!strlen(sample))
       {
         printf("error: substring to search is empty!");
         exit(1);
       }

    for(i = 0; i < str; i++)
    {
        if(!strlen(text[i]))
        {
            printf("error: text for search is empty!");
            exit(1);
        }
    }

    cprintf("\n========================================================\n");
    for(n = 0; n < str; n++)
    {
        textcolor(10);
        cprintf("\r\n%s%d: %s", "string ", n+1, text[n]);
        p = text[n];
        cprintf("\r");
        while(*p)
        {
            if((p = strstr(p, char sample)) != NULL)
             {
                for(i = 0; i < strlen(text[n]); i++)
                {
                    if(&(text[n][i]) == p)
                    {
                    textcolor(14);
                    for(k = 0; k < strlen(sample); k++) cprintf("%c", text[n][i++]);
                    --i;
                    }
                    else
                    {
                       textcolor(7);
                       cprintf("%c", text[n][i]);
                    }
                }
                label:
                    cprintf("\rContinue search in this string[y/n]: ");
                    fflush(stdin);
                    answer = tolower(getchar());
                    if(answer == 'y') 
                         p += (strlen(search_string));
                    else if(answer == 'n') 
                         break;
                else goto label;
             }
             else
             {
                textcolor(7);
                cprintf("*****Substring not found.");
                break;
             }
        }
    }
}


int YesNo( char *query )

{
int c;
      printf( "\n%s [Y/N]? ", query );
      fflush( stdin );
      c = getchar();
      if ((c == 'y') || (c == 'Y'))
           return 1;
      else
           return 0;
}
void Finish( char *text )

{
      printf( "\n%s", text );
}




файл text.c
Код

char *SEARCH  = "kontekstnii poisk";
char *INPUT   = "Vvedite text";
char *FINAL   = "Rbota zavershena";
char *QUERY    = "Повторить";

#endif



файл const.h
Код

#define STRMAXLEN 67



файл myfuncs.h
Код

void Title   ( char *text );
void GetText ( char (*text)[67], unsigned int *str_num);
void GetStr  ( char *search_string);
void Search  ( char (*text)[67], char *search_string, unsigned int str_num);
int YesNo    ( char *query );
void Finish  ( char *text );




попробовал скомпилировать но выкинул три одинаковые ошибки в функции main Expression syntax in function main и подчеркнул  GetText, GetSam, Search.
В чем ошибка и как ее исправить?
P.S. Еще раз огромное спасибо автору проги.
P.S.P.S. Буду сидеть всю ночь,  ребят помогите плз. 

PM MAIL   Вверх
pan2004
Дата 16.1.2009, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 2
Всего: 9



Код

char (*text)[67]

не знаю, может для Borland C++3 это и нормально, но вообще выглядит странно. Почему не char* или не char**?
Код

       GetText( char text[], unsigned len );
       GetSam( char *sample );
       Search( char text[], char *sample,unsigned int str);

Кто так функции вызывает(какой смысл вообще несет этот код)? Смотри, как сделано в примере taiven:\
Код

    char str[5][67] = {'\0'};      //основной текст
    char search_str[67] = {'\0'};   //искомая строка
    unsigned int str_n = 0;         //количество введенных строк

    input_text(str, &str_n);
    input_search_string(search_str);
    do_search(str, search_str, str_n);




--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0747 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.