Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Встроенный ассемблер в С++] min a 
:(
    Опции темы
RiLL
Дата 2.7.2008, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 1.7.2008

Репутация: нет
Всего: нет



С помощью встроенного в С++ ассемблера...

Требуется найти сумму минимальных элементов массивов X[5] и Y[5]

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

Пока что у самого получилось набить это
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
void ClearAll();   // o4istka soderzhimogo
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void ClearAll()
{
Form1->StringGrid1->Rows[0]->Clear();
Form1->StringGrid1->ColCount = 5;
int i;
for(i=0;i<5;++i)
{
Form1->StringGrid1->Cells[i][0]="";
}
Form1->StatusBar1->SimpleText="Введите элемнты массива X";
return;
}
//-------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
ClearAll();
}
//---------------------------------------------------------------------------
int max(int a, int b)
{
asm
{   mov eax,a;
    cmp eax,b;
    je L;
    jmp exit;
}
L:
asm
{
mov eax,b;
}
exit:
}
//----------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{int i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
Edit1->Text = max(StrToInt(int a, int b));
}
//---------------------------------------------------------------------------


но здесь я пытался найти минимальный элемент хотя бы 1 массива.но проблема вот в этом
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{int i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
Edit1->Text = max(StrToInt(int a, int b));

я не знаю как сделать,чтобы вывести на экран...если вообще возможно это сделать

Это сообщение отредактировал(а) RiLL - 4.7.2008, 13:32
PM MAIL   Вверх
ama_kid
Дата 6.7.2008, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 16
Всего: 95



Цитата(RiLL @  2.7.2008,  17:09 Найти цитируемый пост)
С помощью встроенного в С++ ассемблера...
Требуется найти сумму минимальных элементов массивов X[5] и Y[5]
не знаю, насколько актуально, но например так:
Код
Word X[5] = {6,7,1,9,3};
Word Y[5] = {5,7,8,4,7};

Word min(Word *Arr, int count)
{
 Word m = *Arr;
 asm
 {
        mov ecx,count
        xor ebx,ebx
        mov bx,m
        mov esi , [Arr]
      lp:
        lodsw
        cmp ax,bx
        jae next
        mov bx,ax
    next:
        loop lp
        mov m,bx
 }
 return m;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 ShowMessage(IntToStr(min(X,5)+min(Y,5)));
}



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
RiLL
Дата 6.7.2008, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 1.7.2008

Репутация: нет
Всего: нет



Спасибо
Вот работающий код,если интересноsmile
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
void ClearAll();
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void ClearAll()
{
Form1->StringGrid1->Rows[0]->Clear();
Form1->StringGrid2->Rows[0]->Clear();
Form1->StringGrid1->ColCount=5;
Form1->StringGrid2->ColCount=5;
int i;
for(i=0;i<5;i++)
{
Form1->StringGrid1->Cells[i][0]="";
Form1->StringGrid2->Cells[i][0]="";
Form1->Edit1->Text = "";
Form1->Edit2->Text = "";
Form1->Edit3->Text = "";
}
return;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
ClearAll();
}
//---------------------------------------------------------------------------
int min(int a, int b)
{
asm
   { mov eax,a;
     cmp eax,b;
     jge L;
     jmp exit; }
L:
asm
   { mov eax, b; }
exit:
}
//---------------------------------------------------------------------------
int sum(int a, int b)
{
asm
   { mov eax, a;
     add eax, b; }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int tmp1,tmp2;
int i,j;

   tmp1 = StrToInt(StringGrid1->Cells[0][0]);
   for (j=0;j<5;j++)
   {tmp1 = min(tmp1, StrToInt(StringGrid1->Cells[j][0]));}
   Edit2->Text = tmp1;

       tmp2 = StrToInt(StringGrid2->Cells[0][0]);
       for(j=0;j<5;j++)
       {tmp2 = min(tmp2, StrToInt(StringGrid2->Cells[j][0]));}
       Edit3->Text = tmp2;

          Edit1->Text = sum(tmp1,tmp2);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N1Click(TObject *Sender)
{
ShowMessage(AnsiString("..."));
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N2Click(TObject *Sender)
{
Application -> Terminate();
}
//------------------------------------------------


PS ama_kid, поставил бы Вам +,но нету 100 постов:( уж извинитеsmile но все арвно спасибо

Это сообщение отредактировал(а) RiLL - 7.7.2008, 00:59
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0425 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.