Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1730 • Страница 36 из 87<  1 ... 33  34  35  36  37  38  39 ... 87  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 26.07.2006
Turbo C++ v3.0 :)
Ща попробую на Борланд билдер 6.
А если я создам методы то получится что он без них приобразовывать не сможет, или я что-то недопонимаю?
Добавлено спустя 3 минуты, 28 секунд
Опа.... А на борланде все на раз закомпилилось... Почему Турбо Си++ не прокатывает?



Партнер
 

Member
Статус: Не в сети
Регистрация: 24.09.2004
Откуда: Belarus, Mensk
GrIfFiN7 писал(а):
или я что-то недопонимаю

Нет, все правильно. Мое IMHO: не стоит увлекаться неявными преобразованиями. Да и вообще если класс никак не связан с простым типом, то лучше организовать все в виде методов типа GetInt() и GetChar().

_________________
ruSpiegel.net - русское зеркало дотнета
Ваши любимые статьи и блоги, посвященные Microsoft .NET Framework, теперь и на русском языке.


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 26.07.2006
Ок, спасибо. Я просто упражнение делаю, так что меня это интересует в принципе, а не для какой то проги. :)


 

Member
Статус: Не в сети
Регистрация: 02.04.2006
Откуда: KyiV
Здравствуйте , уважаемые форумчане. Вот совсем недавно приступил к изучению языка cpp. дошел до операторов if else и тут появился какой-то непонятный подводный камень.Например, элементарная программка

main()
{
int number;
cout <<"Vvedite 4islo\n";
cin >> number;
if (number=2)
{ cout <<"Yes" <<endl;}
else
{ cout <<"NO"<<endl;}
return 0;
}

работает неправильно. при ввобде любого числа она отвечает все время Yes, при этом, если я поменяю if (number=2) на if (number=0) то будет все-время отвечать NO, я просто с ума с хожу, не могу понять, почему не работает. Пожалуйста, помогите :cry:
ЗЫ использую компилятор visual studio 6


 

Member
Статус: Не в сети
Регистрация: 30.11.2005
Мда. А операторы еще не осилил? Ну раз мучаешься, то вот:

Код:
main()
{
int number;
cout <<"Vvedite 4islo\n";
cin >> number;
if (number==2)
{ cout <<"Yes" <<endl;}
else
{ cout <<"NO"<<endl;}
return 0;
}


 

Member
Статус: Не в сети
Регистрация: 17.11.2003
Откуда: Петроской
хотел вот что спросить: имеются ли в С++ какие-либо "свои" библиотеки для работы с системными функциями или сетью, потому как пробывал включать всякие sys/stat.h unistd.h в стиле include <cunistd> но говорит типа нету. Неужели все-все включают всегда в глобальное пространство имен, посредством <***.h> ?


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 26.07.2006
mussy = в С++ это не "равно" а "приравнивание". А "равно" - ==. У тебя в условии переменная number приравнивается к числу 2, а число больше нуля - это true. Как у STXTSS там нужно поставить оператор ==.


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
mussy старая как мир уловка, оператор присваивания и сравнения.
maslyak это посиксовые либы, для сети тебе нужен Winsock, системные функции, я так полагаю Win32 API.

_________________
Ку ку


Последний раз редактировалось Daemon 02.05.2011 22:41, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 12.12.2003
Откуда: Уфа
Читаю Майерса, Эффективное использование c++ - он говорит, что наследование от стандартных контейнеров - зло, потому что у них деструкторы невиртуальные. Но если я, допустим, наследуюсь от std::list, и добавляю туда пару параметров и функции для работы с ними, и никаких указателей не использую, то зачем мне применять композицию - тогда придется добавлять в мой класс обертки для методов контейнера - push_back, push_front, size() и т.д. Это ведь трудоемко и как-то не по ООП. Кто как решает такие задачи?


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
kexman да, если ты не выделяешь никакой памяти в своем классе, то тебе побоку на виртуальные деструкторы. Метод с обертками - вполне такой себе ООП подход, посмотри паттерн адаптер, там как раз такое применяется. Выглядит конечно как костыль. Такие задачи решаются взависимости от конкретных требований.

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
Кстати, есть вопрос (правда больше о морали чем о программировании)

Есть код
Код:
main () {
   unsigned int max = 10000000;
   unsigned int i, j;
   unsigned short f[max];
   for(i = 2; i < max; i++) {
      if (f[i] != 1) {
         printf("%07d\n", i);
         for(j = i * i; j < max; j += i) {
            f[j] = 1;
         }
      }
   }
}

Писался он ради одного запуска по этому возможно качество кода не супер, с другой стороны хотелось бы узнать есть ли (в частности в этом коде) какие нибудь мелочи которые нормальным программистам было бы видеть "неприятно" (по аналогии с "дурным тоном" в HTML)

(а то в книгах этот вопрос как-то не широко освещён)

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
Код:
unsigned int max = 10000000;
short f[max];

Такую конструкцию не все компиляторы съедят. Хотя бы const к переменной max добавить что-ли. А лучше в куче отделять себе кусок памяти такого размера.
Код:
for(j = i * i; j < max; j += i)

i у нас от 2 до max, а max у нас большой. Соответственно i * i легко переполнится(4 байта всего для int). Или это часть хитрого алгоритма :D ?

А по стилистике у нас есть отдельная ветка . Кавычки ставишь как я прямо, только я лишние редко леплю из лени :) .


 

Member
Статус: Не в сети
Регистрация: 17.11.2003
Откуда: Петроской
Daemon неа :) gcc && Linux


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
mein писал(а):
Кавычки ставишь как

Ну с кавычками проблем вообще не испытываю, в РНР они такие же, а РНР код я уже вроде научился писать (по крайней мере много готовых скриптов перекопал и знаю что читается удобно а что нет)

