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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> На пути познания, изучая С++ возникает масса вопросов 
:(
    Опции темы
Vendigo
Дата 17.1.2006, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

Объекты, которые определяются на основе классов, объединяют в себе данные и методы с помощью которых можно работать с этими данными.

Данные нужно описывать в закрытой части класса, чтобы ограничить их использование вне класса. Таким образом данные становятся недоступны из программы, невидимы. Что бы работать с данными нужно использовать методы - функции которые описаны в открытой части класса.

В этих функциях нужно проверять правильность ввода/вывода значений в/из закрытых данных, тем самым защищая их.

То есть в описанном мною классе Data_list в поле int birthday храниться дата рождения. А через функцию int birthday_put(int a) я получаю эту дату. И в ней я должен предусмотреть что бы вводимое значение являлось действительной датой.
Например функция будет возвращать 1 если пользователь ввел правильный формат и полю birthday присвоено значение. И 0, если формат не верен, и данные не записаны. А в программе я буду обрабатывать эти значения. Так?
Добавлено @ 19:24
Еще небольшой вопрос. Я работаю в Builder 6, и слева от текста кода, в проводнике, у меня отображается структура класса. Так вот когда я меняю объявление класса эта структура не меняется. Подскажете, как это лечится.
PM MAIL   Вверх
Romikgy
Дата 18.1.2006, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Вообщето
Цитата(Vendigo @ 17.1.2006, 17:42 Найти цитируемый пост)

char *fgets(char *s, int n, FILE *stream);

то для работы с файлами , имхо.


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

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


Новичок



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

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



Млин, товарищи сертифицированные специалисты. Может разьясните как правильно получить строку из консоли?

А то чегой то у меня smile

Вот полный текст программы:
Код

#include<iostream>
#include<stdio.h>

using namespace std;
//---------------------------------------------------------------------------
class Data_list
{
    char name[64];         // Имя
    int birthday;              // День рождения год.месяц.число
    char address[64];     // Адресс
    int telephone;           // Телефон
    char nik[32];             // Ник
    char sex;                  // Пол m/w/n
    char company[32];   // Место работы
    char note[1024];      // Заметки
public:
    Data_list();                    // Конструктор

    void clear();                   // Очистка данных

    int name_put(char *str);        // Ввод данных
    int birthday_put(int a);
    int address_put(char *str);
    int telephone_put(int a);
    int nik_put(char *str);
    int sex_put(char s);
    int company_put(char *str);
    int note_put(char *str);

    char    *name_get();                         // Получение данных
    int     birthday_get();
    char    *address_get();
    int     telephone_get();
    char    *nik_get();
    char    sex_get();
    char    *company_get();
    char    *note_get();

};

Data_list::Data_list()
{
    name[0] = '\0';
    birthday = 0;
    address[0] = '\0';
    telephone = 0;
    nik[0] = '\0';
    sex = 'n';
    company[0] = '\0';
    note[0] = '\0';
};

void Data_list::clear()
{
    name[0] = '\0';
    birthday = 0;
    address[0] = '\0';
    telephone = 0;
    nik[0] = '\0';
    sex = 'n';
    company[0] = '\0';
    note[0] = '\0';
}

//-------- получение данных ------- Data_list--------------
int Data_list::name_put(char *str)
{
    for(int i=0; str[i]; i++)
        name[i] = str[i];
    return 1;
}

int Data_list::birthday_put(int a)
{
     birthday = a;
     return 1;
}

int Data_list::address_put(char *str)
{
    for(int i=0; str[i]; i++)
        address[i] = str[i];
    return 1;
}

int Data_list::telephone_put(int a)
{
    telephone = a;
    return 1;
}

int Data_list::nik_put(char *str)
{
    for(int i=0; str[i]; i++)
        nik[i] = str[i];
    return 1;
}

int Data_list::sex_put(char s)
{
    sex = s;
    return 1;
}

int Data_list::company_put(char *str)
{
    for(int i=0; str[i]; i++)
        company[i] = str[i];
    return 1;
}

int Data_list::note_put(char *str)
{
    for(int i=0; str[i]; i++)
        note[i] = str[i];
    return 1;
}

//-------- возвращение данных ---- Data_list --------------------
char *Data_list::name_get()    { return name; }
int Data_list::birthday_get()  { return birthday; }
char *Data_list::address_get() { return address; }
int Data_list::telephone_get() { return telephone; }
char *Data_list::nik_get()     { return nik; }
char Data_list::sex_get()      { return sex; }
char *Data_list::company_get() { return company; }
char *Data_list::note_get()    { return note; }
//---------------------------------------------------------------

const int size_list = 100;
Data_list man[size_list];

void output();
void input();
void clear();

int main()
{
    int a = 1;
    do
        {
        cout << "\n    MENU";       //Показываем меню
        cout << "\n 1 Output";
        cout << "\n 2 Input";
        cout << "\n 3 Poisk";
        cout << "\n 4 Clear";
        cout << "\n 0 Exit\n";
        cin >> a;

        switch(a)
            {
            case 1: output();
            break;
            case 2: input();
            break;
            case 3: cout << "\n Esche ne gotovo";
            break;
            case 4: clear();
            break;
            }

        } while (a);

    return 0;
}
//---------------------------------------------------------------------------

void output()
{
 for (int i=0; i < size_list; i++)   //Перебираем массив
    {
    if(*man[i].name_get())    //Если есть имя выводим данные
        {
        cout << "\nname: " << *man[i].name_get();
        cout << "\nbirthday(19791001): " << man[i].birthday_get();
        cout << "\naddress: " << *man[i].address_get();
        cout << "\ntelephone: " << man[i].telephone_get() << '\n';
        }
    }
}

void input()
{
    int  a = 1;
    char str[64];
    int  n;

    do
        {
        int i;
        for(i = 0; i < size_list; i++)
            if( *man[i].name_get() == '\0' ) break;  // Ищем пустую строку
            
        if(i == size_list)                          // Если цикл прошел весь
            {                                       // свободных строк нет
            cout << "no memory\n";
            return;
            }

        cout << "\ninput name: ";         //Вводим данные
        gets(str);
        man[i].name_put(str);

        cout << "\ninput addres: ";
        gets(str);
        man[i].address_put(str);

        cout << "\ninput birthday(19791001): ";
        cin >> n;
        man[i].birthday_put(n);

        cout << "\ninput telephone: ";
        cin >> n;
        man[i].telephone_put(n);

        cout << "\nREPET? (Yes-1/No-0)";   //Запрос повторного ввода
        cin >> a;
        } while(a);                        //Повтор ввода при необходимости
}

void clear()
{
    for(int i = 0; i < size_list; i++)
    man[i].clear();
    cout << "\nData clear";
}


Так тож не получается:
Код

        cout << "\ninput name: ";         //Вводим данные
        cin.getline(str, sizeof(str));
        man[i].name_put(str);


Это сообщение отредактировал(а) Vendigo - 18.1.2006, 20:02
PM MAIL   Вверх
asdf
Дата 18.1.2006, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

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



Код
#include<iostream>
#include<stdio.h>    
using namespace std;    
//---------------------------------------------------------------------------    
class Data_list    
{    
    char name[64];         // Имя    
    int birthday;              // День рождения год.месяц.число    
    char address[64];     // Адресс    
    int telephone;           // Телефон    
    char nik[32];             // Ник    
    char sex;                  // Пол m/w/n    
    char company[32];   // Место работы    
    char note[1024];      // Заметки    
public:    
    Data_list();                    // Конструктор    
    void clear();                   // Очистка данных    
    int name_put(char *str);        // Ввод данных    
    int birthday_put(int a);    
    int address_put(char *str);    
    int telephone_put(int a);    
    int nik_put(char *str);    
    int sex_put(char s);    
    int company_put(char *str);    
    int note_put(char *str);    
    char    *name_get();                         // Получение данных    
    int     birthday_get();    
    char    *address_get();    
    int     telephone_get();    
    char    *nik_get();    
    char    sex_get();    
    char    *company_get();    
    char    *note_get();    
};    
Data_list::Data_list()    
{    
    name[0] = '\0';    
    birthday = 0;    
    address[0] = '\0';    
    telephone = 0;    
    nik[0] = '\0';    
    sex = 'n';    
    company[0] = '\0';    
    note[0] = '\0';    
};    
void Data_list::clear()    
{    
    name[0] = '\0';    
    birthday = 0;    
    address[0] = '\0';    
    telephone = 0;    
    nik[0] = '\0';    
    sex = 'n';    
    company[0] = '\0';    
    note[0] = '\0';    
}    
//-------- получение данных ------- Data_list--------------    
int Data_list::name_put(char *str)    
{    
    for(int i=0; str[i]; i++)    
        name[i] = str[i];    
    return 1;    
}    
int Data_list::birthday_put(int a)    
{    
     birthday = a;    
     return 1;    
}    
int Data_list::address_put(char *str)    
{    
    for(int i=0; str[i]; i++)    
        address[i] = str[i];    
    return 1;    
}    
int Data_list::telephone_put(int a)    
{    
    telephone = a;    
    return 1;    
}    
int Data_list::nik_put(char *str)    
{    
    for(int i=0; str[i]; i++)    
        nik[i] = str[i];    
    return 1;    
}    
int Data_list::sex_put(char s)    
{    
    sex = s;    
    return 1;    
}    
int Data_list::company_put(char *str)    
{    
    for(int i=0; str[i]; i++)    
        company[i] = str[i];    
    return 1;    
}    
int Data_list::note_put(char *str)    
{    
    for(int i=0; str[i]; i++)    
        note[i] = str[i];    
    return 1;    
}    
//-------- возвращение данных ---- Data_list --------------------    
char *Data_list::name_get()    { return name; }    
int Data_list::birthday_get()  { return birthday; }    
char *Data_list::address_get() { return address; }    
int Data_list::telephone_get() { return telephone; }    
char *Data_list::nik_get()     { return nik; }    
char Data_list::sex_get()      { return sex; }    
char *Data_list::company_get() { return company; }    
char *Data_list::note_get()    { return note; }    
//---------------------------------------------------------------    
const int size_list = 100;    
Data_list man[size_list];    
void output();    
void input();    
void clear();    
int main()
{    
        int a = 1;
    do    
        {    
                cout << "\n    MENU";       //Показываем меню
        cout << "\n 1 Output";    
        cout << "\n 2 Input";    
        cout << "\n 3 Poisk";    
        cout << "\n 4 Clear";    
        cout << "\n 0 Exit\n";    
                cin >> a;
                switch(a)
            {    
            case 1: output();    
                        break;
            case 2: input();    
                        break;
                        case 3: cout << "\n Esche ne gotovo";
            break;    
            case 4: clear();    
                        break;
            }    
        } while (a);    
        return 0;
}
//---------------------------------------------------------------------------    
void output()    
{    
 for (int i=0; i < size_list; i++)   //Перебираем массив
        {
        if(*man[i].name_get())    //Если есть имя выводим данные
                {
                cout << "\nname: " << /***/man[i].name_get();
                cout << "\nbirthday(19791001): " << man[i].birthday_get();
                cout << "\naddress: " << /***/man[i].address_get();
                cout << "\ntelephone: " << man[i].telephone_get() << '\n';
        }    
    }    
}
void input()
{
        int  a = 1;
    char str[64];    
    int  n;    
    do    
        {    
                int i;
                for(i = 0; i < size_list; i++)
            if( *man[i].name_get() == '\0' ) break;  // Ищем пустую строку    
             
        if(i == size_list)                          // Если цикл прошел весь    
            {                                       // свободных строк нет    
            cout << "no memory\n";    
            return;    
            }    
                cout << "\ninput name: ";         //Вводим данные
                //gets(str);
                cin >> ws;
                cin.getline(str, sizeof str);
                man[i].name_put(str);
                cout << "\ninput addres: ";
                //gets(str);
                cin.getline(str, sizeof str);
                man[i].address_put(str);
                cout << "\ninput birthday(19791001): ";
                cin >> n;
                man[i].birthday_put(n);
        cout << "\ninput telephone: ";    
        cin >> n;    
                man[i].telephone_put(n);
                cout << "\nREPEAT? (Yes-1/No-0)";   //Запрос повторного ввода
                cin >> a;
                } while(a!=0);                        //Повтор ввода при необходимости
                //        char('0') == int(48)
}
void clear()    
{
    for(int i = 0; i < size_list; i++)    
        man[i].clear();
        cout << "\nData clear";
}


Это сообщение отредактировал(а) asdf - 18.1.2006, 22:06
--------------------
... 
PM MAIL   Вверх
asdf
Дата 18.1.2006, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

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



Цитата
Данные нужно описывать в закрытой части класса, чтобы ограничить их использование вне класса. Таким образом данные становятся недоступны из программы, невидимы. Что бы работать с данными нужно использовать методы - функции которые описаны в открытой части класса.

ещё ты можешь получать доступ к закрытым членам класса, указав функцию не являющуюся членом, как friend в его объявлении.
Код
  class A {
      friend A foo(A, A);
      //...
  };

--------------------
... 
PM MAIL   Вверх
Vendigo
Дата 19.1.2006, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо asdf, вроде работает. Сейчас уже поздно, завтра буду разбираться.
smile smile smile
PM MAIL   Вверх
Vendigo
Дата 20.1.2006, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



1. Все, разобрался smile
Оказывается у меня и здесь еще была ошибка:
Код

 cout << "\nname: " << *man[i].name_get();

я получал первый символ а не указатель на него!

2. Подскажите пожалуйста функцию которая возвращает код символа. Перерыл все свои книги и весь форум не могу найти такой простой вещи.
PM MAIL   Вверх
Void
Дата 20.1.2006, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


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

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



Цитата(Vendigo @ 20.1.2006, 22:15 Найти цитируемый пост)
2. Подскажите пожалуйста функцию которая возвращает код символа. Перерыл все свои книги и весь форум не могу найти такой простой вещи.

Ее нет smile Переменная типа char может служить и в качестве числового значения.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Mayk
Дата 20.1.2006, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


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

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



Цитата(Vendigo @ 21.1.2006, 00:15 Найти цитируемый пост)

2. Подскажите пожалуйста функцию которая возвращает код символа. Перерыл все свои книги и весь форум не могу найти такой простой вещи.

Просто кастаните в int.
Код

int main(){
    char c; int i;
    cin >> c;
    i = c;
    cout << c << " has code " << i  //1 способ
             << "\nhas code " << (int) c << endl; //2 способ

}




Теперь потабаним.
Цитата(blackofe @ 14.1.2006, 02:22 Найти цитируемый пост)

и какой-нибудь strcat() тоже нельзя использовать. а указатели совершенно не
рекомендуется использовать - мало ли что с их помощью можно натворить! а уж new - просто под замок - потому что сплошь и рядом забывают вызывать ответный delete.
вывод: не программируйте, други мои. это опасно для жизни.

Почти согласен. Только не так категарично.
strcat действительно не следует использовать в общем случае. Точно так же как не стоит использовать strcpy и sprintf.
Вместо них лучше использовать strncat, strncpy, snprintf (пример из жизни - скаченная и собранная quake1 у меня вылетала, так как там в Sys_Printf использовали vsprintf на 1024 байтный буфер, а строка(которая содержала всякие характеристики видюхи, и вообще была юзеру(мне) не нужна) получалась более 1024 символов. Результат - Segmentation fault).
Про new - есть такие замечательные штуки как auto_ptr и shared_ptr, которые при определенным стечении обстоятельств позволят избежать утечек памяти и не вызывать delete.
Указатели порой действительно можно заменить ссылками, что а) предотвратит передачи NULL'а, и кроме того б) увеличит скорость разработки , так как вместо "if(a) a->b" можно будет писать "a.b" :-)
Вывод: используйте безопасные функции, и ваши волосы будут мягкими и пушистими.
Цитата(blackofe @ 14.1.2006, 02:22 Найти цитируемый пост)

