Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
profile
1 / 1 / 0
Регистрация: 25.11.2011
Сообщений: 40
#1

переделать программу ,пожалуйста - C++

08.06.2014, 12:47. Просмотров 235. Ответов 0
Метки нет (Все метки)

#include <iostream>//cout,cin
#include <chrono>//сверхточные часы
#include <random>//rand()

//функция для вывода массива
void show(int *arr, int N)
{
for (int i = 0; i < N; i++)
{
std::cout <<arr[i] <<'\t';//вывод элемента
}
std::cout <<std::endl;//перенос строки
}

//функция для заполнения массива
void fill_arr(int* arr, int N)
{
srand(std::chrono::high_resolution_clock::now().time_since_epoch().count());//создаем зерно случайности, инициализируем генератор сл. значений
for (int i = 0; i < N; i++)
{
*arr = rand();
*arr++;
}
}

//Задать одномерный массив, состоящий из N элементов.
//Заполнить массив константами. Создать новый одномерный массив,
//поместив в него на место элементов с четными номерами элементы
//заданного массива с нечетными номерами и обнулив элементы нового
//массива с нечетными номерами
void lab2(int N)
{
unsigned int* arr1 = new unsigned int[N];//создается динамический массив размера N
fill_arr((int*)arr1, N);//заполняем
show((int*)arr1, N);//выводим на экран
unsigned int*arr2 = new unsigned int[N];//создаем новый динамический массив размера N
__asm{
xor EAX, EAX ;обнуление AX
MOV ECX, N ;ECX=N //счетчик цикла для обхода массива
MOV ESI, arr1 ;указатель на первый массив
MOV EDI, arr2 ;указатель на второй массив
loop1: ;начало цикла, происходит копирование первого массива во второй
mov EAX, [ESI] ;EAX = значение ESI
mov [EDI], EAX ;Значение EDI = EAX
add ESI, 4 ;сдвигаем указатель на первый массив на 4 байта, то есть переходим к след. элементу массива
add EDI, 4 ;аналогичная ситуация
loop loop1 ;конец цикла
mov ECX, N ;восстанавливаем счетчик цикла
dec ECX ;уменьшаем на 1
mov EDI, arr2 ;восстанавливаем указатель на второй массив
mov EBX, 0 ;заносим в регистр 0
loop2: ;начало цикла, обнуляем нечетные элементы цикла
mov [EDI], EBX ;элемент обнуляем
add EDI, 8 ;сдвигаем указатель на 8 байт, то есть на 2 элемента,
;перепрыгиваем через элемент, так как работать нам нужно
;только с нечетными
sub ECX, 2 ;уменьшаем счетчик на 2 элемента
jns loop2 ;проверяем не стало ли значение счетчика отрицательным
;то есть установлен флаг знака в регистре состояний
}
show((int*)arr2, N);//вывод 2 массива
}


void main()
{
lab2(5);
system("pause");
}

данный код выполняет :" Задать одномерный массив, состоящий из N элементов. Заполнить массив константами. Создать новый одномерный массив, поместив в него на место элементов с четными номерами элементы заданного массива с нечетными номерами и обнулив элементы нового массива с нечетными номерами"

нужно переделать на:"Задать одномерный массив, состоящий из N элементов. Заполнить массив константами. Создать новый одномерный массив, поместив в него на место элементов с нечетными номерами элементы заданного массива с нечетными номерами и заполнив элементы нового массива с четными номерами максимальными значениями констант"

помогите плиз
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2014, 12:47     переделать программу ,пожалуйста
Посмотрите здесь:

Помогите переделать из С++ в СИ, пожалуйста C++
C++ Нужно программу на Паскале переделать в программу на С++
C++ Builder Переделать программу
Помогите пожалуйста переделать консольное приложение в обычное с эдитом,кнопкой и выводом результата в мемо C++ Builder
Переделать программу 1 в программу 2 с использованием функций C++
Переделать программу. C++
C++ Переделать программу с do while
C++ Переделать программу
C++ Переделать программу
Переделать код на C++ Builder! пожалуйста C++ Builder
Переделать программу C++
Переделать на printf и scanf, пожалуйста! C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 09:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru