Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 629 • Страница 28 из 32<  1 ... 25  26  27  28  29  30  31  32  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 07.01.2010
рекурсию не стоит делать, кмк медленнее получится :) вот в первом примере всё как раз так, как я представлял:) думаю, если включить самую злую оптимизацию в компиляторе, чтобы он и used, и flag и dig разместил в регистрах - будет хорошая производительность



Партнер
 

Junior
Статус: Не в сети
Регистрация: 19.10.2009
Альтруист писал(а):
winforms это вообще то шарп

Windows Froms - это не только C#, но и C++ и VB и вообще вся VS.

_________________
GA-945GCM-S2L, Celeron Dual-core E3200 @2.00GHz (пассив), 2.5GB RAM @451MHz, GeForce 6600 GT 128MB, Mac OS X 10.6.2 Snow Leopard


 

Member
Статус: Не в сети
Регистрация: 09.01.2009
Откуда: Москва
Как передать матрицу через параметры, указывая индексы в заголовке функции и в прототипе с помощью переменных?
Передает матрицу только, если указать в ручную индексы. А совсем без индексов не хочет передаваться, в отличии от одномерного массива.
Работает:
Код:
int vvodX(int,int,int [2][5]);
void main(void)
{
 const int m=2,n=5;
 int X[m][n];
 X[m][n]=vvodX(m,n,X);
}
int vvodX(int m, int n, int X[2][5])
{
 return X[m][n];
}

Не работает:
Код:
int vvodX(int,int,int [m][n]);
void main(void)
{
 const int m=2,n=5;
 int X[m][n];
 X[m][n]=vvodX(m,n,X);
}

int vvodX(int m, int n, int X[m][n])
{
 return X[m][n];
}


Короче говоря, как передать динамическую матрицу в другую функцию?


 

Member
Статус: Не в сети
Регистрация: 20.03.2009
Откуда: Санкт-Петербург
test'~3
Юзай указатели. А в данном примере матрица не динамическая.

_________________
Задачи бывают простыми и очень простыми...


 

Member
Статус: Не в сети
Регистрация: 09.01.2009
Откуда: Москва
Danmerpro писал(а):
test'~3Юзай указатели.

К статическому массиву применять указатель? Или ты про динамический?


 

Member
Статус: Не в сети
Регистрация: 20.03.2009
Откуда: Санкт-Петербург
test'~3
У тебя ведь массив статический. Указатель тоже можно,но как-то муторно будет. Кстати поставь во втором варианте в прототип и в описание ф-ии заместо n число, тогда будет работать.

_________________
Задачи бывают простыми и очень простыми...


 

Member
Статус: Не в сети
Регистрация: 09.01.2009
Откуда: Москва
Danmerpro писал(а):
test'~3
У тебя ведь массив статический. Указатель тоже можно,но как-то муторно будет. Кстати поставь во втором варианте в прототип и в описание ф-ии заместо n число, тогда будет работать.

Первая от второй только и отличаются m,n и числом. Просто если делать динамический массив, то я не знал как передать матрицу, ведь ручками уже не написать индексы, т.к. размер матрицы не известно.


 

Member
Статус: Не в сети
Регистрация: 07.01.2010
второй вариант естественно не работает, т.к. на стадии компиляции m и n неизвестны, а матрицу ты пытаешься передать 1 куском памяти. в случае динамического выделения памяти под матрицу ты выделишь массив под указатели, а затем каждый указатель будет указывать на строку матрицы, и передавать соответственно надо как in ** matrix.

поясню:
в случае статического выделения памяти под 2-мерный массив выделяется 1 сплошной кусок памяти, и когда берёшь из него элемент [i][j], фактически берётся элемент [i*LEN+j]. естественно, в этом случае компилятор уже должен знать размер этого массива. твой первый пример заработал бы, если перенести определение const int m=2,n=5; в глобальные переменные.
в случае динамического выделения получается примерно такая картинка:
#77
и выделять память надо так:
Код:
int ** matrix;
matrix = (int **)malloc(n * sizeof(int*));
for (i = 0; i < n; i++)
  matrix[i] = (int *)malloc(m * sizeof(int));

дальше можно будет пользоваться как обычно
Код:
matrix[i][j] = 0;


 

Member
Статус: Не в сети
Регистрация: 09.01.2009
Откуда: Москва
Не знаю еще что это за malloc и cizeof. Не могли бы просто привести пример передачи одномерного массива и матрицы по значению или по ссылке или указателем. Просто написать прототип, заголовок функции, вызов функции и возвращение.


 