логика таки в моих словах есть.

Соглсен smile

зы. Вот чем хорош стандарт - там ф-ции snprintf и sprintf описываются рядом. Во всяких книжках "с++ за обеденный перерыв" (во всяком случае в тех, что попадались мне) такого можно не дождаться. Кстати, в С99 ф-ция snprintf(7.19.6.5) описывается ДО sprintf(7.19.6.6) smile

Это сообщение отредактировал(а) Mayk - 20.1.2006, 20:52


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Vendigo
Дата 20.1.2006, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Void
Mayk
Спасибо! Всего труднее найти то, что у тебя перед глазами smile

Можете еще объяснить про кодировки?
Я сделал так:
Код

int main()
{

    char c;
    int i;

    for(int j = 0; j < 256 ; j++)
    {
        c = j;
        cout << "int- " << j << " char- " << c << endl;
    };


    cin >> i;
    return 0;
}


И получил таблицу символов. Так эти символы отображаются в консоли. Что то мне подсказывает что в оконном приложении символы были бы другие (или расположенны по другому).

И еще такой вопрос:
Цитата(Vendigo @ 17.1.2006, 19:21 Найти цитируемый пост)

Я работаю в Builder 6, и слева от текста кода, в проводнике, у меня отображается структура класса. Так вот когда я меняю объявление класса эта структура не меняется. Подскажете, как это лечится.


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


