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

C++

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

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

08.06.2014, 12:47. Просмотров 239. Ответов 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++
Нужно переделать этот код в Си, помогите, пожалуйста... #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;vector&gt; ...

Переделать код на C++ Builder! пожалуйста - C++ Builder
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls,...

Переделать на printf и scanf, пожалуйста! - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;time.h&gt; using namespace std; int main() { srand(time(NULL)); ...

Помогите пожалуйста переделать консольное приложение в обычное с эдитом,кнопкой и выводом результата в мемо - C++ Builder
Задание: В заданном предложении найти пару слов,из которых одно является обращением другого. Помогите пожалуйста переделать консольное...

Переделать программу - C++
Здравствуйте. Помогите с программой Дан текст; найти наибольшее количество цифр идущих в нем подряд. Способ задания текста может...

Переделать программу - C++
помогите изменить программу, программа ищет наименьший элемент последовательности, а мне надо индекс этого элемента т.е порядковой номер...

Переделать программу. - C++
Эта программа определяет какие слова встречаються в строчке по одному разу.Надо определить какое слово будет встречаться в строчке чаще...

Переделать программу с do while - C++
Помогите пожалуйста переделать эту программу с do while #include &lt;iostream.h&gt; Using namespace std; Int main (void) { Int...

Переделать программу из C# в C++ - C++
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace...

переделать программу - C++
Помогите изменить программу чтобы она была гибкой(Чтоб всегда можно было изменить количество чисел (не только 10)) И чтобы когда нет...


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

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

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