Jump to content

Какво прави този код ?


Препоръчан пост

Как работи кода?Къде са грешките?Как да се поправят грешките?Как да се оптимизира кода?

 

if (size < 0 || size > neuronsAmount)

{

throw( "ANN00023" );

return;

}

memcpy(output, neurons+neuronsAmount-size, sizeof(double)*size);

 

Кодът е на C++ :) Това ми е дадено като домашно,но не мога да разбера какво прави този код.Плс кажете : )) БЛАГОДАРЯ ПРЕДВАРИТЕЛНО !!!

Link to comment
Сподели другаде

Значи този код проверява дали size е по-малко от нула или е по-голямо от neuronsAmount. Това може би проверява дали има грешка в стойността на size. И ако има вика функцията throw, с вх. параметър "ANN00023". И веднага след изпълнението на throw излиза от текущата функция. Не изпълнява нищо нататък.

Но според мен това е в тялото на try

Нещо като това:

try {       buf = new char[512];       if( buf == 0 )          throw "Memory allocation failure!";    } 

 

Ако е така значи има проверка дали тази големина size е по-малка от нула или е по-голяма от някаква граница neuronsAmount. И "хвърля" изключение(exception), което се прихваща от catch.

За тези try throw catch прочети това: http://msdn.microsoft.com/en-us/library/6dekhbbc%28VS.80%29.aspx.

 

memcpy(output, neurons+neuronsAmount-size, sizeof(double)*size); - output е адреса на първия байт от буфера, в който ще се прехвърлят данните.

neurons+neuronsAmount-size е адреса на първия байт от буфера където са данните, които ще бъдат прехвърлени.

sizeof(double)*size е размера на информацията(в байтове), която ще бъде прехвърлена.

Един пример:

char Name1[]="Sasho";
char Name2[]="Dimityr"; 
memcpy(Name2, Name1+2, 2);

Като резултат в Name2 ще има shmityr.

 

Като обобщение: тази част от кода проверява стойността на променливата, в която е записана големината на информацията, дали е коректна и ако е така - прехвърля. Ако не е - предава съобщение за грешка.

 

 

Link to comment
Сподели другаде

Значи този код проверява дали size е по-малко от нула или е по-голямо от neuronsAmount. Това може би проверява дали има грешка в стойността на size. И ако има вика функцията throw, с вх. параметър "ANN00023". И веднага след изпълнението на throw излиза от текущата функция. Не изпълнява нищо нататък.

Но според мен това е в тялото на try

Нещо като това:

try {       buf = new char[512];       if( buf == 0 )          throw "Memory allocation failure!";    } 

 

Ако е така значи има проверка дали тази големина size е по-малка от нула или е по-голяма от някаква граница neuronsAmount. И "хвърля" изключение(exception), което се прихваща от catch.

За тези try throw catch прочети това: http://msdn.microsoft.com/en-us/library/6dekhbbc%28VS.80%29.aspx.

 

memcpy(output, neurons+neuronsAmount-size, sizeof(double)*size); - output е адреса на първия байт от буфера, в който ще се прехвърлят данните.

neurons+neuronsAmount-size е адреса на първия байт от буфера където са данните, които ще бъдат прехвърлени.

sizeof(double)*size е размера на информацията(в байтове), която ще бъде прехвърлена.

Един пример:

char Name1[]="Sasho";
char Name2[]="Dimityr"; 
memcpy(Name2, Name1+2, 2);

Като резултат в Name2 ще има shmityr.

 

Като обобщение: тази част от кода проверява стойността на променливата, в която е записана големината на информацията, дали е коректна и ако е така - прехвърля. Ако не е - предава съобщение за грешка.

 

 

Благодаря !!!Доста работи научих от поста Ви ! : )

 

Как работи кода?Къде са грешките?Как да се поправят грешките?Как да се оптимизира кода?

 

for (int j=0; j<neuronsAmount; j++) {

for (int i=0; i<neuronsAmount; i++) {

activities[j] = MAX_ACTIVITY;

}

}

 

Учителят ни мъчи доста и сега ми е дал това :( (в момента изучаваме eзика C ,но ни дава домашни на C++ :X)

Link to comment
Сподели другаде

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гост
Отговори на тази тема

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   Не можете да качите директно снимка. Качете или добавете изображението от линк (URL)

Loading...
×
×
  • Създай ново...