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

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

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

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> RE: Вопросы по C/C++ (Для новичков)
Имя
Сообщение << Старые топики   Новые топики >>
RE: Вопросы по C/C++ (Для новичков) - 2010-05-04 02:53:58.550000   
Lost_boy

Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
Препроцессор делает замену, в итоге мы получаем х+1 * х + 1
Если х = 3, то выходит:
3+1*3+1 = 7
ч.т.д. =))
Post #: 1561
RE: Вопросы по C/C++ (Для новичков) - 2010-05-04 02:57:22.456666   
Denaturat

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

ORIGINAL: yurket

как в таком случае происходит макроподстановка и происходит ли она вообще???


printf("\nAfter pwr: x=%d", x+1*x+1);

quote:

ORIGINAL: yurket

каков механизм работы define в данном случае?


такой же, как и всегда - обыкновенная текстовая замена

используй gcc -E и не задавай глупых вопросов
Post #: 1562
RE: Вопросы по C/C++ (Для новичков) - 2010-05-04 10:34:21.890000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Макроподстановка происходит перед компиляцией. x*x попробуй взять в скобки и понаблюдай за результатом.
Post #: 1563
RE: Вопросы по C/C++ (Для новичков) - 2010-05-04 18:40:03.800000   
yurket

Сообщений: 69
Оценки: 0
Присоединился: 2009-05-04 23:47:54.993333
спасибо за ответы….
PS реально, что-то затупил… в следующий раз перед тем как задать вопрос, дождусь утра…
Post #: 1564
RE: Вопросы по C/C++ (Для новичков) - 2010-05-06 10:45:56.320000   
Pak63

Сообщений: 8
Оценки: 0
Присоединился: 2010-05-04 15:40:42.533333
Привет помогите решить лабу
Дается множество точек на плоскости.Нужно взять три такие точки которые образуют треугольник.В который входит наибольшее количество точек этого множества.и вывести три эти точки и число точек которые он включает.
Post #: 1565
RE: Вопросы по C/C++ (Для новичков) - 2010-05-06 15:05:24.853333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333

quote:

ORIGINAL: Pak63

Привет помогите решить лабу

Давай поможем, что ты уже сам написал и что не получается?
Post #: 1566
RE: Вопросы по C/C++ (Для новичков) - 2010-05-06 16:17:14.860000   
Lost_boy

Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
quote:

ORIGINAL: _SaZ_

Давай поможем, что ты уже сам написал и что не получается?

Ответ будет как всегда - я не сделал, у меня нет времени/знаний решите за меня.
Post #: 1567
RE: Вопросы по C/C++ (Для новичков) - 2010-05-07 12:46:36   
Pak63

Сообщений: 8
Оценки: 0
Присоединился: 2010-05-04 15:40:42.533333
Почему же нет есть маленько

#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { int size_n; cout &lt;&lt; "Enter n: "; cin &gt;&gt; size_n; if (size_n &gt; 0) { point *q = new point [size_n]; int pit(point somearray[], const int n); cout &lt;&lt; "Enter matxrix " &lt;&lt; size_n &lt;&lt; " x 3" &lt;&lt; endl; for (int i = 0; i &lt; size_n; i++) { double v_x, v_y, v_z; cin &gt;&gt; v_x &gt;&gt; v_y &gt;&gt; v_z; q[i].set_point(v_x, v_y, v_z); } cout &lt;&lt; pit (q, size_n); delete[] q; } return 0; } int pit(point somearray[], const int n) { const double eps = 0.2; int max = 0; for (int a = 0; a &lt; n - 2; a++) for (int b = a + 1; b &lt; n - 1; b++) for (int c = b + 1; c &lt; n; c++) { triangle abc; abc.set_points(somearray[a], somearray[b], somearray[c]); double g, k, l; l = 0; k = abc.get_surface(); for (int d = 0; d &lt; n; d++) { g = 0.0; if ((d != a) &&(d != b) && (d != c)) { abc.set_points(somearray[d], somearray[b], somearray[c]); g+= abc.get_surface(); abc.set_points(somearray[a], somearray[d], somearray[c]); g+= abc.get_surface(); abc.set_points(somearray[a], somearray[b], somearray[d]); g+= abc.get_surface(); cout &lt;&lt; k &lt;&lt; ": " &lt;&lt; g &lt;&lt; endl; if ((fabs(k - g)) &lt; eps) l++; } else l++; } if (max &lt; l) max = l; } return max; }
Post #: 1568
RE: Вопросы по C/C++ (Для новичков) - 2010-05-07 12:50:56.283333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Тэги [code] и выравнивание кода для кого придумали?
Post #: 1569
del - 2010-05-08 10:07:09.803333   
Sunzer

Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
del
Post #: 1570
RE: Вопросы по C/C++ (Для новичков) - 2010-05-08 13:03:06.596666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
char section_name_1[8] = "1231234"; замени на strcpy( section_name_1, "1231234" );
Post #: 1571
RE: Вопросы по C/C++ (Для новичков) - 2010-05-08 17:05:35.420000   
a13xb

Сообщений: 17
Оценки: 0
Присоединился: 2010-03-12 06:22:14.200000
del
Post #: 1572
RE: Вопросы по C/C++ (Для новичков) - 2010-05-08 17:25:04.803333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Sunzer, ещё раз. Если в гугле ввести название функции, то можно легко найти её описание (это я про realloc и обнуление памяти). Ты настолько занят, что тебе лень хэлп открыть?
Post #: 1573
RE: Вопросы по C/C++ (Для новичков) - 2010-05-08 17:54:25.540000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
bash $ man rtfm
Post #: 1574
RE: Вопросы по C/C++ (Для новичков) - 2010-05-08 18:58:10.356666   
Sunzer

Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
del
Post #: 1575
RE: Вопросы по C/C++ (Для новичков) - 2010-05-08 19:23:55.933333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Гугл по ключевому слову realloc сразу выдаёт ссылку - http://www.cplusplus.com/reference/clibrary/cstdlib/realloc/
Там что-нибудь про обнуление памяти сказано?

Для сравнения calloc - http://www.cplusplus.com/reference/clibrary/cstdlib/calloc/
Post #: 1576
RE: Вопросы по C/C++ (Для новичков) - 2010-05-08 20:38:24.126666   
TimSkywalker

Сообщений: 7
Оценки: 0
Присоединился: 2010-03-21 06:08:04.610000
В книже написанно, оператор косвенного обращения к члену класса (->) используется для доступа к членам класса, обьект которого расположен в динамической памяти.
То есть когда обьект класса обычный то используется (.) оператор прямого доступа
а когда обьект класса создан динамически то используется ->
Ну вот я пищу в MS Visual Studio 2008 Express edition вот например у меня строка
Frisky->GetAge(); где Frisky обьект класса CAT и он расположен в динамической памяти(с помощью оператора new) ну а GetAge() - функция член класса
в этой строке компилятор пишет ошибку а когда вместо -> ставлю . то все норм работает
в чем дело обьясните мож стандарты какие-то изменились книга то старая
Post #: 1577
RE: Вопросы по C/C++ (Для новичков) - 2010-05-08 21:16:37.096666   
Sрam

Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
Гммм то-есть ты выделяешь память динамически, обращаешься через стрелку, а у тебя ошибка?
Post #: 1578
RE: Вопросы по C/C++ (Для новичков) - 2010-05-09 04:31:37.963333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
На пальцах:
struct ST { int val1; int val2; }; ST item; ST* pItem; // Нам наср*ть, кто выделяет память, // т.к. это не имеет никакого отношения к операторам обращения к полям структур pItem = &item; item.val1 = 5; pItem-&gt;val1 = 6; (*pItem).val1 = 7; (&item)-&gt;val1 = 8;
А вообще RTFM помогает и в этом случае. И на будущее, если что-то "не работает", то стоит приводить текст ошибки, который выдаёт компилятор. Как правило, он содержит ответы на такие вопросы.
Post #: 1579
RE: Вопросы по C/C++ (Для новичков) - 2010-05-09 04:58:46.123333   
iidsp

Сообщений: 379
Оценки: 0
Присоединился: 2009-10-14 23:13:19.856666
пишу не в тут тему, но в той теме никто ничего не ответит:
пишу на ассемблере - задали курсовик. Это моя первая "большая" работа на асме, так что глаза уже вылезают от кучи экспоненциально появляющихся меток и всяких ходов туда-сюда(понимаю теперь пагубность использования go to). Препод требует что бы в макроуровне (в теле программы) были только вызовы подпрограмм, т.е. нечто подобное
Start:
call proc1
call proc2

call procn
Start end

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

Встает вопрос, как в таких случаях поступать, если в какой-то из процедур есть условия, в зависимости от которых, мы идем по той или иной цепочке подпрограмм, которая(цепочка) совсем не обязательно совпадает с той, которую я вынесу в макроуровень, а часто бывает такое, что, находясь, например, в proc5, нужно пропустить proc6, proc7 … что бы начать программу с proc1. От этого я завел переменную(Flag), которая в зависимости от условия, принимающую то или иное значение (у меня уже список на бумажке этих значений) и я в каждой подпрограмме, которую я вынес в макроуровень ставлю в начале проверки на значения это переменной(что уже бесит), что позволяет мне либо пропускать эту подпрограмму, либо выполнять… короче, говнокод получается. Мне что бы на другой день вспомнить все переходы и условия, приходится чуть ли не заново осмысливать то. что я вчера написал - это ппц!
Post #: 1580
RE: Вопросы по C/C++ (Для новичков) - 2010-05-09 11:44:25.810000   
Sunzer

Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
iidsp что то не понятно, ты просто жалуешся что на асме трудно большие программы кодить?

quote:

а часто бывает такое, что, находясь, например, в proc5, нужно пропустить proc6, proc7

поставь в proc5 перед ret, xor eax,eax

call proc5
test eax,eax
je skip
call proc6
call proc7
skip:
Post #: 1581
RE: Вопросы по C/C++ (Для новичков) - 2010-05-09 12:33:57.326666   
iidsp

Сообщений: 379
Оценки: 0
Присоединился: 2009-10-14 23:13:19.856666
quote:

iidsp что то не понятно, ты просто жалуешся что на асме трудно большие программы кодить?

жалобы чисто риторические - без взывания жалеть меня! просто мысли в слух; вопросы про то, как лучше сделать;
Ну да, не просто писать большие программы… в одном файле, а потом скролить все это. Тем более, что пишу я в голимой оболочке(сделанной у нас в универе), в которой нет ничего, кроме элементарного отладчика. да же подсветки нет- голый нотпаде-style. Вот и представь, как мне приходится искать каждый раз нужную процедуру…

quote:

поставь в proc5 перед ret, xor eax,eax

call proc5
test eax,eax
je skip
call proc6
call proc7
skip:

спасибо, конечно, но я о подобном я думал, но, спрашивая у одногруппников понял, то ли они не знают, то ли нельзя в макроуровне(с точки зрения нашего препода) ставить какие-либо условия - только одни колы колы колы…
Post #: 1582
RE: Вопросы по C/C++ (Для новичков) - 2010-05-09 15:14:44.606666   
TimSkywalker

Сообщений: 7
Оценки: 0
Присоединился: 2010-03-21 06:08:04.610000
Вот моя не большая программа :
#include &lt;iostream&gt; using namespace std; class CAT { public: &nbsp; CAT(int age) { itsAge = age; } &nbsp; int GetAge() const {return itsAge;} private: &nbsp; int itsAge; }; CAT &amp; MakeCat(int age) { &nbsp; CAT * pCat = new CAT(age); &nbsp; return *pCat; } int main () { &nbsp; int age = 7; &nbsp; CAT Boots = MakeCat(age); &nbsp; cout &lt;&lt; "Boots is "&lt;&lt; Boots.GetAge() &lt;&lt;" yerars old"&lt;&lt;endl; &nbsp; return 0; } почему в строке Boots.GetAge() нужна . а не -> ведь получается что Boots присваивается обьект который создается в функции MakeCat и создается та он в динамической памяти
Post #: 1583
RE: Вопросы по C/C++ (Для новичков) - 2010-05-09 16:05:13.086666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
quote:

ORIGINAL: TimSkywalker

почему в строке Boots.GetAge() нужна . а не -&gt; ведь получается что Boots присваивается обьект который создается в функции MakeCat и создается та он в динамической памяти

Я выще всё написал, учись читать и учи мат часть. Точка и стрелочка не имеют абсолютно никакого отношения к тому, как ты выделяешь память.

P.S. и кто будет освобождать память, которую ты выделил в MakeCat?

P.P.S. и зачем такие извращения с созданием объектов? Почему бы просто не написать: CAT Boots( 7 );
Post #: 1584
RE: Вопросы по C/C++ (Для новичков) - 2010-05-09 17:21:58.463333   
TimSkywalker

Сообщений: 7
Оценки: 0
Присоединился: 2010-03-21 06:08:04.610000
Читать умею вообщем я разобрался  и вопрос тогда к чему имеют отношение точка и стрелка ?
и еще по поводу освобождения памяти если я в main() добавлю :
&nbsp; CAT *ppCat = &amp;Boots; &nbsp; delete ppCat; &nbsp; ppCat = 0;
то это нормально(корректно)?
P.S а изварщения…это пример в книге такой…
Post #: 1585
RE: Вопросы по C/C++ (Для новичков) - 2010-05-09 18:55:42.573333   
BatonXAK

Сообщений: 1137
Оценки: 0
Присоединился: 2007-03-02 20:44:00.803333
Вопрос по спискам как добавить элемент после заданного написал функцию но она не пашет хотя компилится!
void addElement_num(List& theList) { Item* curItem= theList.itsFirst; // указатель на начало списка Item* newItem=new Item; //указатель на новый элемент списка int Pos; // позиция std::cout&lt;&lt;"Enter the position of added item"&lt;&lt;std::endl; std::cin&gt;&gt;Pos; for(int i=0; i&lt;Pos ; i++) { if(curItem) { curItem=curItem-&gt;elemNext; } } newItem-&gt;elemNext=curItem-&gt;elemNext; curItem-&gt;elemNext=newItem; }
И как заполнить список данными из файла?? Прога виснет при заполнении.
std::ifstream in_file ("file_name.txt"); // заполнение списка void list_in_file(List& theList) { while (!in_file.eof()) { Item* newItem=new Item; //указатель на новый элемент списка in_file.get(newItem-&gt;strok,32); if(theList.itsFirst) { theList.itsFirst-&gt;elemNext=newItem; theList.itsFirst=newItem; } theList.itsFirst=newItem; newItem-&gt;elemNext=0; } std::cout&lt;&lt;"Item was added"&lt;&lt;std::endl&lt;&lt;std::endl; }
Post #: 1586
RE: Вопросы по C/C++ (Для новичков) - 2010-05-09 22:56:25.540000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: TimSkywalker
Читать умею вообщем я разобрался и вопрос тогда к чему имеют отношение точка и стрелка ?

Почитай про указатели и ссылки на структуры/классы.


quote:

ORIGINAL: BatonXAK
Вопрос по спискам как добавить элемент после заданного написал функцию но она не пашет хотя компилится!
[…]

А вот скажи мне, что будет делать твой код, когда список пуст? И что код будет делать, когда элементов в нём <Pos? По-моему, он попытается разадресовать нулевой указатель.
Post #: 1587
RE: Вопросы по C/C++ (Для новичков) - 2010-05-09 23:40:50.440000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Читать реализацию STL не буду советовать :D
Post #: 1588
RE: Вопросы по C/C++ (Для новичков) - 2010-05-09 23:42:57.276666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333

quote:

ORIGINAL: TimSkywalker

Читать умею вообщем я разобрался  и вопрос тогда к чему имеют отношение точка и стрелка ?
и еще по поводу освобождения памяти если я в main() добавлю :
CAT *ppCat = &Boots; delete ppCat; ppCat = 0;
то это нормально(корректно)?
P.S а изварщения…это пример в книге такой…

Нет, это неправильно. Вообще, мне непонятно, зачем тебе функция, которая создаёт экземпляр? Ты фабрику классов написать хочешь? Если уж сильно хочется - то возвращай указатель на объект.
Post #: 1589
RE: Вопросы по C/C++ (Для новичков) - 2010-05-10 17:51:36.296666   
kazrulit

Сообщений: 79
Оценки: 0
Присоединился: 2009-07-22 14:23:31.770000
Ввожу:

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
setlocale(0,"");
double x;
cout<<"Введите синус"<<endl;
cin>>x;
double k=sin(x);
cout<<k<<endl;


system("pause");
return 0;
}

без ошибок но ответ sin не правильный =(
Post #: 1590
RE: Вопросы по C/C++ (Для новичков) - 2010-05-10 18:18:29.420000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: kazrulit
без ошибок но ответ sin не правильный =(

Почему ты решил, что он неправильный?
Post #: 1591
RE: Вопросы по C/C++ (Для новичков) - 2010-05-10 18:19:32.883333   
kazrulit

Сообщений: 79
Оценки: 0
Присоединился: 2009-07-22 14:23:31.770000
Кароче синус получилось надо окаста на 180 разделить и умножить на Pi
теперь с косинусом не могу разобраться
Post #: 1592
RE: Вопросы по C/C++ (Для новичков) - 2010-05-10 18:20:41.553333   
kazrulit

Сообщений: 79
Оценки: 0
Присоединился: 2009-07-22 14:23:31.770000
rgo я на таблицу смотрю
Post #: 1593
RE: Вопросы по C/C++ (Для новичков) - 2010-05-10 18:22:24.860000   
yurket

Сообщений: 69
Оценки: 0
Присоединился: 2009-05-04 23:47:54.993333
вводи x в радианах…
Post #: 1594
RE: Вопросы по C/C++ (Для новичков) - 2010-05-10 18:27:05.533333   
kazrulit

Сообщений: 79
Оценки: 0
Присоединился: 2009-07-22 14:23:31.770000
как?)
Post #: 1595
RE: Вопросы по C/C++ (Для новичков) - 2010-05-10 18:29:44.820000   
yurket

Сообщений: 69
Оценки: 0
Присоединился: 2009-05-04 23:47:54.993333
так же как и вводил, только в радианах
http://ru.wikipedia.org/wiki/Радиан
Post #: 1596
RE: Вопросы по C/C++ (Для новичков) - 2010-05-10 19:57:14.543333   
mecar

Сообщений: 2
Оценки: 0
Присоединился: 2010-05-10 19:49:29.493333
Извиняюсь, отбой тревоги.
Post #: 1597
RE: Вопросы по C/C++ (Для новичков) - 2010-05-11 18:45:20.400000   
rat_splinter

Сообщений: 40
Оценки: 0
Присоединился: 2007-12-15 02:23:31.840000
Помогите) вобщем пишу програмку для вызова функции из dll, вот собственно код
/* Загружаем DLL в память */ HINSTANCE exLib = LoadLibrary("dll.dll"); // вот на этой строке компилятор жутка материться if (exLib == NULL) { printf("ERROR: unable to load DLL\n"); return 1; } Вот эта ошибка вылазит:: error C2664: LoadLibraryW: невозможно преобразовать параметр 1 из 'const char [12]' в 'LPCWSTR' Компилировал Visual C++ 2008, экспресс…. Плиз подскажите что не так
Post #: 1598
RE: Вопросы по C/C++ (Для новичков) - 2010-05-11 18:48:15.430000   
Lost_boy

Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
Читай ошибку внимательно, там есть ответ.
Вот описание этой функции: http://msdn.microsoft.com/en-us/library/ms684175%28VS.85%29.aspx
Нужно сделать преобразование типов.
Post #: 1599
RE: Вопросы по C/C++ (Для новичков) - 2010-05-11 18:49:17.150000   
rat_splinter

Сообщений: 40
Оценки: 0
Присоединился: 2007-12-15 02:23:31.840000
Мерси=) ща гляну
Post #: 1600
Страниц:  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
Все форумы >> [Компилируемые языки] >> RE: Вопросы по C/C++ (Для новичков)







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

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