Member
Статус: Не в сети
Регистрация: 07.01.2010
динамический или статический? в случае статического всё просто - надо сразу указывать размер. в случае динамического - по указателю типа int* для одномерного массива и int** для двумерного (матрицы).

а про указатели учи. указатели и работа с памятью - это то, что каждый С программист обязан знать.


 

Member
Статус: Не в сети
Регистрация: 17.10.2005
Цитата:
Не знаю еще что это за malloc и cizeof.

malloc - выделение памяти (от MemoryAllocation) нужного размера. размер в данном случае - количество элементов, помноженное на размер типа данных - sizeof.


 

Member
Статус: Не в сети
Регистрация: 03.09.2010
Откуда: Санкт-Петербург
Помагите с задачкой

Напишите функцию, которая в линейном двунаправленном списке удваивает каждое
вхождение элемента E.

Зарание спасибо


 

Member
Статус: Не в сети
Регистрация: 17.10.2005
Вопрос по Visual Studio - можно ли настроить редактор кода так, чтобы он подсвечивал на странице все вхождения выделенного слова (желательно только переменные)? Примерно как это делает notepad++.


 

Member
Статус: Не в сети
Регистрация: 03.04.2010
Откуда: Полоцк
Delin
2010-я умеет такое делать сама.

_________________
955BE•TT BT VX•M4A78T-E•KVR1333D3N9K2/4G•ST31000528AS•WD15EARS-00MVWB0•WD20EARX•HD4870 VAPOR-X 1GB•INWIN IP-S550AQ3-0


 

Member
Статус: Не в сети
Регистрация: 17.10.2005
AlimAlex
Только для C#, на С++ этой фичи нет :-x


 

Member
Статус: Не в сети
Регистрация: 02.02.2007
Откуда: Казахстан
в Visual c++ 2010 в справочнике есть пример использования rvalue reference, однако при копировании выдается ошибка (error C2440:невозможно преобразовать "MemoryBlock" в "MemoryBlock &&")
Код:
// A class that contains a memory resource.
class MemoryBlock
{
   // TODO: Add resources for the class here.
};

void g(const MemoryBlock&)
{
   std::cout << "In g(const MemoryBlock&)." << std::endl;
}

void g(MemoryBlock&&)
{
   std::cout << "In g(MemoryBlock&&)." << std::endl;
}

MemoryBlock&& f(MemoryBlock&& block)
{
   g(block);
   [b]return [u]block[/u][/b];
}


если заменять эту строчку на return std::forward<MemoryBlock>(block) или просто преобразовать в тип && явно, то ошибки нет
это просто ошибка в примере или сам компилятор не верно работает (может в сп1 испрввлена эта ошибка) ?


 

Member
Статус: Не в сети
Регистрация: 20.12.2005
Откуда: Волгоград
Подскажите камрады!
Как в Visual'e, при выводе матрицы округлить значения до n-го знака после запятой?

_________________
Все в этом Мире имеет какой то смысл. В нем нет ничего бесполезного или случайного...


 

Member
Статус: Не в сети
Регистрация: 07.01.2010
если форматируешь через принтфовский формат, то
Цитата:
format
String that contains the text to be written to stdout.
It can optionally contain embedded format tags that are substituted by the values specified in subsequent argument(s) and formatted as requested.
The number of arguments following the format parameters should at least be as much as the number of format tags.
The format tags follow this prototype:

%[flags][width][.precision][length]specifier

ну и т.д.
http://www.cplusplus.com/reference/clib ... io/printf/

будет у тебя там что-то типа %.10f, к примеру


 

Member
Статус: Не в сети
Регистрация: 20.12.2005
Откуда: Волгоград
ToSHiC, спасибо, завтра буду смотреть.
Скажите ещё вот что, насколько тяжело будет сделать простейший интерфейс для программы.
3 кнопки, одно поле для ввода значения и поле для вывода значений матриц.
В Borland C++Builder это реализуется путём привязки функций к кнопкам, как это делается в Visual'e?

_________________
Все в этом Мире имеет какой то смысл. В нем нет ничего бесполезного или случайного...


 

Member
Статус: Не в сети
Регистрация: 20.03.2009
Откуда: Санкт-Петербург
GrifeX писал(а):
как это делается в Visual'e?

Делается так же. Когда нужно было сдавать летнюю практику в mfc, то читал тут http://www.firststeps.ru/mfc/steps/mfc1.html Можно попробовать ещё в QT сделать.

_________________
Задачи бывают простыми и очень простыми...


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 629 • Страница 28 из 32<  1 ... 25  26  27  28  29  30  31  32  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  

Лаборатория














Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan