Часть 2. Я начинающий, подскажите как...(Все вопросы начинающих!!!)
ListBox1->Columns=3;
каким образом записать строку в второй и третий столбцы?
не? .
На XP я копировал только сам *.exe файл, т.к. на моем девелоперском компе сам по себе он работал прекрасно, ввиду чего я посчитал, что и на пользовательском XP будет работать так же.
Вместе с *.exe скопировал идущий с ним файл *.exe.config - стало сразу работать.
Кстати, почему приложение не работало без этого файла и требовало 3.5 SP1, когда был установлен .NET Framework 4 - я так и не понял. Prerequisite при паблишинге были корректно настроены.
хотя, он конечно нулевый.
http://stackoverflow.com/questions/7383103/use-cout-cin-when-overloading-io-operators-in-c Как пример
# include<iostream>
# include<math.h>
using namespace std;
class Tcomplex
{ float a,b;
public:
Tcomplex(float an=0,float bn=0)
{
a=an;
b=bn;
return;
}
Tcomplex operator = (Tcomplex c)
{
a=c.a;
b=c.b;
return (*this);
}
void print ()
{
cout<<a<<"+"<<b<<"i"<<endl;
return;
} Tcomplex operator + (Tcomplex c)
{Tcomplex result;
result.a=a+c.a;
result.b=b+c.b;
return result;
}
Tcomplex operator - (Tcomplex c)
{
Tcomplex result;
result.a=a-c.a;
result.b=b-c.b;
return result;
}
Tcomplex operator * (Tcomplex c)
{
Tcomplex result;
result.a=a*c.a-b*c.b;
result.b=b*c.a+c.b*a;
return result;
}
Tcomplex operator / (Tcomplex c)
{
Tcomplex result;
result.a=(a*c.a+b*c.b)/(c.a*c.a+c.b*c.b);
result.b=(b*c.a-c.b*a)/(c.a*c.a+c.b*c.b);
return result;
}
void trig ()
{
float alpha;
alpha=atan(b/a);
cout<<this->getModule()<<"("<<"cos"<<alpha<<"+i sin"<<alpha<<")";
}
double getModule ()
{
return sqrt(a*a+b*b);
}
};
int main ()
{
float a,b;
setlocale(LC_ALL,"Russian");
cout<<"введите действительную часть числа ";
cin>>a;
cout<<"\n введите мнимую часть числа ";
cin>>b;
Tcomplex c (a,b);
cout<<"само число: "; c.print();
cout<<endl;
cout<<"введите слагаемое:"<<endl;
cout<<"введите действительную часть числа ";
cin>>a;
cout<<"\n введите мнимую часть числа ";
cin>>b;
Tcomplex c1 (a,b);
cout<<"слагаемое:"; c1.print();
cout<<endl;
cout<<"перегруженный оператор сложения ";
(c+c1+c1).print();
cout<<"перегруженный оператор вычитания ";
(c-c1-c1).print();
cout<<"перегруженный оператор умножения ";
(c*c1*c1).print();
cout<<"перегруженный оператор деления ";
(c/c1/c1).print();
cout<<"модуль первого числа: "<<c.getModule()<<endl;
cout<<"\n тригонометрическая: "; c.trig();
system("pause");
return 0;
}
# include<math.h>
using namespace std;
class Tcomplex
{
public:
float a,b;
Tcomplex(float an=0,float bn=0)
{
a=an;
b=bn;
}
Tcomplex operator = (Tcomplex c)
{
a=c.a;
b=c.b;
return (*this);
}
friend ostream& operator<<(ostream& os, const Tcomplex& tc)
{
os<<tc.a<<(tc.b>0?"+":"")<<tc.b<<"i";
}
friend istream& operator>>(istream& is,Tcomplex& tc)
{
cout<<"введите действительную часть числа ";
is>>tc.a;
cout<<"введите мнимую часть числа ";
is>>tc.b;
}
void print ()
{
cout<<a<<"+"<<b<<"i"<<endl;
}
Tcomplex operator + (Tcomplex c)
{
Tcomplex result;
result.a=a+c.a;
result.b=b+c.b;
return result;
}
Tcomplex operator - (Tcomplex c)
{
Tcomplex result;
result.a=a-c.a;
result.b=b-c.b;
return result;
}
Tcomplex operator * (Tcomplex c)
{
Tcomplex result;
result.a=a*c.a-b*c.b;
result.b=b*c.a+c.b*a;
return result;
}
Tcomplex operator / (Tcomplex c)
{
Tcomplex result;
result.a=(a*c.a+b*c.b)/(c.a*c.a+c.b*c.b);
result.b=(b*c.a-c.b*a)/(c.a*c.a+c.b*c.b);
return result;
}
void trig ()
{
float alpha;
alpha=atan(b/a);
cout<<this->getModule()<<"("<<"cos"<<alpha<<"+i sin"<<alpha<<")";
}
double getModule ()
{
return sqrt(a*a+b*b);
}
};
int main ()
{
Tcomplex c,c1;
cin>>c;
cout<<"само число: "<<c<<endl;
cout<<"введите слагаемое:"<<endl;
cin>>c1;
cout<<"слагаемое:"<<c1<<endl;
cout<<"перегруженный оператор сложения "<<c+c1+c1<<endl;
cout<<"перегруженный оператор вычитания "<<c-c1-c1<<endl;
cout<<"перегруженный оператор умножения "<<c*c1*c1<<endl;
cout<<"перегруженный оператор деления "<<c/c1/c1<<endl;
cout<<"модуль первого числа: "<<c.getModule()<<endl;
cout<<"тригонометрическая: ";
c.trig();
cout<<endl;
return 0;
}
{
os<<tc.a<<(tc.b>0?"+":"")<<tc.b<<"i";
}
можно к этому комментарий!!!
И у меня выходит ошибка на этом-<< должно возвращать значение!!!!
{
os<<tc.a<<(tc.b>0?"+":"")<<tc.b<<"i";
}
можно к этому комментарий!!!
И у меня выходит ошибка на этом-<< должно возвращать значение!!!!
(tc.b>0?"+":"") - если б положительное отображает "+", если нет - ничего (минус автоматически выводится)
Компилятор у меня g++ схавал такую конструкцию, попробуй заменить на
os<<tc.a;
if(tc.b>0)
os<<"+";
os<<tc.b<<"i";
{
os<<tc.a<<(tc.b>0?"+":"")<<tc.b<<"i";
}
friend istream& operator>>(istream& is,Tcomplex& tc)
{
cout<<"введите действительную часть числа ";
is>>tc.a;
cout<<"введите мнимую часть числа ";
is>>tc.b;
}
замени на
{
os<<tc.a<<(tc.b>0?"+":"")<<tc.b<<"i";
return os;
}
friend istream& operator>>(istream& is,Tcomplex& tc)
{
cout<<"введите действительную часть числа ";
is>>tc.a;
cout<<"введите мнимую часть числа ";
is>>tc.b;
return is;
}
Буду обращаться к тебе!
byte[] buf = new byte[8192];
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("мой урл");
request.ContentType = "text/plain;charset=""utf-8""";
request.Method = "Get";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
string tempString = null;
int count = 0;
do
{
count = resStream.Read(buf, 0, buf.Length);
if (count != 0)
{
tempString = Encoding.UTF8.GetString(buf, 0, count);
sb.Append(tempString);
}
}
while (count > 0);
string text = sb.ToString();
label3.Text = text;
Пишу с использованием MFC.
В классе приложения нужно обратиться к данным класса окна. Для этого пытаюсь привести типы:
{
...
}
class CFigureApp : public CWinApp
{
...
}
BOOL CFigureApp::InitInstance()
{
m_pMainWnd = new CMainWnd();
ASSERT(m_pMainWnd);
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
return TRUE;
};
void CFigureApp::setCircleParameters(CComPtr<IXMLDOMNode> spCircleNode)
{
CMainWnd* pMainWnd = dynamic_cast<CMainWnd *>(m_pMainWnd);
if (!pMainWnd)
{
diagfile << "dynamic_cast error" << std::endl;
return;
}
....
}
Приведение не работает: pMainWnd равно NULL
Приведение не работает: pMainWnd равно NULL
выведите заодно значение m_pMainWnd как указателя
#include "stdafx.h"
#include <iostream>
#include <locale>
#include <fstream>
using namespace std;
using std::cin;
using std::wcout;
using namespace System;
int main(array<System::String ^> ^args)
{
int k=0;
int n=0;
int i,j;
const int nstr=2, nstb=6;
int matrix [nstr][nstb];
for ( i=0; i<=nstr; i++)
for ( j=0; j<=nstb; j++)
{matrix[j]=k; k=k+1;}
for (int i=0; i<nstr; i++) {
cout<<'\n';
for (int j=0; j<nstb; j++)
cout<<*matrix[i,j]<<' ';
}
ofstream file ("C:/text.txt");
if (!file){Console::WriteLine(L"Поток не работает");}
file.write (reinterpret_cast <char *> (&matrix),sizeof matrix);
return 0;
}
for ( j=0; j<=nstb; j++)
{
matrix[j]=k;
k=k+1;
}
то произойдет выход за границы массива. Чтобы этого избежать, уберите знак равенства в циклах.
Во-вторых, когда вы пишите:
{
cout<<'\n';
for (int j=0; j<nstb; j++)
cout<<*matrix[i,j]<<' ';
}
почему бы не вывести элементы матрице в сишном стиле: cout << matrix[j] .
В-третьих, в файл пишите точно так же, как пишите в консоль:
{
for (int j=0; j<nstb; j++)
file << matrix[j] << ' ';
file << std::endl;
}
P.S. Зачем вы используете Managed C++?
Нужно написать базу данных на MFC. База данных => С начало вводим значения с параметрами => получаем в отдельном окне расчеты этих значений в одной большой таблице со значениями. Каждое значение получается по формуле. База динамически изменяется, если изменилось одно значение то остальные тоже меняются(в соседних ячейках). Пожалуйста, если есть у кого какая информация по реализации данной задачи дайте знать. Спасибо.
Помогите исправить ошибки=(((
Программа примерно такая:
создать класс множество, в котором содержится класс, представляющий элементы множества!
#include <iostream>
#include <math.h>
using namespace std;
class set
{
class element
{public:
element*next;
const int a;
element (int_a):a(_a)
next(NULL){}
void draw()
{printf("%d",a);}
}*e;
int count;
public:
set():e(NULL),count(0){}
~set()
{element*temp;
while (e!=NULL)
{temp=e;
e=e->next;
delete temp;
}
}count=0;
void add(int b)
{if(!e) {e=new element(b); count++; return;}
if(b<e->a)
{element*temp=new element(b);
temp->next=e;
e=temp;
count++;return;
}
if(b==e->a) return;
while(e->next) element*e1=e;
{if (b<=e1->next->a){
if(b==e1->next->a)return;
element temp=new element(b);
temp->next=e1->next;
e1->next=temp;
count++;return;}
e1=e1->next;}
element temp=new element(b);
count++;}
И еще необходимо для этих множеств написать функции объединения, пересечения и дополнения) то есть функции тоже будут возвращать множества...Помогите!!!
Помогите исправить ошибки=(((
Программа примерно такая:
создать класс множество, в котором содержится класс, представляющий элементы множества!
#include <iostream>
#include <math.h>
using namespace std;
class set
{
class element
{public:
element*next;
const int a;
element (int_a):a(_a)
next(NULL){}
void draw()
{printf("%d",a);}
}*e;
int count;
public:
set():e(NULL),count(0){}
~set()
{element*temp;
while (e!=NULL)
{temp=e;
e=e->next;
delete temp;
}
}count=0;
void add(int b)
{if(!e) {e=new element(b); count++; return;}
if(b<e->a)
{element*temp=new element(b);
temp->next=e;
e=temp;
count++;return;
}
if(b==e->a) return;
while(e->next) element*e1=e;
{if (b<=e1->next->a){
if(b==e1->next->a)return;
element temp=new element(b);
temp->next=e1->next;
e1->next=temp;
count++;return;}
e1=e1->next;}
element temp=new element(b);
count++;}
И еще необходимо для этих множеств написать функции объединения, пересечения и дополнения) то есть функции тоже будут возвращать множества...Помогите!!!
Описываем метод добавления нового элемента в множество, и перегрузить операторы && - пересечение множеств. || - объединение множеств и вроде / дополнение.
#include <conio.h>
#include <stdio.h>
class set
{
class element
{
public:
const int a;
element *next;
element(int _a):a(_a), next(NULL) { }
void draw()
{
printf("%d ",a);
}
} *first;
int count;
public:
set():first(NULL), count(0) { }
~set()
{
element *temp;
while (first != NULL)
{
temp = first;
first = first->next;
delete temp;
}
count = 0;
}
void add (int b)
{
element *first1 = first;
if (!first)
{
first = new element(b);
count++;
return;
}
if (b < first->a)
{
element *temp = new element(b);
temp->next = first;
first = temp;
count ++;
return;
}
if (first1->next == NULL)
{
if (b > first1->a)
{
element *temp = new element(b);
temp->next = NULL;
first1->next = temp;
count++;
return;
}
}
while (first1->next != NULL)
{
if (b == first1->a) return;
if (b < first1->next->a)
{
element *temp = new element(b);
temp->next = first1->next;
first1->next = temp;
count++;
return;
}
else//b >= first1->next->a
{
if (b == first1->next->a) return;
if (first1->next->next == NULL)
{
element *temp = new element(b);
temp->next = NULL;
first1->next->next = temp;
count++;
return;
}
first1 = first1->next;
}
}
}
void draw(void)
{
printf("\nMnogestvo: ");
element *first1 = first;
while (first1 != NULL)
{
first1->draw();
first1 = first1->next;
}
}
public:
bool chur(int b, set S);
set operator || (set S);
set operator && (set S);
set operator / (set S); //из 2 вычитает 1
};
bool set::chur(int b, set S)
{
for(element *temp = S.first; temp != NULL; temp = temp->next)
if (b == temp->a) return true;
return false;
};
set set::operator||(const set S)
{
set result = *this;
for(element *temp = S.first; temp != NULL; temp = temp->next)
if (!chur(temp->a, result))
result.add(temp->a);
return result;
};
set set::operator&&(const set S)
{
set result;
for(element *temp = S.first; temp != NULL; temp = temp->next)
if (chur(temp->a, result))
result.add(temp->a);
return result;
};
set set::operator/(const set S)
{
set result;
for(element *temp = S.first; temp != NULL; temp = temp->next)
if (!chur(temp->a, *this))
result.add(temp->a);
return result;
};
void main()
{
set A;
int choise=1;
while (choise != 0)
{
printf("\nDobavlenie: 1\nDraw: 2\nExit: 0\n");
scanf("%d", &choise);
if (choise == 1)
{
int a;
scanf("%d", &a);
A.add(a);
}
if (choise == 2)
A.draw();
}
scanf("%d", &choise);
if ( A.chur(choise, A) == true)
printf("YYYYYYYYYYYYYAAAAAAAAAAAAAAAZZZZZZZZZZZZZZZZZzzzz");
/*choise =1;
set B, C, D, E;
printf("\n\nZapolnite set2\n_______________________________________________________________");
while (choise != 0)
{
printf("\nDobavlenie: 1\nDraw: 2\nExit: 0\n");
scanf("%d", &choise);
if (choise == 1)
{
int a;
scanf("%d", &a);
B.add(a);
}
if (choise == 2)
B.draw();
}
C = A || B;
D = A && B;
E = A / B;
C.draw();
D.draw();
E.draw();*/
A.~set();
getch();
}
Помогите исправить ошибки.Не компилирует...
И сделать объединение данных множеств!
#include <conio.h>
#include <stdio.h>
class set
{
class element
{
public:
const int a;
element *next;
element(int _a):a(_a), next(NULL) { }
void draw()
{
printf("%d ",a);
}
} *e;
int count;
public:
set():e(NULL), count(0) { }
~set()
{
element *temp;
while (e != NULL)
{
temp = e;
e = e->next;
delete temp;
}
count = 0;
}
void set::add(int b)
{
element*i=e;
if(!i)
{
i=new element(b);
count++;
return;
}
if (b>=i->a)
{
if (i->a==b) return;
else
{
while (!(i->next==NULL)&&(b>=i->next->a))
i=i->next;
element*temp=new element(b);
temp->next=i->next;
i->next=temp;
count++;
return;
}
}
else
{
element*temp=new element(b);
temp->next=e;
e=temp;
return;
}
set*set::operator && (const set B)
{
set C;
element*ia=this->e;
element*ib=B.e;
while (ia!=NULL)
{
while (ib!=NULL)
{
if(ia->a==ib->a)
C.add(ia->a);
ia=ia->next;
else
{
if (ia->a>ib->a)
ib=ib->next;
else
ia=ia->next;
}
}
}
Господа, слабо представляю себе что находится внутри Linq-запросов, так что обращаюсь с вопросом, какой из методов-расширений окажется лучше в плане быстродействия:
{
foreach(T entry in self)
action(entry);
}
или
{
self.Any(entry =>
{
action(entry);
return false;
});
}
Тоесть даст ли LINQ'шное Any прирост в скорости обработки данных или наоборот окажется только медленнее из-за обработки результата (false).
Также интересует следующий момент: насколько медлительны методы ToList, ToArray и Cast?
Допускается ли такое:
Этот вариант будет работать медленнее предыдущих?
Конкретные цифры не интересуют, просто хотелось бы найти наилучший метод и заэкстеншить. :)
Настен
Леди, вы сошли с ума? Немедленно уберите весь этот кошмар! Весь свой код обрамляйте тегами code /code [в квадратных скобках], и пользуйтесь кнопкой "Редактировать". Когда приведете весь этот кошмар в читабельный вид - поясните, что именно не работает. Не компилируется? Работает неверно?
Помогите исправить ошибки,не компилирует...
и еще перегрузить оператор объединения...
#include <conio.h>
#include <stdio.h>
class set
{
class element
{
public:
const int a;
element *next;
element(int _a):a(_a), next(NULL) { }
void draw()
{
printf("%d ",a);
}
} *e;
int count;
public:
set():e(NULL), count(0) { }
~set()
{
element *temp;
while (e != NULL)
{
temp = e;
e = e->next;
delete temp;
}
count = 0;
}
void set::add(int b)
{
element*i=e;
if(!i)
{
i=new element(b);
count++;
return;
}
if (b>=i->a)
{
if (i->a==b) return;
else
{
while (!(i->next==NULL)&&(b>=i->next->a))
i=i->next;
element*temp=new element(b);
temp->next=i->next;
i->next=temp;
count++;
return;
}
}
else
{
element*temp=new element(b);
temp->next=e;
e=temp;
return;
}
set*set::operator && (const set B)
{
set C;
element*ia=this->e;
element*ib=B.e;
while (ia!=NULL)
{
while (ib!=NULL)
{
if(ia->a==ib->a)
C.add(ia->a);
ia=ia->next;
else
{
if (ia->a>ib->a)
ib=ib->next;
else
ia=ia->next;
}
}
}
1) Чем компилируете? Компиляторы имеют обыкновение ссылаться на строку и\или писать сообщение об ошибке компиляции. Есть такие? Продемонстрируйте.
2) Опишите, пожалуйста, исходную задачу теми словами, которыми вам ее задали.
2)Создать класс множество (set) по принципу стека.
Описать метод добавления нового элемента в множество, и перегрузить операторы && - пересечение множеств. || - объединение множеств.
#include <conio.h>
#include <stdio.h>
class set
{
class element
{
public:
const int a;
element *next;
element(int _a):a(_a), next(NULL) { }
void draw()
{
printf("%d ",a);
}
} *e;
int count;
public:
set():e(NULL), count(0) { }
~set()
{
element *temp;
while (e != NULL)
{
temp = e;
e = e->next;
delete temp;
}
count = 0;
}
void set::add(int b)
{
element*i=e;
if(!i)
{
i=new element(b);
count++;
return;
}
if (b>=i->a)
{
if (i->a==b) return;
else
{
while (!(i->next==NULL)&&(b>=i->next->a))
i=i->next;
element*temp=new element(b);
temp->next=i->next;
i->next=temp;
count++;
return;
}
}
else
{
element*temp=new element(b);
temp->next=e;
e=temp;
return;
}
// Где скобка, закрывающая void set:add?
set*set::operator && (const set B)
{
set C;
element*ia=this->e;
element*ib=B.e;
while (ia!=NULL)
{
while (ib!=NULL)
{
if(ia->a==ib->a)
C.add(ia->a);
ia=ia->next; // если это относится к if'у, то здесь тоже должны быть скобочки, если нет - далее будет ошибка в else
else
{
if (ia->a>ib->a)
ib=ib->next;
else
ia=ia->next;
}
}
}
// Где скобка, закрывающая set*set::operator && ?
// Где скобка, закрывающая class set?
Итого, у вас нехватает трех скобок (помечены комментариями в коде) и ошибка в одном if'е. Если весь остальной код правильный (в чем я сомневаюсь), то должно заработать.
И, раз уж вы заглянули к нам на огонек, позволю рассказать два правила, которые до вас, видимо, преподаватели не донесли:
1) Межу любыми конструкциями ставятся пробелы. То есть
вместо
должно быть
Вы будете удивлены, но читаемость кода от этого существенно повышается.
2) Названия классов, полей (переменных), методов (функций), констант и прочего до чего дотянутся ваши руки, должны быть читабельными, дающими представление о том, что в них содержится / что они делают.
Даже если сейчас вы еще помните что означает конструкция:
C.add(ia->a);
То через месяц уже не вспомните. А сторонние разработчики (коими в том числе являемся и мы, форумчане) сломают себе мозг, пытаясь разобраться в ваших одно/дву- буквенных наименованиях.
С наилучшими пожеланиями. Надеюсь, что помог.
---
[SIZE="6"]P.S. Господа программисты, мой вопрос все еще без ответа несколькими постами выше. =\[/SIZE]
только все равно не компилируется,та же ошибка либо"непредвиденное обнаружение конца файла"...
1) Пользуйтесь же кнопкой редактировать! Ей-ей, набегут модераторы - забанят на форуме до конца дней ваших! >.<
2) Синтаксически - точно также, как и доабвление. В плане внутренностей - С++ плохо знаю, кодом не помогу, но суть в общем-то проста: определяете размер первого объекта, размер второго объекта, выделяете требуемое количество памяти, копируете элементы первого объекта, копируете элементы второго объекта.
#include <conio.h>
#include <stdio.h>
class set
{
class element
{
public:
const int a;
element *next;
element(int _a):a(_a), next(NULL) { }
void draw()
{
printf("%d ",a);
}
} *e;
int count;
public:
set():e(NULL), count(0) { }
~set()
{
element *temp;
while (e != NULL)
{
temp = e;
e = e->next;
delete temp;
}
count = 0;
}
void set::add(int b)
{
element*i=e;
if(!i)
{
i=new element(b);
count++;
return;
}
if (b>=i->a)
{
if (i->a==b) return;
else
{
while (!(i->next==NULL)&&(b>=i->next->a))
i=i->next;
element*temp=new element(b);
temp->next=i->next;
i->next=temp;
count++;
return;
}
}
else
{
element*temp=new element(b);
temp->next=e;
e=temp;
return;
}
}
set*set::operator && (const set B)
{
set C;
element*ia=this->e;
element*ib=B.e;
while (ia!=NULL)
{
while (ib!=NULL)
{
if(ia->a==ib->a)
{C.add(ia->a);
ia=ia->next; }
else
{
if (ia->a>ib->a)
ib=ib->next;
else
ia=ia->next;
}
}
}
}
}
{
public:
const int number;
Element *next;
Element(int value) :number(value)
{
}
void Draw()
{
printf("%d ", number);
}
}; // не забываем ;
class Set
{
Element *element;
int count;
public:
Set() :count(0) { }
~Set()
{
Element *temp;
while (element != NULL)
{
temp = element;
element = element->next;
delete temp;
}
count = 0;
}
void Set::Add(int value)
{
Element *current = element;
if(!current)
{
current = new Element(value);
count++;
return;
}
if (current->number == value)
return;
else if (value > current->number)
{
while (!(current->next == NULL) && (value >= current->next->number))
current = current->next;
Element *temp = new Element(value);
temp->next = current->next;
current->next = temp;
count++;
}
else
{
Element *temp = new Element(value);
temp->next = element;
element = temp;
}
}
Set *Set::operator && (const Set anotherSet)
{
Set result;
Element *currentElement = element;
Element *anotherElement = anotherSet.element;
while (currentElement != NULL && anotherElement != NULL)
{
if(currentElement->number == anotherElement->number)
{
result.Add(currentElement->number); // Вот тут не уверен, сдается мне, что добавлять нужно вообще-то в this, а не в ваш новый объект... Но вам виднее.
currentElement = currentElement->next;
}
else
{
if (currentElement->number > anotherElement->number)
anotherElement = anotherElement->next;
else
currentElement = currentElement->next;
}
}
return &result; // Если добавляем все-таки не в this, тогда нужно вернуть хоть какой-нибудь результат
}
}; // не забываем ;
Держи, и больше не греши.
P.S. После закрывающих скобок классов также нужно ставить ;
А что значит точка входа не определена?
А что значит точка входа не определена?
Это значит, что приложение не знает - откуда ему начаться. Обычно, точкой входа является метод (функция) main.
Господа, слабо представляю себе что находится внутри Linq-запросов, так что обращаюсь с вопросом, какой из методов-расширений окажется лучше в плане быстродействия:
{
foreach(T entry in self)
action(entry);
}
или
{
self.Any(entry =>
{
action(entry);
return false;
});
}
Тоесть даст ли LINQ'шное Any прирост в скорости обработки данных или наоборот окажется только медленнее из-за обработки результата (false).
Наверняка второй способ хуже. Потому что лямбда преобразуется в дополнительный класс с методом, который и будет вызываться. А уже внутри этого метода будет вызываться Action. То есть на каждой итерации два вызова, вместо одного.
Допускается ли такое:
Этот вариант будет работать медленнее предыдущих?
Скорей всего да, работать будет медленнее. Время будет затрачено именно на преобразование последовательности в список или массив.
Тут ещё нужно понимать, что Enumerable, пока к нему не обратились, как бы и не существует. И память не отнимает зря. А List и Array всегда занимают место. Поэтому, многое может зависеть от источника Enumerable. Если последовательность очень большая, в несколько гигов, то её преобразование в массив может сожрать всю оперативку, заработает своп... ой-ой-ой!..
P.S. в написанном не уверен, не проверял.
P.P.S. для скорости можно попробовать enumerable.AsParallel().ForAll.
Time& operator=(const Time&)
Time t1;
Time t3.
int k;
t3=t1; //работает
t3=(t1+=k) // работает только с оператором присваивания по умолчанию. с моим, перегруженным, - нет.
Time& Time::operator=(const Time &tm) {
if( this != &tm )
{
h = tm.h;
m = tm.m;
s=tm.s;
}
return *this;
}
что не так?