Сообщения пользователя m9yt — Форум CodeNet
« Вернуться к профилю пользователя m9yt
44K
23 мая 2011 года
m9yt
25 / / 27.02.2010
252
23 мая 2011 года
1.4K / / 07.09.2005
Цитата: [koderAlex](#)
код корявый , но ничего сверхсложного . и комментарии есть .
в чкаком месте непонятно ?
Он нерабочий. Нужно поправить, чтобы работало. Ошибка, скорее всего, при записи в 3 массив.
44K
23 мая 2011 года
m9yt
25 / / 27.02.2010
252
23 мая 2011 года
1.4K / / 07.09.2005
Добрый вечер.
Парюсь с задачей, уже надоела...
Сама задача: Вычесть из массива в дополнительном сегменте массив, хранимый в сегменте данных, при условии неравенства элементов. Массив-разность разместить в сегменте данных.
[Свернуть исходник](#)
Код:
title lab4
page ,132
;сегмент стека
sta segment para stack 'stack'
db 255 dup('stack') ; область стека
sta ends
;сегмент данных
dseg segment
str1 db 'Enter mas1:$'
str2 db 'Enter mas2:$'
str3 db 'Result:'
mas1 db 10 dup ('$') //1 массив
mas3 db 10 dup ('$')// 3 массив
dseg ends
eseg segment
mas2 db 10 dup ('$') // 2 массив
eseg ends
subttl lab5
page
;сегмент кода
cseg segment
assume cs:cseg,ds:dseg,ss:sta,es:eseg
entry proc far ;начало процедуры
push ds ;сохраняем в стек начальное значение ds
sub ax,ax ;обнуляем ax
push ax
mov ax,dseg ;инициализация адреса сегмента данных
mov ds,ax
mov ah, 09h ;сообщение №1
mov dx, offset str1
int 21h
mov ah, 0Ah
mov dx, offset mas1 ; вводим первый массив
int 21h
mov dl,0ah
mov ah,2
44K
20 сентября 2010 года
m9yt
25 / / 27.02.2010
Цитата: [MegaMozg](#)
Весь код рисования должен находиться в обработчике OnPaint:
Код:
void CMainWnd::OnPaint()
{
CPaintDC dc(this); // получаем контекст устройства
dc.Rectangle(10, 10, 150, 150); // рисуем прямоугольник
}
А эта функция заставит окно перерисоваться, когда надо нам, например, нажатие клавиши или щелчек кнопкой мыши - функцию нужно вызывать в обработчике соответствующего сообщения
Код:
void CWnd::InvalidateRect(LPRECT pRegion,
BOOL EraseBackground = TRUE);
В Вашем сообщении по делу я ничего не нашел, т.к. это итак уже использую
44K
20 сентября 2010 года
m9yt
25 / / 27.02.2010
Цитата: [@pixo $oft](#)
Не знаю,как в MFC,но есть такая штука,как контекст устройства.Так вот,при разворачивании окна оный перерисовывается,поэтому вам надо либо а)как посоветовали,в обработчике событий перерисовки заново рисовать круги,б)т.к. при большом количестве объектов перерисовывать всё–дело геморное,создать контекст в памяти и потом просто выводить его
Знать бы, как им пользоваться
44K
20 сентября 2010 года
m9yt
25 / / 27.02.2010
Привет всем.
Пишу программу с ипользованием MFC, но есть проблемка. Когда что-то нарисую( например, на клавишу 1 рисуется квадрат, а на 2-круг и т.д.), а потом сверну(разверну) окно, то всё исчезает. Как можно сделать, чтобы ничего не исчезало?
44K
22 июня 2010 года
m9yt
25 / / 27.02.2010
Цитата: [Norgat](#)
читай ещё раз и внимательно:
а если менять местами просто эл-ты гл. диагонали, то зачем используется индекс j?
Код:
if (matr[i+1][i+1]>matr)
{
trash=matr[i+1][j];
matr[i+1][j]=matr[j];
matr[j]=trash;
}
надо бы:
Код:
trash = matr[i+1][i+1];
matr[i+1[i+1] = matr;
matr = trash;
индекс j здесь используется для обмена строк. т.е. мы меняем строки , двигаясь по стобцам и меняем элементы одной строки с другой, находящейся на i+1 ниже
44K
22 июня 2010 года
m9yt
25 / / 27.02.2010
Цитата: [Norgat](#)
читай ещё раз и внимательно:
так что ли: int trash[4];
Тогда как к нему обращаться в цикле?
44K
22 июня 2010 года
m9yt
25 / / 27.02.2010
Цитата: [Norgat](#)
на вскидку...
сделай цикл for (int i=0; i<3 ; i++)
т.к. у тебя if (matr>matr[i+1][i+1]) при i = 3 вылезет за размерность матрицы
п.с. trash - должен быть одномерным массивом размерности 4, т.к. тебе нужно поменять местами строки матрицы, а не элементы гл. диагонали.
Ошибка исчезла, но сортирует неправильно(думаю, эта версия сортирует по возрастанию)
сделал вот так:
[Свернуть исходник](#)
Код:
void sort(int matr [][4])
{
int i, j, trash;
for (int i=0; i<4 ; i++)
{
for (int j=3; j>i-1; j--)
{
if (matr[i+1][i+1]>matr)
{
trash=matr[i+1][j];
matr[i+1][j]=matr[j];
matr[j]=trash;
}
}
}
}
Для матрицы выдает:
5 3 4 3
9 9 5 7
4 8 2 7
4 6 9 2
5 9 5 7 //5 из 1 строки не поменлась с 9 из 2 строки
9 3 4 3
4 8 2 7
4 6 9 2
44K
22 июня 2010 года
m9yt
25 / / 27.02.2010
Подогнал к своей задаче:
[Свернуть исходник](#)
Код:
void sort(int matr [][4])
{
int i, j, trash;
for (int i=0; i<4 ; i++)
{
for (int j=0; j<4; j++)
{
if (matr>matr[i+1][i+1])
{
trash=matr[j];
matr[j]=matr[i+1][j];
matr[i+1][j]=trash;
}
}
}
}
вылетает с ошибкой stack around the variable 'matr' was corruped
44K
22 июня 2010 года
m9yt
25 / / 27.02.2010
Привет всем!
Прошу помощи в непростой, на мой взгляд, задаче.
Заранее скажу, что код - не самое важное. Главное - это алгоритм, хочу разобраться как именно вначале делать, а потом уже кодить.
А задача следующая:
Дана квадратная матрица. Упорядочить строки матрицы по убыванию элементов ее главной диагонали.
Еще раз повторюсь, для меня тут сложен механизм работы с индексами.
Заранее спасибо.
44K
02 июня 2010 года
m9yt
25 / / 27.02.2010
Всем привет. нашел алгоритм сортировки Хоара через рекурсию.
Применил его к своему классу(объекты этого класса находятся в массиве), но ничего не сортируется.
[Свернуть исходник](#)
Код:
void Hoar(Product *b[], int N)
{
int i=0,j=N;
Product *p, *temp;
p = b[N>>1];
do
{
while (b->Get_Name()< p->Get_Name()) i++;
while (b[j]->Get_Name()> p->Get_Name()) j--;
if (i <= j)
{
temp=b;
b=b[j];
b[j]=temp;
i++;
j--;
}
}
while (i<=j);
if (j>0) Hoar(b,j);
if (N>i) Hoar(b+i,N-i);
}
Product* a[100];//перед вызовом функции Hoar() массив заполнен указателями на объекты.
Hoar(a, collection->size()-1);
В чем может быть проблема?
44K
13 мая 2010 года
m9yt
25 / / 27.02.2010
Цитата: [Artem_3A](#)
говорю же, писал на первом курсе, сохранилось это дело чудом, чего там писал уже помню смутно, так что сильно не пинайте за сроком давности. автору вообще посоветовал бы использовать вместо массивов вектора.
У меня итак вектор используется
Или ты о функции SortMerge2 говоришь?
44K
13 мая 2010 года
m9yt
25 / / 27.02.2010
44K
13 мая 2010 года
m9yt
25 / / 27.02.2010
Нашел в инете алгоритм,[Image Processing](http://r.codenet.ru/?http://iproc.ru/parallel-programming/lection-6/), подогнал его под свой вектор, а в результате программа завершается аварийно.Исправьте, пожалуйста меня!
Эти функции определены в классе Programm
Код:
bool cmp(ID* obj1, ID* obj2){return obj1->id>obj2->id;}
bool cmp2(ID* obj1, ID* obj2){return obj1->id<=obj2->id;}
[Свернуть исходник](#)
Код:
void Programm::Merge(MyCollection *A, int nA,
MyCollection * B, int nB,
MyCollection * C)
{
int a(0), b(0);
while( a+b < nA+nB )
{
if( (b>=nB) || ( (a<nA) && cmp2(A->at(a),B->at(b))))
{
C->at(a+b) = A->at(a);
++a;
} else {
C->at(a+b) = B->at(b);
++b;
}
}
}
[Свернуть исходник](#)
Код:
void Programm::MergeSort(MyCollection *collection , int n)//n=collection->size()
{
ID* t;//указатель на абстр класс
int i=0;
if( n < 2 ) return;
if( n ==
44K
10 мая 2010 года
m9yt
25 / / 27.02.2010
Привет всем.
Мне необходимо отсортировать контейнер multimap по убыванию, в контейнере находятся объекты моего класса, в котором 2 поля.Сортировать нужно по 1-вому полю типа string.
При создании контейнера элементы благополучно сортируются по возрастанию( в классе перегружен оператор <).
Но вот что написано в методичке:
"некоторые алгоритмы могут не поддерживать используемые в вашей программе контейнеры. Например, алгоритм sort не поддерживает контейнеры, которые не имеют итераторов произвольного доступа. В этом случае следует написать свой алгоритм. Например, для стека алгоритм сортировки может выполняться следующим образом: переписать стек в вектор, отсортировать вектор, переписать вектор в стек.
При перемещении элементов ассоциативного контейнера в неассоциативный перемещаются только данные (ключи не перемещаются). И, наоборот, при перемещении элементов неассоциативного контейнера в ассоциативный должен быть сформирован ключ.
Вопрос в том, как сформировать этот ключ?
Вот мои наработки:
Сама функция сортир
44K
30 апреля 2010 года
m9yt
25 / / 27.02.2010
В общем, в лабе задание отсортировать контейнер 2 способами-стандартным алгоритмом sort, что я и сделал, и программным путем.
Вот всё то, что препод дал для понимания(!):
«Сортировка программная» предполагает написание своей функции сортировки. Метод сортировки выбирается в соответствии с вариантом(сортировка слиянием). Эта функция должна принимать контейнер(или итераторы начала и конца сортируемой последовательности)- у меня vector и функцию сравнения. В качестве функции сравнения следует использовать объект-функцию.
Чтобы использовать объекты-функции и функциональные адаптеры, необходимо включить в программу заголовочный файл <functional>.
Вопрос в том, что я не знаю, для чего нужны в моей функции, например My_Sort(), эти функциональные адаптеры и объекты-функции, если есть обычный алгоритм сортировки слиянием.
44K
28 апреля 2010 года
m9yt
25 / / 27.02.2010
Цитата: [oxotnik333](#)
Что за объекты? У них перегружены операции сравнения? Иначе как он узнает кто из 2-х соседних больше, а кто меньше.
В моих классах имеется:
в 1-м поле string и int
во 2-м 2 поля string и int
операции сравнения не перегружены.
Думаю, необходимо написать функцию, возращающую результат сравнения?
44K
28 апреля 2010 года
m9yt
25 / / 27.02.2010
Доброго времени суток!
В общем, имеется вектор, содержащий указатели на объекты различных классов.
В программе я создаю эти объекты и помещаю в коллекцию. После этого мне необходимо их отсортировать функцией set().
Вот:
Код:
.............
#include<algorithm>
......................
sort(collection->begin(), collection->end());
После просмотра коллекции ничего не происходит.Все объекты выводятся в том же порядке.
В чем ошибка?Может вектор должен сортироваться не по указателям на объекты, а по самим объктам?
44K
14 апреля 2010 года
m9yt
25 / / 27.02.2010
Цитата: [Artem_3A](#)
ну ладно, допустим, что преподы идиоты, в чего я не очень верю, но мозг то и интернет тебе на что? шляпу носить и в контакте висеть?
зы:под интернетом я понимаю возможность скачать умных книжек и почитать, а то еще подумаешь чего.
[Свернуть исходник](#)
Код:
#include<iostream>
#include <cstdio>
using namespace std;
struct human
{
string family;
int year;
};
void main
{
human a;
a.family="Ivanov";
a.year=29;
FILE *f;
f=fopen("myfile.txt", "w");
[COLOR="Red"]fprintf(f,"%s\n%d\n",a.family.c_str(),a.year);[/COLOR]
fclose(f);
}
Я читаю 2 книги Шилда, Вконтакте не увлекаюсь!Не надо так категорично делать выводы.
За код спасибо!)
44K
14 апреля 2010 года
m9yt
25 / / 27.02.2010
Цитата: [Artem_3A](#)
Код:
struct human
{
string family;
int year;
};
...
student a;
как ты это объяснишь? магия?
потом, ты пишешь в поток структуру, а ты уверен, что компилятор знает как ее туда вкатать? да еще и тип стринг, вообще то это уже и не с, да и к тому же на сколько я понимаю стринг внутри себя содежит массив чаров, как думаешь, запишется весь массив или только адрес первого элемента?
еще ты открываешь с флагом "wb" то есть если мне не изменяет память то это можно понять как "на запись бинарный", потом удивляешься хламу?
итог: иди читай умные книжки, бо прежде чем что то делать надо понимать, что ты делаешь!
Код поправил, опечатка была.А я тут не причем, это наши преподы такие методички "умные" делают.
44K
14 апреля 2010 года
m9yt
25 / / 27.02.2010
Цитата: [Kogrom](#)
Во первых, это не C. Во вторых, этот код не может быть скомпилирован.
Вывод: надо почитать учебник по C++.
Еще как может!Я исправил код.
44K
14 апреля 2010 года
m9yt
25 / / 27.02.2010
В общем у меня такая проблема-неудачная запись в файл.
Пример:
[Свернуть исходник](#)
Код:
#include<iostream>
#include <cstdio>
#include <string>
using namespace std;
struct human
{
string family;
int year;
};
void main ()
{
human a;
a.family="Ivanov";
a.year=29;
FILE *f;
f=fopen("myfile.txt", "wb");
fwrite(&a,sizeof(human),1,f);
fclose(f);
}
После выполнения программы создается файл со всякими кракозябрами.
44K
13 марта 2010 года
m9yt
25 / / 27.02.2010
В общем, есть идеально сбалансированное бинарное дерево с элементами типа char.
Мне нужно перестроить это дерево в дерево поиска.
Училка советовала вначале записать элементы в массив, но у меня туда записывается постоянно символ м.
Подскажите, как реализовать запись элементов в массив, ну и заодно как потом преобразовать старое дерево в дерево поиска?
44K
13 марта 2010 года
m9yt
25 / / 27.02.2010
Всем привет.
В общем, нужно найти высоту идеально сбалансированного бинарного дерева(не дерева поиска).
Количество элементов ввожу с клавы.
Вот код программы, если что.
#include <iostream>
#include<windows.h>
using namespace std;
struct point
{
int data;//информационное поле
point *left;//адрес левого поддерева
point *right;//адрес правого поддерева
};
point* Tree(int n, point *p)
{
point *r;
int nl,nr;
if(n==0){p=NULL;return p;}
nl=n/2;
nr=n-nl-1;
r=new point;
cout<<"элемент:";
cin>>r->data;
r->left=Tree(nr, r->left);
r->right=Tree(nl, r->right);
p=r;
return p;
}
void Print(point*p, int l)
{
if(p)
{
Print(p->left,l+5);
for(int i=0;i<l;i++)
cout<<" ";
cout<<p->data<<"\n";
Print(p->right,l+5);
}
}
void main()
{
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
int n,i=0;
cout<<"Задайте количество элементов дерева\n";
cin>>n;
point *root;
root=new point;
root=Tree(n, root);
Print(root,1);
}
44K
27 февраля 2010 года
m9yt
25 / / 27.02.2010
Задали создать класс, где нужно сделать вот это:
4. Определить в классе селекторы и модификаторы
5. Определить указатель на экземпляр класса
Могли бы вы мне пояснить, что такое селекторы и экземпляр класса и привести пример кода?