• Предмет: Информатика
  • Автор: olegdidukh1008
  • Вопрос задан 1 год назад

#include #include using namespace std;const int n = 3;// кількість значень змінної хconst float neg4 = -4;float d;float x[n];// значення змінноїfloat res[n];// значення виразуvoid calculateASM(){__asm{// заповнення регістрівlea esi, x// адреса початку масиву хlea edi, res// адреса початку масиву resmov ecx, n// розмір масивуfinit// ініціалізація співпроцесораiteration :// початок циклуfld [esi]// значення х в стек співпроцесораfadd d// x + dfsincos// sin(x+d) i cos(x+d) в стекfmul// sin(x+d)*cos(x+d)fld neg4// -4 в стек
–26–fdiv// sin(x+d)cos(x+d)/(-4)fstp [edi]// запис значення виразу в масив// перехід до наступних елементів масивівadd esi, 4add edi, 4loop iteration// кінець циклу}}void enteringData(){cout << " Введіть d : ";cin >> d;cout << " Введіть x[i] :" << endl;for (int i = 0; i < n; ++i){cout << " x[" << i << "] = ";cin >> x[i];}}void printRes(char* sym){cout << " Обчислено в " << sym << endl;for (int i = 0; i < n; ++i){cout << " result: [" << i + 1 << "] = " << res[i] << endl;}}void calculateCpp(){for (int i = 0; i < n; i++){res[i] = -0.125 * sin(2*(d + x[i]));}}void main(){enteringData();calculateASM();
–27–printRes("ASM");calculateCpp();printRes("C++");system("pause");}
На основі цього зробити це завдання: =33−2−sin/4−,≤.


olegdidukh1008: Для цього завдання =33−2−sin/4−,≤.
bludyy444: надо начинать учить плюсы :/

Ответы

Ответ дал: ceceve58
0

Ответ:

Для розв'язання даного завдання, змінимо код програми наступним чином:

```cpp

#include <iostream>

#include <cmath>

using namespace std;

const int n = 3; // кількість значень змінної x

const float neg4 = -4;

float d;

float x[n]; // значення змінної

float res[n]; // значення виразу

void calculateASM() {

__asm {

// заповнення регістрів

lea esi, x // адреса початку масиву х

lea edi, res // адреса початку масиву res

mov ecx, n // розмір масиву

finit // ініціалізація співпроцесора

iteration:

// початок циклу

fld [esi] // значення х в стек співпроцесора

fadd d // x + d

fsin // sin(x + d)

fsub neg4 // sin(x + d) - (-4)

fdiv // (sin(x + d) - (-4)) / 4

fstp [edi] // запис значення виразу в масив

// перехід до наступних елементів масивів

add esi, 4

add edi, 4

loop iteration // кінець циклу

}

}

void enteringData() {

cout << "Введіть d: ";

cin >> d;

cout << "Введіть x[i]:" << endl;

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

cout << "x[" << i << "] = ";

cin >> x[i];

}

}

void printRes(char* sym) {

cout << "Обчислено в " << sym << endl;

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

cout << "result: [" << i + 1 << "] = " << res[i] << endl;

}

}

void calculateCpp() {

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

res[i] = 33 - 2 * pow(-1, sin(4 * x[i]));

}

}

int main() {

enteringData();

calculateASM();

printRes("ASM");

calculateCpp();

printRes("C++");

system("pause");

return 0;

}

```

Цей код розв'яже ваше завдання, використовуючи як мову асемблера (ASM), так і мову програмування C++.

Объяснение:

Вас заинтересует