Форум Orsha-LUG
24 Сентябрь 2018, 00:12:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости: Из-за проблем со спам-ботами, автоматическая регистрация на форуме временно прекращена. Давайте общаться в Telegram: https://telegram.me/joinchat/EfXjtg4f0DrD-N6u8k2hig . Или через список рассылки: http://groups.google.ru/group/orsha-lug
 
  На сайт  Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопросы по C/C++  (Прочитано 15292 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Sacren
сЭкрен
Глобальный модератор
*****

Карма: +8/-0
Офлайн Офлайн

Сообщений: 1262


Co-Founder


Просмотр профиля WWW
« : 09 Январь 2009, 00:49:25 »

Кто-нибудь что-нибудь понимает в c++ и сокетах (tcp/синхронные)? Под линухом. Ну или хотя бы winsock2... Может есть у кого на заметке соответствующая инфа для чайников?
Записан

Хобби: быдлокод™, графомания, иногда троллить шурфа | free bydlocode here
kadavr
Администратор
*****

Карма: +7/-0
Офлайн Офлайн

Сообщений: 448


219969498
Просмотр профиля E-mail
« Ответ #1 : 09 Январь 2009, 02:32:36 »

вот честно.. мя в универе полгода учили сиплюсплюсу..... и ничему не научили. потому что на лекции я не ходил, а на практике делал домашку по другим предметам
но там нас такому не учили)
сорри)
Записан
Sacren
сЭкрен
Глобальный модератор
*****

Карма: +8/-0
Офлайн Офлайн

Сообщений: 1262


Co-Founder


Просмотр профиля WWW
« Ответ #2 : 09 Январь 2009, 17:22:54 »

Мне тут на одном форуме народ посоветовал сваливать на Code::Blocks - типа такая мега кроссплатформенная IDEшка под всякие разные компиляторы. Кто-нибудь о ней вообще слышал хоть что-нить?
Записан

Хобби: быдлокод™, графомания, иногда троллить шурфа | free bydlocode here
valik
Администратор
*****

Карма: +6/-0
Офлайн Офлайн

Сообщений: 316


451914332 saver@jabber.org
Просмотр профиля E-mail
« Ответ #3 : 09 Январь 2009, 19:10:40 »

vim+gcc+консоль рулит :ag:
так же есть devcpp,оч даже ничего
Цитировать
Кто-нибудь что-нибудь понимает в c++ и сокетах (tcp/синхронные)?
Вот инфа с++
http://forum.ru-board.com/topic.cgi?forum=33&topic=0824
Вот под UNIX
http://www.rsdn.ru/article/unix/sockets.xml
« Последнее редактирование: 09 Январь 2009, 19:18:02 от valik » Записан

Когда государству от тебя что-то надо,оно вспоминает слова "долг" и "закон".Когда тебе от него что-то надо,оно вспоминает слова "патриотизм" и "очередь"
Sacren
сЭкрен
Глобальный модератор
*****

Карма: +8/-0
Офлайн Офлайн

Сообщений: 1262


Co-Founder


Просмотр профиля WWW
« Ответ #4 : 09 Январь 2009, 19:26:46 »

ну я какбэ хочу чатик клиент-серверный написать. и желательно - кроссплатформенный. Т.е. Клиент пож вынь и линь, а  сервак под линь. Хотя (в идеале) и под линь тоже. ну или ещё чёнить такое. для фана и мб - тренировки. Правда с Ц++ я начал ковыряться ровно вчера) и как раз под devc++ 4.9.9.2 (5 beta 9) походу проект загнулся и это последняя версия.
Записан

Хобби: быдлокод™, графомания, иногда троллить шурфа | free bydlocode here
valik
Администратор
*****

Карма: +6/-0
Офлайн Офлайн

Сообщений: 316


451914332 saver@jabber.org
Просмотр профиля E-mail
« Ответ #5 : 09 Январь 2009, 21:20:39 »