А вот что касается
mein писал(а):
не все компиляторы съедят

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

mein писал(а):
i у нас от 2 до max, а max у нас большой. Соответственно i * i легко переполнится(4 байта всего для int). Или это часть хитрого алгоритма ?

Ну хитрого там ничего нет, типичное "решето Эратосфена", а на счёт переполнения логично, не посмотрел :)
(то-то он у меня на спектруме зависет, я уж было подумал что компилятор глючный)

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Я заметил, что не ответил на поставленный выше вопрос:
kexman
Цитата:
Думаю тоже какой-нибудь прикольный язык начать осваивать, типа Python или Hascell(не знаю как пишется). Думаю интересно.
Ну Хаскель, и функциональное программирование это пока джаст фо фан. А вот Python и С++ идут рука об руку, особенно что касается никс систем. Плюс Питон - язык широкого применения, имеет кучу биндов, к тем же QT, GTL+, заканчивая веб разработкой, типа Django, Turbogear. Даже реализация рефлекшен для С++ из Буста, использует питон.

Цитата:
Вопрос есть, как к профессионалу, можно ли научиться программированию, не имея специального образования?
Мне до профессионала еще далеко. Сам получаю инжинерную специальность. По идее я проектировщик, но незнаю ни VHDL, ни Verilog. С другой стороны, а что мне дал ВУЗ как программисту? Честно - ничего толкового, разве что на первом курсе предмет был Структуры данных и алгоритмы, чуть-чуть Кнута, Дейкстра. А такие вещи как теория построения компиляторов, не думаю что особо пригодится. Хотя фактически втроем написали компилятор паскаля для i8080, жуткий процессор :) Так что ответ - конечно да, главное - желание, и способности конечно.


GrIfFiN7 использование static_cast по-идее должно выручить.
Добавлено спустя 4 минуты, 49 секунд
maslyak так какие проблемы, делаем man recv к примеру и видим:
Цитата:
SYNOPSIS
#include <sys/types.h>
#include <sys/socket.h>

ssize_t
recv(int s, void *buf, size_t len, int flags);

ssize_t
recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from,
socklen_t *fromlen);

ssize_t
recvmsg(int s, struct msghdr *msg, int flags);
Вот и все.
virus Если это С, то дурной тон здесь, только невнятные названия переменных, max лучше сделать #define MAC_ARRAY_SIZE 100000. Ну и i*i вносит сомнения.

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 17.11.2003
Откуда: Петроской
Daemon проблема в том, что это не соответствует духу ООП, хотелось бы использовать try{} catch{} а также чтобы все переменные не висели в глобальном пространстве имен :(


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
:abuse:
http://www.crystalclearsoftware.com/cgi ... oostSocket
http://sourceforge.net/projects/giallo

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 09.08.2005
Откуда: Земля
Здравствуйте, помогите дописать программу
Дана матрица A[i j]. Получить матрицу B[i j] путём упорядовачиния строк исходной матрицы по возрастанию количества одинаковых элементов в каждой сторке. Пишу с динамическим массивом и функцией
Заранее спасибо!

Код:
#include <stdio.h>
#include <malloc.h>

void main ()
 {
 double **a,**b;
 int n,m,i,j;
 printf ("vvedite razmernost' massiva,strok: ");
 scanf("%d",&n);
 printf("\nstolbcov: ");
 scanf("%d",&m);
 printf ("vvedite nomera nygnblx strok strok");

 a=calloc(n,sizeof(double *));
 b=calloc(n,sizeof(double *));
 for (i=0;i<n;i++)
   {
   *(a+i)=calloc(m,sizeof(double));
   *(b+i)=calloc(m,sizeof(double));
   }
 for (i=0;i<n;i++)
 for (j=0;j<m;j++)
 scanf("%lf",*(a+i)+j);

 for (i=0;i<n;i++)
 {printf("\n");
 for (j=0;j<m;j++)
 printf("%.3lf ",*(*(a+i)+j)); }

 }


 

Member
Статус: Не в сети
Регистрация: 17.11.2003
Откуда: Петроской
Daemon отлично :) будем изучать, вот только не понятно, почему на офиц сайте boost.org про эту сокетовую библиотеку не сказано, либо я плохо смотрел.


 

Member
Статус: Не в сети
Регистрация: 12.12.2003
Откуда: Уфа
Вопросик есть - по поводу auto_ptr - когда его использовать? А когда обычные указатели+delete?

Сегодня вспомнил, как около полугода назад у меня "hellow world" не компилировалась. Поискал по инету, у всех была эта проблема, забывали using namespace std; писать:) И я упорно не понимал смысл этой фразы, поэтому писал ее просто не понимая. Вспомнил собственно потому что в книжке читал главу про пространства имен, теперь знаю чем отличаются using-директивы от using-объявлений) В этом на мой взгляд самая главная особненность c++ - вначале, ну нихрена не понятно, зато потом, в 1 прекрасный момент приходит понимание всей мощи:) (имею в виду, что понимаешь, что язык очень мощный, а не то что всю эту мощь знаешь и используешь)
Книжку по c++("С++ вводный курс", Липпман, Лажойе, 3 издание) я купил 2 года назад, хотел изучать, но честно говоря не понял там ровным счетом ничего, потому что ожидал, что в книге по языку программирования должна быть примерно такая структура:
1)переменные
2)операторы
3)арифметические функции
4)работа с графикой
и так далее. А там на меня обрушились все эти перегруженные функции, неймспейсы, конструкторы и виртуальные деструкторы :) В общем я разочаровался, и подумал, что зря потратил деньги. Зато сейчас понял, что купил очень хорошую книгу )


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1730 • Страница 36 из 87<  1 ... 33  34  35  36  37  38  39 ... 87  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan