RE: Вопросы по C/C++ (Для новичков)
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
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 ч.т.д. =))
|
|
|
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 и не задавай глупых вопросов
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-04 10:34:21.890000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Макроподстановка происходит перед компиляцией. x*x попробуй взять в скобки и понаблюдай за результатом.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-04 18:40:03.800000
|
|
|
yurket
Сообщений: 69
Оценки: 0
Присоединился: 2009-05-04 23:47:54.993333
|
спасибо за ответы…. PS реально, что-то затупил… в следующий раз перед тем как задать вопрос, дождусь утра…
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-06 10:45:56.320000
|
|
|
Pak63
Сообщений: 8
Оценки: 0
Присоединился: 2010-05-04 15:40:42.533333
|
Привет помогите решить лабу Дается множество точек на плоскости.Нужно взять три такие точки которые образуют треугольник.В который входит наибольшее количество точек этого множества.и вывести три эти точки и число точек которые он включает.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-06 15:05:24.853333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: Pak63 Привет помогите решить лабу Давай поможем, что ты уже сам написал и что не получается?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-06 16:17:14.860000
|
|
|
Lost_boy
Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
|
quote:
ORIGINAL: _SaZ_ Давай поможем, что ты уже сам написал и что не получается? Ответ будет как всегда - я не сделал, у меня нет времени/знаний решите за меня.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-07 12:46:36
|
|
|
Pak63
Сообщений: 8
Оценки: 0
Присоединился: 2010-05-04 15:40:42.533333
|
Почему же нет есть маленько #include <iostream>
#include <cmath>
using namespace std;
int main()
{
int size_n;
cout << "Enter n: ";
cin >> size_n;
if (size_n > 0)
{
point *q = new point [size_n];
int pit(point somearray[], const int n);
cout << "Enter matxrix " << size_n << " x 3" << endl;
for (int i = 0; i < size_n; i++)
{
double v_x, v_y, v_z;
cin >> v_x >> v_y >> v_z;
q[i].set_point(v_x, v_y, v_z);
}
cout << 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 < n - 2; a++)
for (int b = a + 1; b < n - 1; b++)
for (int c = b + 1; c < 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 < 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 << k << ": " << g << endl;
if ((fabs(k - g)) < eps)
l++;
}
else l++;
}
if (max < l)
max = l;
}
return max;
}
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-07 12:50:56.283333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Тэги [code] и выравнивание кода для кого придумали?
|
|
|
del - 2010-05-08 10:07:09.803333
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
del
|
|
|
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" );
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-08 17:05:35.420000
|
|
|
a13xb
Сообщений: 17
Оценки: 0
Присоединился: 2010-03-12 06:22:14.200000
|
del
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-08 17:25:04.803333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Sunzer, ещё раз. Если в гугле ввести название функции, то можно легко найти её описание (это я про realloc и обнуление памяти). Ты настолько занят, что тебе лень хэлп открыть?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-08 17:54:25.540000
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
bash $ man rtfm
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-08 18:58:10.356666
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
del
|
|
|
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/
|
|
|
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() - функция член класса в этой строке компилятор пишет ошибку а когда вместо -> ставлю . то все норм работает в чем дело обьясните мож стандарты какие-то изменились книга то старая
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-08 21:16:37.096666
|
|
|
Sрam
Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
|
Гммм то-есть ты выделяешь память динамически, обращаешься через стрелку, а у тебя ошибка?
|
|
|
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->val1 = 6;
(*pItem).val1 = 7;
(&item)->val1 = 8;
А вообще RTFM помогает и в этом случае. И на будущее, если что-то "не работает", то стоит приводить текст ошибки, который выдаёт компилятор. Как правило, он содержит ответы на такие вопросы.
|
|
|
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), которая в зависимости от условия, принимающую то или иное значение (у меня уже список на бумажке этих значений) и я в каждой подпрограмме, которую я вынес в макроуровень ставлю в начале проверки на значения это переменной(что уже бесит), что позволяет мне либо пропускать эту подпрограмму, либо выполнять… короче, говнокод получается. Мне что бы на другой день вспомнить все переходы и условия, приходится чуть ли не заново осмысливать то. что я вчера написал - это ппц!
|
|
|
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:
|
|
|
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: спасибо, конечно, но я о подобном я думал, но, спрашивая у одногруппников понял, то ли они не знают, то ли нельзя в макроуровне(с точки зрения нашего препода) ставить какие-либо условия - только одни колы колы колы…
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-09 15:14:44.606666
|
|
|
TimSkywalker
Сообщений: 7
Оценки: 0
Присоединился: 2010-03-21 06:08:04.610000
|
Вот моя не большая программа :
#include <iostream>
using namespace std;
class CAT
{
public:
CAT(int age) { itsAge = age; }
int GetAge() const {return itsAge;}
private:
int itsAge;
};
CAT & MakeCat(int age)
{
CAT * pCat = new CAT(age);
return *pCat;
}
int main ()
{
int age = 7;
CAT Boots = MakeCat(age);
cout << "Boots is "<< Boots.GetAge() <<" yerars old"<<endl;
return 0;
} почему в строке Boots.GetAge() нужна . а не -> ведь получается что Boots присваивается обьект который создается в функции MakeCat и создается та он в динамической памяти
|
|
|
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() нужна . а не -> ведь получается что Boots присваивается обьект который создается в функции MakeCat и создается та он в динамической памяти Я выще всё написал, учись читать и учи мат часть. Точка и стрелочка не имеют абсолютно никакого отношения к тому, как ты выделяешь память. P.S. и кто будет освобождать память, которую ты выделил в MakeCat? P.P.S. и зачем такие извращения с созданием объектов? Почему бы просто не написать: CAT Boots( 7 );
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-09 17:21:58.463333
|
|
|
TimSkywalker
Сообщений: 7
Оценки: 0
Присоединился: 2010-03-21 06:08:04.610000
|
Читать умею вообщем я разобрался и вопрос тогда к чему имеют отношение точка и стрелка ? и еще по поводу освобождения памяти если я в main() добавлю :
CAT *ppCat = &Boots;
delete ppCat;
ppCat = 0; то это нормально(корректно)? P.S а изварщения…это пример в книге такой…
|
|
|
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<<"Enter the position of added item"<<std::endl;
std::cin>>Pos;
for(int i=0; i<Pos ; i++)
{
if(curItem)
{
curItem=curItem->elemNext;
}
}
newItem->elemNext=curItem->elemNext;
curItem->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->strok,32);
if(theList.itsFirst)
{
theList.itsFirst->elemNext=newItem;
theList.itsFirst=newItem;
}
theList.itsFirst=newItem;
newItem->elemNext=0;
}
std::cout<<"Item was added"<<std::endl<<std::endl;
}
|
|
|
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? По-моему, он попытается разадресовать нулевой указатель.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-09 23:40:50.440000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Читать реализацию STL не буду советовать :D
|
|
|
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 а изварщения…это пример в книге такой… Нет, это неправильно. Вообще, мне непонятно, зачем тебе функция, которая создаёт экземпляр? Ты фабрику классов написать хочешь? Если уж сильно хочется - то возвращай указатель на объект.
|
|
|
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 не правильный =(
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-10 18:18:29.420000
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
quote:
ORIGINAL: kazrulit без ошибок но ответ sin не правильный =( Почему ты решил, что он неправильный?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-10 18:19:32.883333
|
|
|
kazrulit
Сообщений: 79
Оценки: 0
Присоединился: 2009-07-22 14:23:31.770000
|
Кароче синус получилось надо окаста на 180 разделить и умножить на Pi теперь с косинусом не могу разобраться
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-10 18:20:41.553333
|
|
|
kazrulit
Сообщений: 79
Оценки: 0
Присоединился: 2009-07-22 14:23:31.770000
|
rgo я на таблицу смотрю
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-10 18:22:24.860000
|
|
|
yurket
Сообщений: 69
Оценки: 0
Присоединился: 2009-05-04 23:47:54.993333
|
вводи x в радианах…
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-10 18:27:05.533333
|
|
|
kazrulit
Сообщений: 79
Оценки: 0
Присоединился: 2009-07-22 14:23:31.770000
|
как?)
|
|
|
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/Радиан
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-10 19:57:14.543333
|
|
|
mecar
Сообщений: 2
Оценки: 0
Присоединился: 2010-05-10 19:49:29.493333
|
Извиняюсь, отбой тревоги.
|
|
|
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, экспресс…. Плиз подскажите что не так
|
|
|
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 Нужно сделать преобразование типов.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2010-05-11 18:49:17.150000
|
|
|
rat_splinter
Сообщений: 40
Оценки: 0
Присоединился: 2007-12-15 02:23:31.840000
|
Мерси=) ща гляну
|
|
|
|
|