ну я какбэ хочу чатик клиент-серверный написать. и желательно - кроссплатформенный. Т.е. Клиент пож вынь и линь, а  сервак под линь. Хотя (в идеале) и под линь тоже. ну или ещё чёнить такое. для фана и мб - тренировки. Правда с Ц++ я начал ковыряться ровно вчера) и как раз под devc++ 4.9.9.2 (5 beta 9) походу проект загнулся и это последняя версия.
Начни с чего нибудь более простого...
А вообщето гдето у меня была книжка сетевое программирование в unix(или linux?точно не помню).Завтра посмотрю
или если не хочешь ждать
http://www.google.com/search?hl=ru&client=opera&rls=ru&hs=lrh&q=%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B5+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+%D0%B2+unix.pdf&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=
« Последнее редактирование: 09 Январь 2009, 21:24:30 от valik » Записан

Когда государству от тебя что-то надо,оно вспоминает слова "долг" и "закон".Когда тебе от него что-то надо,оно вспоминает слова "патриотизм" и "очередь"
Nicklauster
Проверенные
**

Карма: +6/-0
Офлайн Офлайн

Сообщений: 155



Просмотр профиля
« Ответ #6 : 10 Январь 2009, 05:08:58 »

Есть отличная книжка - "Unix. Разработка сетевых приложений" Стивенс, Феннер, Рудофф. Поищи - есть в нете в pdf. Правда, код там в основном на чистом С, но почитать однозначно полезно.
И из опыта добавлю, лучшая "IDE-шка" - это emacs + makefiles ;).
Записан

Sacren
сЭкрен
Глобальный модератор
*****

Карма: +8/-0
Офлайн Офлайн

Сообщений: 1262


Co-Founder


Просмотр профиля WWW
« Ответ #7 : 11 Январь 2009, 16:09:47 »

мой структурный Helloworld ^___^, встречайте!

Код:
#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

struct phonedb {
               char number[41], holder[128];
               int ID;
               };

int main(int argc, char *argv[])
{
   
    struct phonedb phone;
   
    phone.ID = 0;
    strcpy(phone.number, "+345 123 45 67");
    strcpy(phone.holder, "Gordon Freeman, work");
   
    printf("phone book v0.11 (C) 2009 Sacren | sacren@ya.ru\n\n");
   
    printf("    ID %i\n", phone.ID);
    printf("Number %s\n", phone.number);
    printf("Holder %s\n\n", phone.holder);
   
    system("PAUSE");
    return EXIT_SUCCESS;
}
Записан

Хобби: быдлокод™, графомания, иногда троллить шурфа | free bydlocode here
kadavr
Администратор
*****

Карма: +7/-0
Офлайн Офлайн

Сообщений: 448


219969498
Просмотр профиля E-mail
« Ответ #8 : 11 Январь 2009, 16:16:07 »

ты ж вроде говорил о с++
а это ближе к си
по-моему лучше сразу с плюсов начинать
Записан
Sacren
сЭкрен
Глобальный модератор
*****

Карма: +8/-0
Офлайн Офлайн

Сообщений: 1262


Co-Founder


Просмотр профиля WWW
« Ответ #9 : 11 Январь 2009, 16:19:37 »

Ну, я пока их не очень-то различаю) присоставлении этого... хм... "шедевра", я пользовался built-in справкой на англ. dev-c++ (там обучалка по ц) и форумом http://forum.shelek.ru/

Найду ещё чё-нить - подкорректирую
Записан

Хобби: быдлокод™, графомания, иногда троллить шурфа | free bydlocode here
kadavr
Администратор
*****

Карма: +7/-0
Офлайн Офлайн

Сообщений: 448


219969498
Просмотр профиля E-mail
« Ответ #10 : 11 Январь 2009, 16:32:43 »

дык а просто взять хорошую книгу по ц++ и изучить от начала до конца нынче не трушно уже?)))
а вот это уже по-моему с++

Код:
#include <iostream>
#include <cstring>

using namespace std;


