IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

5 страниц V < 1 2 3 4 5 >  
Closed Topic Открыть новую тему 
> Ряд вопрсов по C++.
сообщение
Сообщение #41


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 14.06.2008 18:06) *
Тут точно все, как надо? Может I не нужно?
точно.. спасибо..
Цитата(volvo @ 14.06.2008 18:06) *
Кстати, обрати внимание на предупреждение... Лучше приводить результат к типу int явным образом...
а вот тут не понял( ты с какими ключами компилируешь?

Вопрос #7.1
это нормально вызывать конструктор для i несколько раз или этого надо избегать?


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #42


Гость






Цитата
а вот тут не понял( ты с какими ключами компилируешь?
С какими бы ключами ты не компилировал, попытка сделать:

vector<int> triangular(number_el); //ряд Треугольных чисел
for(int i(0); i<number_el; ++i)
triangular[ i ]=0.5*(i*i+3)+1; // int <- double

на уважающем себя компиляторе приведет к Warning-у... Я компилирую с -Wall (причем всегда...), GCC 3.4.5 + Code::Blocks

Цитата
это нормально вызывать конструктор для i несколько раз или этого надо избегать?
Избегать за счет предварительного описания переменной что-ли? Я все-таки предпочитаю делать время жизни переменной минимальным... Кстати, почему именно такая форма? Вот так не проще для восприятия:
for(int i = 0; i < number_el; ++i) {
...

?

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #43


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 14.06.2008 18:43) *
С какими бы ключами ты не компилировал, попытка сделать... на уважающем себя компиляторе приведет к Warning-у...
хм.. мой g++ (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu7) ничего не говорит, даже с -Wall((
Цитата(volvo @ 14.06.2008 18:43) *
Избегать за счет предварительного описания переменной что-ли?
да.. должно, наверно, экомится время на конструктор/деструктор.. или оно ничтожно?
Цитата(volvo @ 14.06.2008 18:43) *
Вот так не проще для восприятия..
Лично мне все равно)) Ну, а потом, этот способ остался для совместимости с Си, насколько мне известно..

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

Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #44


Гость






Цитата
да.. должно, наверно, экомится время на конструктор/деструктор.. или оно ничтожно?
Можешь объяснить, с чего ты взял, что i = 0 ("оператор =") будет выполняться быстрее, чем конструктор для POD-типа, которым является int? rolleyes.gif

Цитата
Ну, а потом, этот способ остался для совместимости с Си, насколько мне известно..
Какой именно? Тот, которым пользуешься ты? Стандарт С++ открой, и посчитай, сколько там таких способов... А сколько - присваивания smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #45


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 14.06.2008 20:29) *
Можешь объяснить, с чего ты взял, что i = 0 ("оператор =") будет выполняться быстрее, чем конструктор для POD-типа, которым является int? rolleyes.gif
я имел немножко другое, может лучше один раз объявить i, а потом один раз вызвать деструктор?
Цитата(volvo @ 14.06.2008 20:29) *
Какой именно? Тот, которым пользуешься ты? Стандарт С++ открой, и посчитай, сколько там таких способов... А сколько - присваивания smile.gif
насчет наследования Си, я руководствывался Липпманом*(это конечно не стандарт))). Там же несколько "преимуществ" нововведенного способа. Хотя сам Липпман, в последующих листингах пользуется оператором присваиванияblush.gif

*-Стэнли Липпман "Основы программирования на С++". Издательство "Вильямс" 2002год. глава 1.2 (страница 26, 6-я строка)
Цитата
Использования для инициализации оператора присваивания (=) унаследовано от языка С.


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #46


Гость






Цитата
я имел немножко другое, может лучше один раз объявить i, а потом один раз вызвать деструктор?
Еще раз: в каждом цикле (в разделе инициализации, до первой точки с запятой оператора for) для объявленного тобой где-то сверху i будет вызываться "operator ="? Будет, иначе ты не присвоишь i правильное стартовое значение... Вопрос: кто тебе сказал, что для int конструктор будет выполняться медленнее, чем "operator ="?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #47


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 15.06.2008 11:41) *
.. Вопрос: кто тебе сказал, что для int конструктор будет выполняться медленнее, чем "operator ="?
хм.. не знаю)
а как вообще можно засеч время выполнения программмы(урывка) на с++ ? (это вопрос #8 )


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #48


Гость






Цитата
как вообще можно засеч время выполнения программмы(урывка)

Попробуй:
#include <ctime>
...
clock_t t_start = clock();

// здесь идет сам код ...

clock_t t_finish = clock();
cout << "Время выполнения = " <<
(static_cast<float>(t_finish - t_start)/CLOCKS_PER_SEC) << " секунд" << endl;

(можешь не делить на CLOCKS_PER_SEC, получишь время в тиках процессора)

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #49


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 15.06.2008 12:44) *
Попробуй..
спасибо..теперь буду знать..


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #50


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