Бывалый
*


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

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



Цитата(Vendigo @ 20.1.2006, 21:25)
И получил таблицу символов. Так эти символы отображаются в консоли. Что то мне подсказывает что в  оконном приложении символы были бы другие (или расположенны по другому).

вполне возможно. хотя бы потому, что оконное приложение могло использовать windows-кодировку, а консольное - dos-кодировку. про кодировку тут говорили не раз. воспользуйся поиском. к примеру, можно поискать слово "locale".
PM MAIL   Вверх
Fin
Дата 20.1.2006, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


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

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



Цитата

И получил таблицу символов. Так эти символы отображаются в консоли. Что то мне подсказывает что в оконном приложении символы были бы другие (или расположенны по другому).

Что то тебе подсказывает правильно. Досовская русская кодировка (CP-866) отличается от кодировки Винды (Windows-1251) в верхней части таблици. До символа с номером 127 все кодировки повторяются. Как выглядит кодировка можно посмотреть Character Map которая идет в комплекте постаки винды. Там нужно вызвать на показ любой шрифт соответствуюший кодировке винды. Я например смотрю или Arial или Courier New Cyr.


--------------------
Пролетал мимо.
PM MAIL   Вверх
asdf
Дата 22.1.2006, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

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



Цитата
Еще небольшой вопрос. Я работаю в Builder 6, и слева от текста кода, в проводнике, у меня отображается структура класса. Так вот когда я меняю объявление класса эта структура не меняется. Подскажете, как это лечится.

переоткрытием проекта.
если перед изменением объявления ты переходишь к нему 2х кликом в проводнике классов, структура должна правиться сходу ....
--------------------
... 
PM MAIL   Вверх
Vendigo
Дата 25.1.2006, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ничего не понимаю smile

Я написал код который как я думаю выводит DOS кодировку символов. Но обратное преобразование не получается т.е. (int)c возвращает странный код.
Например если char c = 'б' то (int)c = -95 smile

Код

int main()    
{    
    char c;    
    int i;    
    for(int j = 0; j < 256 ; j++)    
    {    
        c = j;    
        cout << "int- " << j << " char- " << c << endl;    
    };    

    cin >> c;         // если здесь ввести русскую букву, то получаем странный результат
    cout << "char: " << c << "  int: " << (int)c << '\n'; 

    cin >> i;
    return 0;
}

PM MAIL   Вверх
Void
Дата 25.1.2006, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


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

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



Объяви c, как unsigned char.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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