class PhoneDbItem{
char *number,*holder;
int id;
static int lastId;

public:

PhoneDbItem(const char *numb, const char *hold){

id=lastId++;
number=new char[strlen(numb)+1];
holder=new char[strlen(hold)+1];
strcpy(number,numb);
strcpy(holder,hold);
}

~PhoneDbItem(){
delete[] number;
delete[] holder;
}

char* getNumber(){return number;}
char* getHolder(){return holder;}
int getId(){return id;}
};

int PhoneDbItem::lastId=0;

int main(int argc, char *argv[]){
   
PhoneDbItem *phone=new PhoneDbItem("+345 123 45 67","Gordon Freeman, work");
    
    cout<<"something strange\n\n";
   
cout<<"ID:     "<<phone->getId()<<endl;
cout<<"Number: "<<phone->getNumber()<<endl;
cout<<"Holder: "<<phone->getHolder()<<endl;
   
    return EXIT_SUCCESS;
}
« Последнее редактирование: 11 Январь 2009, 17:11:02 от kadavr » Записан
Sacren
сЭкрен
Глобальный модератор
*****

Карма: +8/-0
Офлайн Офлайн

Сообщений: 1262


Co-Founder


Просмотр профиля WWW
« Ответ #11 : 11 Январь 2009, 17:20:10 »

Метод составления этой проги -
1. придумать идею, т.е. чё оно должно делать
2. посмотреть то место, где описываются нужные функции/операторы
3. написать/отладить сиё, чтоб работало
4. потихоньку наращивать функционал

хочется конечный резултат получить, а вообще да, кроме того придётся с оз.бай купить книжицу какую-нить - напрягает обучалки постоянно с компа читать ><
Записан

Хобби: быдлокод™, графомания, иногда троллить шурфа | free bydlocode here
kadavr
Администратор
*****

Карма: +7/-0
Офлайн Офлайн

Сообщений: 448


219969498
Просмотр профиля E-mail
« Ответ #12 : 11 Январь 2009, 17:32:29 »

лучше после придумывания идеи сразу придумать, как в целом эта прога будет строиться.  причем учесть возможность последующего расширения.
ибо потихоньку наращивать функционал можно по-разному... если грамотно начать -- то потом наращивание функционала -- это дописывание дополнительных функций в основном.. а если неграмотно -- то это тотальная переделка всего кода
Записан
Nicklauster
Проверенные
**

Карма: +6/-0
Офлайн Офлайн

Сообщений: 155



Просмотр профиля
« Ответ #13 : 11 Январь 2009, 22:22:48 »

Нет, за плюсы сразу браться не стоит. Чистый С - отличный язык для развития мозгов. Все предельно понятно + документации куча. А вот творение Страуструпа меня почему-то не очень впечатляет, хоть писал на нем в универе не так уж и много.
А по поводу книжек - посмотреть лучше на oz.by, а прежде чем покупать - у меня спроси, на книжной ярмарке рублей на 10 дешевле обойдется. Я там иногда бываю.
Записан

Sacren
сЭкрен
Глобальный модератор
*****

Карма: +8/-0
Офлайн Офлайн

Сообщений: 1262


Co-Founder


Просмотр профиля WWW
« Ответ #14 : 11 Январь 2009, 22:45:27 »

дык а просто взять хорошую книгу по ц++ и изучить от начала до конца нынче не трушно уже?)))
а вот это уже по-моему с++

Код:
#include <iostream>
#include <cstring>

using namespace std;


class PhoneDbItem{
char *number,*holder;
int id;
static int lastId;

public:

PhoneDbItem(const char *numb, const char *hold){

id=lastId++;
number=new char[strlen(numb)+1];
holder=new char[strlen(hold)+1];
strcpy(number,numb);
strcpy(holder,hold);
}

~PhoneDbItem(){
delete[] number;
delete[] holder;
}

char* getNumber(){return number;}
char* getHolder(){return holder;}
int getId(){return id;}
};

int PhoneDbItem::lastId=0;

