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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++&Delphi] Программа для проверки знаний, может кто видел, подскажет 
:(
    Опции темы
RHS
Дата 16.4.2007, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Задача - написать программу для проверки знаний, с возможностью редактирования вопросов и списка учащихся.
По поиску видел несколько, но к сожалению без исходников. Желательно под MS  VS,  ну или хотяб делфи. 
PM MAIL ICQ   Вверх
mr.Anderson
Дата 16.4.2007, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Это вам в найм специалистов. На написание такой программы (тем более с исходниками) нужно время, а если делать качественно - то много времени. За бесплатно вам такое вряд ли кто сделает.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
RHS
Дата 16.4.2007, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ну может кто гденить встречал, сам писал... и вообще, на сколько это большой объем, примерно естессно
PM MAIL ICQ   Вверх
zkv
Дата 16.4.2007, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

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



Цитата(RHS @  16.4.2007,  21:45 Найти цитируемый пост)
ну может кто гденить встречал, сам писал... и вообще, на сколько это большой объем, примерно естессно 

честно говоря объем не очень большой (на VS например), все зависит от того насколько профессионально и нестандартно исполнено будет. 
Это курсовик, или реальная задача?

под "профессиональностью" подразумеваю "устойчивость" программы к воздействиям внешней среды (особо одаренных юзеров в том числе)

под "нестандартностью" подразумеваю сложность интерфейса.

Это сообщение отредактировал(а) zkv - 16.4.2007, 21:58
PM MAIL   Вверх
RHS
Дата 16.4.2007, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



да, курсовик. исполнение - чтоб запустилась, поработала при показе, это главное

Это сообщение отредактировал(а) RHS - 17.4.2007, 00:21
PM MAIL ICQ   Вверх
apook
Дата 17.4.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Давным давно писал уж и не помню как работает. Консольная. помню
хотел к ней ооблочку на Borlande написать да забросил
Код

#include "fstream.h"
#include "string.h"
#include "limits.h"
#include "stdlib.h"
#include "stdio.h"
#include "ctype.h"
#include "conio.h"



//_____обьявление функций_______________________________________________________
//функция помощь
void helpscrin(void);
//функция проверки массива символов на "цифра или нет?"
void _isdigit(char *argument, char e_r[]);
//функция присваения переменной случайного числа
void passw(int a1, int a2, char randon[]);
//функция экзамен
void examine(int exammode, char *variant, char ret_n[], char notgood[]);
//функция создания строки С из считанных символов
void myIOfunc(char c_out[], char c_in[]);
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


int main(int argc, char *argv[]) //поехали
{
//______________________________________________________________________________
char *line1, *line2, *ptr;    //переменные которые будут использоваться на
int num1 = 0, num2 = 0, num3 = 0, num4 = 0, exammode;    //протяжении всего кода
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

//начало цикла ("кол-во проходов" =2)
int v; // временная переменная
for (v = 1; v <= 2; v++)//<- start     |
{
//начало вложенного цикла "перебор аргументов коммандной строки по номерам"
int c, x;//временная переменная
for (c = 1; c < argc; c++)//<- start   |
{
switch(v) // оператор ветвления switch
{
case 1: // первая ветвь   
line2 = argv[c]; // переменная line2 равна command_line аргумент с индексом [c]
//______________________________________________________________________________
//если command_line аргумент равен "help"_или_ "HELP"
if ((line2[0] == 'h' || line2[0] == 'H') &&
(line2[1] == 'e' || line2[1] == 'E')    &&
(line2[2] == 'l' || line2[2] == 'L')    &&
(line2[3] == 'p' || line2[3] == 'P'))
{
line1 = "help";
ptr = strstr(line2, line1);
if (ptr != 0)
    {
    helpscrin(); //запустить функцию HELP
    return 0;
     }
}
//______________________________________________________________________________
//если command_line аргумент равен "examine"_или_ "preexamine"
if (!strstr("examine", line2) == NULL || !strstr("preexamine", line2) == NULL)
{
char char_string[10], *variant, ret_n[10] = "0";

strtdlg_a: // метка начала диалога
clrscr(); // функция Turbo C++, очистки экрана 

char c_out[45] = "Введи номер варианта и нажми ENTER", // ВВЕСТИ НОМЕР ВАРИАНТА
     c_in[10];
myIOfunc(c_out, c_in); //запуск функции myIOfunc
variant = c_in;
//проверить каждый символ на "цифра ли это"
char e_r[2] = "0";  
_isdigit(variant, e_r); //запуск функции _isdigit
if (e_r[0] != '0')
    {
    printf(" в введенном варианте %s не цифр\n", e_r,
    variant);
    if (getchar() != EOF);
    goto strtdlg_a;        
    }    

if (line2[0] == 'p' && line2[1] == 'r' && line2[2] == 'e') exammode = 0;
else exammode = 1;

char notgood[3] = "0";
examine(exammode, variant, ret_n, notgood);
if (getchar() != EOF);

if (ret_n[0] != '0')
    {
    goto strtdlg_a;
    }
if (notgood[0] != '0')
    {
    printf("Вы имеете %c не верных ответов\n", notgood);
    }
printf("END\n");

}
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
break; // end case 1

case 2:
if (c == 1) // сколько вариантов? (аргумент 1)
    {
    char e_r_r[20] = "0";
    _isdigit(argv[c], e_r_r);
    if (e_r_r[0] != '0') 
        {
        printf("Возвращено %c ошибок", e_r_r);
            printf("Любая клавиша для завершения программы\n");
        if (getchar() != EOF); // остановка до нажатия любой клавиши
        return 0;
         }
    x = atoi(argv[c]);
    num1 = x;
    if (num1 > 5)
        {
            printf("Максимум 5 (аргумент 1)\n");
            printf("Любая клавиша для завершения программы\n");
        if (getchar() != EOF); // остановка до нажатия любой клавиши
        return 0;
         }
    if (num1 <=0)
        {
        printf("0 файлов? Неправильный аргумент 1\n"); 
            printf("Любая клавиша для завершения программы\n");
        if (getchar() != EOF); // остановка до нажатия любой клавиши
        return 0;  
         }

    }
    
if (c == 2)  // сколько вопросов в варианте? (аргумент 2)
    {
    char *e_r_r = "0";
    _isdigit(argv[c], e_r_r);
    if (e_r_r[0] != '0') 
        {
        printf("Возвращено %c ошибок\n", e_r_r);
        printf("Любая клавиша для завершения программы\n");
        if (getchar() != EOF); // остановка до нажатия любой клавиши
        return 0;
         }
    x = atoi(argv[c]);
    num2 = x;
    if (num2 > 10)
    {
    printf("Максимум 10 (аргумент 2)\n");
    printf("Любая клавиша для завершения программы\n");
    if (getchar() != EOF); // остановка до нажатия любой клавиши
    return 0;
     }

    if (num2 <= 0)
    {
    printf("0 вопросов? Не правильный аргумент 2\n");
    printf( "Любая клавиша для завершения программы\n");
    if (getchar() != EOF); // остановка до нажатия любой клавиши
    return 0;  
     }

     }    
    

if (c == 3)  // сколько ответов на вопрос? (аргумент 3)
    {
    char *e_r_r = "0";
    _isdigit(argv[c], e_r_r);
    if (e_r_r[0] != '0') 
        {
        printf("Возвращено %c ошибок\n", e_r_r);
        printf("Любая клавиша для завершения программы\n");
        if (getchar() != EOF); // остановка до нажатия любой клавиши
        return 0;
         }
    x = atoi(argv[c]);
    num3 = x;    
    if (num3 > 5)
    {
    printf("Максимум 5 (аргумент 3)\n");
    printf("Любая клавиша для завершения программы\n");
    if (getchar() != EOF); // остановка до нажатия любой клавиши
    return 0; 
     }

    if (num3 <= 0)
    {
    printf("0 ответов? Не правильный аргумент 3\n"); 
    printf("Любая клавиша для завершения программы\n");
    if (getchar() != EOF); // остановка до нажатия любой клавиши
    return 0;  
     }

    }
    
if (c == 4)  // ключь
    {
    char *e_r_r = "0";
    _isdigit(argv[c], e_r_r);
    if (e_r_r[0] != '0') 
        {
        printf("Возвращено %c ошибок\n", e_r_r);
            printf("Любая клавиша для завершения программы\n");
        if (getchar() != EOF); // остановка до нажатия любой клавиши
        return 0;
         }
    x = atoi(argv[c]);
    num4 = x;    
    if (num4 > 20)
    {
    printf("Максимум 20 (аргумент 4)\n");
    printf("Любая клавиша для завершения программы\n");
    if (getchar() != EOF); // остановка до нажатия любой клавиши
    return 0; 
     }

    if (num4 <=0)
    {
    printf("ключь 0? Не правильный аргумент 5\n"); 
    printf("Любая клавиша для завершения программы\n");
    if (getchar() != EOF); // остановка до нажатия любой клавиши
    return 0;  
     }

    }    
    
break; // end case 2

} // end switch

} // for 2 end
} // for 1 end


/* создаем файлы */
if (num1 > 0 && num2 > 0 && num3 > 0)
{
ofstream f_output, f_main;
char filename[20];
int i, g, n;

/* cоздать файл для сохранения параметров */
f_main.open("main.txt", ios::out);
if (f_main.fail()) //Проверка на открытие файла
    {
    perror("Error ");
    printf("Ошибка чтения файла параметров\n");
    if (getchar() != EOF); // остановка до нажатия любой клавиши
    return 0;
     }
     
for(i = 1; i <= num1; i++)    // файлов столько, сколько указано
    {                    // в переменной num1

    
    itoa(i, filename, 10);
    strcat(filename, "_varnt.txt");
    f_output.open(filename, ios::out);
    if (f_output.fail()) //Проверка на открытие файла
    {
    perror("Error ");
    printf("Ошибка чтения файла вариынта\n");
    return 0;
     }
    /* вносим начальные данные */
    f_output << ";          --+-- \n"
             << ";          --+-- \n"
             << ";          Вариант номер - " << i << " \n"
             << ";\n";
    for(g = 1; g <= num2; g++) // вопросов столько, сколько указано 
        {                      // в переменной num2 
        f_output << "---------------------------------\n"
             << "Вопрос номер " << g  << "\n"
                 << "---------------------------------\n"
                 << "              Место для\n"
                 << "               вопроса\n"
                 << "\n"
                 << "Ответы: \0";
            for(n = 1; n <= num3; n++) // ответов столько, сколько указано
            {                          // в переменной num3
            f_output << n << " \0";
            }
            
        f_output << "\n";
        
        char randon[20] = "0";
        passw(num3, num4, randon);
        
        int u = atoi(randon);
        f_main << u << "\0"; // 
                        
        int y = 1;
        while(y < u)
            {
            f_output << " " << "\0";
            y++;
             }
        u = y + 8;     
        f_output.width(u);
        f_output << "^" << " \n"
                 << "$$$$О$$С$$Т$$А$$Н$$О$$В$$К$$А$-" << g << "$" << "\n\r";
        n = 1;
        }
    f_main << "\n"; //
    f_output.close();
    g = 1;
    }
    
f_main.close();
}
else
{
printf("Не верно \n");
if (num1 <= 0) printf("аргумент номер 1 = %d\n", num1);
if (num2 <= 0) printf("аргумент номер 2 = %d\n", num1);
if (num3 <= 0) printf("аргумент номер 3 = %d\n", num1);
printf("\n");
printf("Введи Help в коммандной строке для получения информации\n");
if (getchar() != EOF); // остановка до нажатия любой клавиши


if (getchar() != EOF); // остановка до нажатия любой клавиши
return 0;
}


//______________________________________________________________________________
/*        --Voids--         */ // обьявленные функции !
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
/*
  --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+--|
  |             проверка каждого символа на то, цифра ли это                   |
  --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-*/
void _isdigit(char *argument, char e_r[])
{
int i = 0, b = strlen(argument), e = 0;

while(i < b) //кол-во проходов равно количеству символов в переменной
{
if (!isdigit(argument[i]))
{
e++;
}
i++;
}
itoa(e, e_r, 10);
}

/*
  --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+--|
  |                              экран помощи                                  |
  --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-*/
void helpscrin(void)
{
printf("This is a Help scrin \n");
printf("EXAMINER v.0.2  freeware\n");
printf("\n");
printf("Параметры коммандной строки:\n");
printf("examiner [кол-во вариантов] [кол-во вопросов в варианте]\n");
printf("         [кол-во ответов на вопрос] [ключь] [экзамен]\0");
printf(" или [подготовка]\n");
printf("         [помощь]\n");
printf("\n");
printf(" 1. кол-во вариантов - не более пяти\n");
printf(" 2. кол-во вопросов в варианте - не более десяти\n");
printf(" 3. кол-во ответов на вопрос - не более пяти\n");
printf(" 4. ключь - от одного до двадцати для вариантов ответов\n");
printf(" 5. экзамен (examine) - скрыть правильные ответы\n");
printf(" 6. подготовка (preexamine)- показать правильные ответы\n");
printf(" 7. помощь (help) - показать этот экран\n");
printf("\n");
printf(" Примеры:\n");
printf("\n");
printf(" examiner 2 4 5 15 - Будет создано две заготовки(два варианта),\n");
printf("                     четыре вопроса, по пять вариантов ответов.\n");
printf("                     ключь пятнадцать.\n");
printf(" examiner examine    - начать экзамен\n");
printf(" examiner preexamine - начать подготовку к экзамену\n");
printf("\n");
printf(" Для более подробной информации обратись к документации\n");
return;
}

/*
  --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+--|
  |                присваение переменной случайного числа                      |
  --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-*/
void passw(int a1, int a2, char randon[])
{
int i, t, p;
p = a1 + 1;
for(i = 0; i <= a2; i++)
{
t = rand() % p;
 }
if (t <= 0) t = 1;
itoa(t, randon, 20);
}

/*
  --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+--|
  |                         непосредственно экзамен                            |
  --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-*/
void examine(int exammode, char *variant, char ret_n[], char notgood[])
{
//______________________________________________________________________________
char textLine[100], filetoinput[20], ch, *otvet, mainchar[20] = "0";
int numofvopros = 1;                              //переменные для всей функции
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
strcpy(filetoinput, variant);        // скопировать переменную в переменную
strcat(filetoinput, "_varnt.txt");    // приклеить к концу переменной строку

ifstream f_input, f_main; // указатели на файлы

f_input.open(filetoinput, ios::in);    // файлы открываются
f_main.open("main.txt", ios::in);    // для чтения

if (f_input.fail()) // проверка на ошибку открытия
{
perror(" Ошибка ");
printf("Файл с именем %s вызвал ошибку чтения\n", filetoinput);
ret_n[0] = '1';
return;
}
else if (f_main.fail()) // проверка на ошибку открытия main.txt
{
perror(" Ошибка ");
printf("Файл с именем main.txt необходимый для сравнения с правильными\n");
printf("ответами вызвал ошибку чтения\n");
ret_n[0] = '1';
return;
}
else // если ошибок нет!
{
char ch;
int c;
//int i; // переменная для счетчика (если надо)
while(!f_input.eof())
{
f_input.getline(textLine, CHAR_MAX);

if (textLine[0] == '$') // если первый символ строки '$' то остановка
{
strtdlg_b: // метка начала диалога
int i_notgood = 0;
char c_out[45] = "Введи цифру и нажми Enter: ", // ВВЕСТИ ВАРИАНТ ОТВЕТА <--
     c_in[10];
myIOfunc(c_out, c_in); //запуск функции myIOfunc

strcpy(otvet, c_in);

int b = strlen(otvet);
if (strstr(otvet, "exit") != 0) return;
if (b >= 2)
{
printf("Введенный вариант ответа не соответствует\n");
printf("разрешенному максимуму, для ответов это 5\n");
goto strtdlg_b;
}

char *e_r = "0";
_isdigit(otvet, e_r); //запуск функции _isdigit

if (e_r[0] != '0')
    {
    printf(" в введенном варианте %s не цифр\n", e_r,
    variant);
    if (getchar() != EOF); // остановка до нажатия любой клавиши
    goto strtdlg_b;        
    }

/* проверка на правильность ответа */
if (mainchar[0] != '~')
{    
int n = 0, numofvariant = atoi(variant);
f_main.seekg(ios::beg);    
while(n < numofvariant)
    {
    f_main.getline(mainchar, 20);
    n++;
     }
    if (mainchar[numofvopros - 1] == otvet[0])
    {
    printf("\n");
    printf("GOOD! && ПРАВИЛЬНО! \n");
    printf("\n");
    }    
    else
    {
    i_notgood = i_notgood + 1;
    itoa(i_notgood, notgood, 10);
    printf("НЕ верный ответ ! \n");
    printf("Правильный ответ %c\n", mainchar[numofvopros - 1]);
     }
    }
    else
    {
    printf("Правильный ответ программе не известен \n");    
     }    
/* конец проверки на правильность ответа */

numofvopros++; // cчетчик остановок(а значит счетчик вопросов)
}
else if (textLine[0] == ';')    // если первый символ ';'
{                // то    
printf("\0");            // пропуск (т.е вывод пустой строки)
 }

else if ((!strrchr(textLine, '^') == NULL) && (exammode == 1))
{                // если в строке есть символ '^' то пропуск  
printf("\0");            // (т.е вывод пустой строки) !для examine
 }
else
{
printf("%s\n", textLine);    // или вывод строки
}
//i++; // счтчик строк

}
f_input.close();    // закрыть
f_main.close();        // файлы
}
}

/*
  --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+--|
  |                  создание строки С из считанных символов                   |
  --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-- --+-*/
void myIOfunc(char c_out[], char c_in[])
{
char ch;
printf("%s \0", c_out); //ввывести на экран строку
int i;
for (i = 0; (i < 80) && ((ch = getchar()) != EOF) && (ch != '\n'); i++)
c_in [i] = ch;
c_in[i] = '\0';
}



















--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
RHS
Дата 17.4.2007, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(apook @  17.4.2007,  14:46 Найти цитируемый пост)
хотел к ней ооблочку на Borlande написать да забросил

а насколько это сложно? или проще сказу не в консоли делать?
На VS 2005 чтото так и не смог запустить :(

Это сообщение отредактировал(а) RHS - 17.4.2007, 17:10
PM MAIL ICQ   Вверх
apook
Дата 18.4.2007, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Тебе строго на  VS 2005 на Буилдере же легче оконный интерфейс
состряпать?


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
RHS
Дата 18.4.2007, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



apook, ну просто с VS  уже знаком немного, ну и "рекомендовал" препод
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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