Страница 1 из 2
Встроенный в С++ Ассемблер.Решите задачку?
Добавлено: 03 июл 2008, 20:37
RiLL
На встроенном в С++ Ассемблере надо сделать(желателен графический интерфейс)
Даны 2 массива X[5] и Y[5].
Надо:а)найти минимумы каждого из этих массивов и вывести на экран
б) сложить эти минимумы и вывести на экран.
Заранее спасибо!Если что ася - 324605768
Re: Встроенный в С++ Ассемблер.Решите задачку?
Добавлено: 03 июл 2008, 21:43
Vasilisk
Re: Встроенный в С++ Ассемблер.Решите задачку?
Добавлено: 04 июл 2008, 02:02
RiLL
У меня получилось пока что только это набить
Код: Выделить всё
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int sum(int a, int b)
{
int n;
asm
{
mov eax,a
add eax,b
}
return n;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int x[5];
int y[5];
int i,j;
int min = 0;
for(j=0;j<5;j++)
{
if (StringGrid1->Cells[j][0] == "")
x[j]=0;
else
x[j]=StrToInt(StringGrid1->Cells[j][0]);
if(x[j] < min)
min = x[j];
}
Edit1->Text = IntToStr(min);
for(i=0;i<5;i++)
{
if (StringGrid1->Cells[0][i] == "")
z[i]=0;
else
z[i]=StrToInt(StringGrid1->Cells[0][i]);
if(z[i] < min)
min = z[i];
}
Edit2->Text = IntToStr(min);
}
//---------------------------------------------------------------------------
дальше не стал пробовать с выводом суммы,т.к это даже не работает

Re: Встроенный в С++ Ассемблер.Решите задачку?
Добавлено: 04 июл 2008, 08:14
airyashov
попробуйте так
Код: Выделить всё
int sum(int a, int b)
{
int n;
__asm
{
mov eax,a
add eax,b
mov n,eax
}
return n;
}
Re: Встроенный в С++ Ассемблер.Решите задачку?
Добавлено: 04 июл 2008, 09:00
RiLL
airyashov,спасибо,что откликнулись.но ничего не изменилось в работе.
это конечно смешно,у меня компилица,но я ничего не могу ввести в StringGrid ни в первый,ни в другой...

)м-да уж...
Re: Встроенный в С++ Ассемблер.Решите задачку?
Добавлено: 04 июл 2008, 09:22
Vasilisk
Чё-та я ничего не понимаю... Что делает ButtonClick - ввод? Тогда куда оно вводит, назовите переменную, которая получает значение и какое именно...
Вывод - тогда откуда? Откуда вызывается функция sum, та, которая на ассемблере?
Re: Встроенный в С++ Ассемблер.Решите задачку?
Добавлено: 04 июл 2008, 09:39
airyashov
проверить функцию
Код: Выделить всё
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit2->Text = IntToStr(sum(2,5));
}
Re: Встроенный в С++ Ассемблер.Решите задачку?
Добавлено: 04 июл 2008, 12:27
RiLL
по идее ButtonClick - это после того,как нажать на нее в Edit'ы выводятся минимальные элементы массивов x[5] и y[5]
а значения в сами массивы просто вводятся с клавиатуры(просто обычное заполнение StringGrid)
Re: Встроенный в С++ Ассемблер.Решите задачку?
Добавлено: 04 июл 2008, 12:34
airyashov
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int x[5];
int y[5];
int i,j;
int min = 0;
for(j=0;j<5;j++)// по столбцу грида
{
if (StringGrid1->Cells[j][0] == "")
x[j]=0;
else
x[j]=StrToInt(StringGrid1->Cells[j][0]);
if(x[j] < min)
min = x[j];
}
Edit1->Text = IntToStr(min);
for(i=0;i<5;i++)//по строке грида
{
if (StringGrid1->Cells[0] == "")
z=0;//!!!!!!!!!!!!!!!!!!!!!!!!! что за Z
else
z=StrToInt(StringGrid1->Cells[0]);
if(z < min)
min = z;
}
Edit2->Text = IntToStr(min);
Re: Встроенный в С++ Ассемблер.Решите задачку?
Добавлено: 04 июл 2008, 12:46
RiLL
ой да,вы правы.извиняюсь.этот z на y надо исправить.сорри
вот
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int x[5];
int y[5];
int i,j;
int min = 0;
for(j=0;j<5;j++)// по столбцу грида
{
if (StringGrid1->Cells[j][0] == "")
x[j]=0;
else
x[j]=StrToInt(StringGrid1->Cells[j][0]);
if(x[j] < min)
min = x[j];
}
Edit1->Text = IntToStr(min);
for(i=0;i<5;i++)//по строке грида
{
if (StringGrid2->Cells[0] == "")
y=0;
else
y=StrToInt(StringGrid2->Cells[0]);
if(y < min)
min = y;
}
Edit2->Text = IntToStr(min);