int main(int argc, char *argv[]){
   
PhoneDbItem *phone=new PhoneDbItem("+345 123 45 67","Gordon Freeman, work");
    
    cout<<"something strange\n\n";
   
cout<<"ID:     "<<phone->getId()<<endl;
cout<<"Number: "<<phone->getNumber()<<endl;
cout<<"Holder: "<<phone->getHolder()<<endl;
   
    return EXIT_SUCCESS;
}
Не сразу заметил это щасте. Первая реакция "уууу, какоой кошмар" ^^
Мне как-то Ц показался понятнее, на первый взгляд, хотя, я канеш понимаю, что на нём далеко не уедешь. Ну что же, подналягу на это семейство
Nicklauster, угу, буду иметь в виду
Записан

Хобби: быдлокод™, графомания, иногда троллить шурфа | free bydlocode here
kadavr
Администратор
*****

Карма: +7/-0
Офлайн Офлайн

Сообщений: 448


219969498
Просмотр профиля E-mail
« Ответ #15 : 11 Январь 2009, 23:06:49 »

ну после си будет сложнее учить си++ чем с нуля...
а главное -- надо сразу привыкать к ООП, а не к функциональному программированию...
конечно, в случае если хочешь писать на си++ и идти хоть и не в ногу но хотя бы на шаг отставая от времени....
Записан
Sacren
сЭкрен
Глобальный модератор
*****

Карма: +8/-0
Офлайн Офлайн

Сообщений: 1262


Co-Founder


Просмотр профиля WWW
« Ответ #16 : 11 Январь 2009, 23:36:51 »

Дело в том, что большая часть книг, которую я видел на OZ.by, подразумевает знание базового Ц. Но, поскольку твой опыт в нём всё-таки побольше моего (меньше моего некуда ^^), то я пожалуй приобрету что-нибудь
а ля
Дизайн и эволюция C++. Классика CS Бьерн Страуструп, 2006  41 014 руб.
или же
Объектно-ориентированное программирование в С++ Р. Лафоре, 2008 за 51 421 руб.
Записан

Хобби: быдлокод™, графомания, иногда троллить шурфа | free bydlocode here
kadavr
Администратор
*****

Карма: +7/-0
Офлайн Офлайн

Сообщений: 448


219969498
Просмотр профиля E-mail
« Ответ #17 : 12 Январь 2009, 00:05:25 »

лафоре вродь норм... точно не помню.. могу завтра (тоесть уже в общем-то сегодня) спросить у наших олимпиадников... им я в этом деле доверяю полностью...