прошу прощения.. дурацкая ошибка... назвал счетчик cout..

Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #51


Гость






Цитата
почему все так?(
Потому что:
	int cout(0); // <--- cout здесь - это int
...
cout << endl << "Вектор:" << endl; // Что бы ЭТО значило ???

 К началу страницы 
+ Ответить 
сообщение
Сообщение #52


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 17.06.2008 15:05) *
Потому что:
спасибо, дкрацкое название выбрал дя переменной.. может буду теперь писать std::cout)


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #53





Группа: Пользователи
Сообщений: 2
Пол: Мужской

Репутация: -  0  +


c++
Помогите пожалуйсто!
Нужно решение двух задач для зачета:
1Матрица:
Получить целочисленную квадратную матрицу порядка 7, элементами которой являются числа 1, 2, ..., n, расположенные в ней по спирали.
2Рекурсия:
Пусть
x(1)=y(1)=1;x(i)=x(i-1)+y(i-1)/i^2;
y(i)=y(i-1)+x(i-1)/i,i=2,3,...
Получить x(n),y(m), если n, m -натуральные.
Зарание спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #54


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


вопрос № n ;
Как подключить свой модуль к програме ?


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #55


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


файл положи в папку с основным cpp файлом и
 #include "myfile.h"; 


например ...

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #56


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


У меня вопрос, как сделать это с шаблонам ?

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

Мне не нужен код, а какой нибудь пример на заданную тему ...


#include <string>
#include <iostream>
#include <fstream>
#include<memory>
using namespace std ;
//******************************************************************
class base {
public :
virtual void print () = 0 ;
} ;
//***************************************************************

class printmonitor : public base {
string outString ;

public :
printmonitor (const string& userString) {outString = userString;}
void print () {cout << outString ;}
~printmonitor () ;
} ;
//***************************************************************

class printinfile : public base {
string outString ;

public :
printinfile (const string& userString ) {outString = userString ;}
void print () ;
~printinfile() ;
} ;

//***************************************************************

void printinfile::print () {


ofstream out("outfile.txt",ios::out) ;
if(!out) {cout <<"Cannot open file test for writing " << endl ; }
out << outString ;
out.close () ;
}
//***************************************************************
int main()
{

//pprintmonitor = new printmonitor("test my program 1");
//pprintinfile = new printinfile("test my program 2");
auto_ptr<base> pprintmonitor (new printmonitor("test my program 1")) ;
auto_ptr<base> pprintinfile (new printinfile("test my program 2")) ;
pprintmonitor->print();
pprintinfile->print();

//delete pprintmonitor;
//delete pprintinfile ;

return 0 ;
}



Сообщение отредактировано: renesko1 -


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #57


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


Ладно более конкретный вопрос..
"класс имеет необходимую функцию " - те функцию print() или перегруженный оператор << ?
"идет проверка времени компиляции" - как она осуществляется , ну или что это такое ?


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #58


Гость






cool.gif
#include <iostream>
// для VC придется добавить еще и <assert.h>

using namespace std;

class myA {
public:
void Print() {
cout << "first Print()" << endl;
}
};

class myB {
public:
void Print() {
cout << "second Print()" << endl;
}
};

class myC {
public:
void Oops() {
;
}
};


template<class T>
class TBase
{
bool ValidateRequirements()
{
void (T::*test)() = &T::Print;
test;
return true;
}

public:
~TBase()
{
assert( ValidateRequirements() );
}

// ...
};


int main() {
TBase<myA> first; // Ok
TBase<myB> second; // Ok
TBase<myC> third; // ha-ha : )

return 0;
}



Вот такое сообщение:
Цитата
error: `Print' is not a member of `myC'

достаточно информативно?

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #59


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


smile.gif Как всегда помог, спасибо, а то у меня уже всё кипеть начинало, до меня просто суть задания не правильно дошла. Всмысле отказатся от иерархии и сделать через шаблоны, а я, как дурак, хотел совместить.


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #60


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


mingw.
У меня вопрос: есть ли встроенная графическая библиотека, мне достаточно вывода линий, кругоd и тд, те.
примерно как модуль graph в pascale.

Сообщение отредактировано: renesko1 -


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

5 страниц V < 1 2 3 4 5 >
Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 4:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name