черт.. такие ценники на книги... ужас((
вроде хорошая книга  Дейтела или как там его...
Записан
Nicklauster
Проверенные
**

Карма: +6/-0
Офлайн Офлайн

Сообщений: 155



Просмотр профиля
« Ответ #18 : 12 Январь 2009, 00:35:07 »

Страуструп - несомненно классика, но читается довольно трудно. На худой конец, если что-то подсмотреть надо, то можно и в электронке.
Записан

Sacren
сЭкрен
Глобальный модератор
*****

Карма: +8/-0
Офлайн Офлайн

Сообщений: 1262


Co-Founder


Просмотр профиля WWW
« Ответ #19 : 13 Январь 2009, 00:00:43 »

скачал djvu'шку Лафоре, не самое новое издание попалось, но хотябы в общих чертах посмотреть, что там как и стоит ли покупать...
Записан

Хобби: быдлокод™, графомания, иногда троллить шурфа | free bydlocode here
Sacren
сЭкрен
Глобальный модератор
*****

Карма: +8/-0
Офлайн Офлайн

Сообщений: 1262


Co-Founder


Просмотр профиля WWW
« Ответ #20 : 17 Январь 2009, 20:55:21 »

Итак, книжку заказал -

http://oz.by/books/more104992.html

Объектно-ориентированное программирование в С++
Object-Oriented Programming in C++

Р. Лафоре

Серия:           Классика computer science   
Издательство: Питер   
Год издания:   2008   
Страниц:       928   
Переплет:       Твердый переплет   
Издание:        Четвертое издание   
Формат:         70х100/16 (170х240 мм, увеличенный)   
ISBN:               978-5-94723-302-5   
Вес:              1 200 г

22-25 обещают доставить
Записан

Хобби: быдлокод™, графомания, иногда троллить шурфа | free bydlocode here
kadavr
Администратор
*****

Карма: +7/-0
Офлайн Офлайн

Сообщений: 448


219969498
Просмотр профиля E-mail
« Ответ #21 : 18 Январь 2009, 15:39:10 »

тоесть электронный вариант ты почитал и те понравилось?
Записан
Sacren
сЭкрен
Глобальный модератор
*****

Карма: +8/-0
Офлайн Офлайн

Сообщений: 1262


Co-Founder


Просмотр профиля WWW
« Ответ #22 : 18 Январь 2009, 16:40:03 »

ага
Записан

Хобби: быдлокод™, графомания, иногда троллить шурфа | free bydlocode here
valik
Администратор
*****

Карма: +6/-0
Офлайн Офлайн

Сообщений: 316


451914332 saver@jabber.org
Просмотр профиля E-mail
« Ответ #23 : 29 Январь 2009, 19:45:22 »

http://www.codenet.ru/cat/Languages/C-CPP/
Сайт посвящённый программированию C/C++ и не только... :ab:
Записан

Когда государству от тебя что-то надо,оно вспоминает слова "долг" и "закон".Когда тебе от него что-то надо,оно вспоминает слова "патриотизм" и "очередь"
Sacren
сЭкрен
Глобальный модератор
*****

Карма: +8/-0
Офлайн Офлайн

Сообщений: 1262


Co-Founder


Просмотр профиля WWW
« Ответ #24 : 08 Февраль 2009, 01:33:27 »

другой хелловорлд - заточенный под си плус плус)

Код:
#include <cstdlib>
#include <iostream>

using namespace std;

struct player
{
       string Name;
       int HP;
       int HitPower;
       int Armour;
       int PowerRating;
};

void coutChars (player tPlayer)
{
    cout << tPlayer.Name << "'s chars:" << endl;
    cout << "HP     " << tPlayer.HP << endl;
    cout << "Damage " << tPlayer.HitPower << endl;
    cout << "Armour " << tPlayer.Armour << endl;
    cout << "Rating " << tPlayer.PowerRating << endl << endl;
};     

int main(int argc, char *argv[])
{
    player uPlayer = {"User player", 12, 4, 2, 0 };
    player cPlayer = {"CPU controlled player", 10, 3, 3, 0};
   
    uPlayer.PowerRating = uPlayer.HP + uPlayer.HitPower + uPlayer.Armour;
    cPlayer.PowerRating = cPlayer.HP + cPlayer.HitPower + cPlayer.Armour;
   
    cout << "A Game version 0.10 (C) MMIX Sacren" << endl << endl;
   
    coutChars (uPlayer);
    coutChars (cPlayer);
   
    system("PAUSE");
    return EXIT_SUCCESS;
}

Использовался компилятор minGW, поэтому теоретически должно работать и собранное под линухом. Ничего полезного оно не делает, но в следующей версии можно будет сражаться с простеньким АИ, и (мб, но не обещаю) попробую внедрить вместо/вместе со структурами классы и объекты. Данный пример использует структуры и функции(-ю).
« Последнее редактирование: 08 Февраль 2009, 01:57:52 от Sacren » Записан

Хобби: быдлокод™, графомания, иногда троллить шурфа | free bydlocode here
Sacren
сЭкрен
Глобальный модератор
*****

Карма: +8/-0
Офлайн Офлайн

Сообщений: 1262


Co-Founder


Просмотр профиля WWW
« Ответ #25 : 13 Февраль 2009, 23:44:11 »

сломал мозг((


используемые структуры
Код:
struct chars
{
       int Strength;
       int Agility;
       int Intellect;
};

struct player
{
       string Name;
       chars Skill;
       int HP;
       int HitDamage;
       int Armour;
       int PowerRating;
       int Experience;
       int Gold;
};
глючная функция
Код:
///////////////////////////////////////////////////////
int inflictDamage (player tAttacker, player tDefender)
{
    int tDefArmour = tDefender.Armour;
    if (tDefArmour == 0) { tDefArmour = 1; }
   
    float NonBlockedDamage = 0.0;
    float taPlayerHit = 0.0;
   
    NonBlockedDamage = tDefender.HP / tDefArmour;////<<<<<< bug here
//опытным путём выяснено, что если tDefender.HP < tDefArmour (результат больше 0
//меньше 1), то NonBlockedDamage даром что он float становится 0. А не 0.6 к примеру.
//И на выходе получается нулевой урон.

    taPlayerHit = tAttacker.HitDamage * NonBlockedDamage;
   
    if ((taPlayerHit < 1.0) && (taPlayerHit > 0.0))  { taPlayerHit = 1.0; }
   
    int itaPlayerHit = static_cast<int>(taPlayerHit);
   
    cout << "[!] " << tAttacker.Name << " strikes " << tDefender.Name << " (physical damage " << itaPlayerHit << " HP)" << endl;
    ///////// [debug info]
     cout << "[#] ORIGINAL DAMAGE IS " << taPlayerHit << endl;
     cout << "[#] NON-BLOCKED DAMAGE IS " << NonBlockedDamage << endl;
     cout << "[#] inst N-B DAMAGE is " << (tdPlayer.HP / tdPArmour) << endl;
     cout << "[#] DEF.ARMOUR is " << tdPArmour << " | DEF.HP is " << tDefender.HP << endl;
     cout << "[#] ATK.DAMAGE is " << tAttacker.HitDamage << endl;
    ///////// [/debug info]
   
    return itaPlayerHit;
};
Записан

Хобби: быдлокод™, графомания, иногда троллить шурфа | free bydlocode here
Nicklauster
Проверенные
**

Карма: +6/-0
Офлайн Офлайн

Сообщений: 155



Просмотр профиля
« Ответ #26 : 14 Февраль 2009, 00:11:59 »

Sacren, вот в этой строке

       NonBlockedDamage = tDefender.HP / tDefArmour;

tDefender.HP  и  tDefArmour не поленись тоже сделать типом float. Многие на таком попадаются
Записан

Sacren
сЭкрен
Глобальный модератор
*****

Карма: +8/-0
Офлайн Офлайн

Сообщений: 1262


Co-Founder


Просмотр профиля WWW
« Ответ #27 : 14 Февраль 2009, 00:27:32 »

ыыыы.... пасибки!! я повёлся на неявное преобразование типов, но, как видно, в этом случае оно не работает....
Записан

Хобби: быдлокод™, графомания, иногда троллить шурфа | free bydlocode here
Sacren
сЭкрен
Глобальный модератор
*****

Карма: +8/-0
Офлайн Офлайн

Сообщений: 1262


Co-Founder


Просмотр профиля WWW
« Ответ #28 : 14 Февраль 2009, 14:19:01 »

Наконец-то!!! 90ый билд завершился успехом! Оно работает!!!  ::laugh24.gif::

Размер 136 кб. Желающим качать отсюда:
h_tt_p://www.alivefantasy.110mb.com/products/en/future/codename_rpgame/rpgame-0.2.1.90.zip

0.2.1.90 )

что хочу внедрить как-нибудь потом:
* скиллы
* магию
* предметы (броня, оружие, напитки, и т.п.)

В индивидуальном порядке могу поделиться исходниками. Теоретически, без проблем должно компилироваться под линуксом, т.к.  я пользуюсь dev-c++, а эта IDE на minGW (GNU C++ под винды)
« Последнее редактирование: 14 Февраль 2009, 23:03:52 от Sacren » Записан

Хобби: быдлокод™, графомания, иногда троллить шурфа | free bydlocode here
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!