Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2014, 11:32   #1
Eddi_Brown
Пользователь
 
Регистрация: 20.12.2013
Сообщений: 19
По умолчанию с++, обмен содержимого массивов

Задание: разработать функцию обмена содержимым двух одномерных массивов. Ничего не получается, я уже не соображаю, что делать. Помогите, пожалуйста.
Eddi_Brown вне форума Ответить с цитированием
Старый 11.01.2014, 01:17   #2
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию

Вот написал для вас обмен для целых , вам сталось завернуть в функцию
Напишите обмен сначала без функции, хоть с дополнительной временной переменной

Код:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
// создали массивы
    int myIntArray1[5]={1,2,3,4,5};
    int myIntArray2[5]={5,1,2,7,7};
    
// выводим массив 1
    cout<<"myIntArray1 = ";
    for(int i=0;i<5;i++)
    cout <<myIntArray1[i]<<" ";
    
    cout<<endl;
     cout<<"myIntArray2 = ";
    for(int i=0;i<5;i++)
    cout <<myIntArray2[i]<<" ";
    
    // обмен
    for(int i=0;i<5;i++)
    {
    myIntArray1[i]^=myIntArray2[i];
    myIntArray2[i]^=myIntArray1[i];
    myIntArray1[i]^=myIntArray2[i];
    }
    
    cout << endl;
    cout<<"Обмен произошел!!!"<< endl;
    
// выводим массивы
    cout<<"myIntArray1 = ";
    for(int i=0;i<5;i++)
    cout <<myIntArray1[i]<<" ";
    
    cout<<endl;
     cout<<"myIntArray2 = ";
    for(int i=0;i<5;i++)
    cout <<myIntArray2[i]<<" ";
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
vvmcpp вне форума Ответить с цитированием
Старый 11.01.2014, 01:18   #3
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию

Вот написал для вас обмен для целых , вам сталось завернуть в функцию
Напишите обмен сначала без функции, хоть с дополнительной временной переменной

Код:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
// создали массивы
    int myIntArray1[5]={1,2,3,4,5};
    int myIntArray2[5]={5,1,2,7,7};
    
// выводим массив 1
    cout<<"myIntArray1 = ";
    for(int i=0;i<5;i++)
    cout <<myIntArray1[i]<<" ";
    
    cout<<endl;
     cout<<"myIntArray2 = ";
    for(int i=0;i<5;i++)
    cout <<myIntArray2[i]<<" ";
    
    // обмен
    for(int i=0;i<5;i++)
    {
    myIntArray1[i]^=myIntArray2[i];
    myIntArray2[i]^=myIntArray1[i];
    myIntArray1[i]^=myIntArray2[i];
    }
    
    cout << endl;
    cout<<"Обмен произошел!!!"<< endl;
    
// выводим массивы
    cout<<"myIntArray1 = ";
    for(int i=0;i<5;i++)
    cout <<myIntArray1[i]<<" ";
    
    cout<<endl;
     cout<<"myIntArray2 = ";
    for(int i=0;i<5;i++)
    cout <<myIntArray2[i]<<" ";
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
vvmcpp вне форума Ответить с цитированием
Старый 15.01.2014, 17:52   #4
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию

Вот написал 2 функции обмена
Что не удалось, так это протестировать время.
Хотел замерить время выполнения обменов.


Код:
#include <cstdlib>
#include <iostream>

using namespace std;
// обмен swap1 
void swap1 (int *a, int *b) 

{
     asm volatile(
        "XCHG   %0,  %1;      \n\t"
        :"=a"(*a),"=b"(*b)
        :"a"(*a),"b"(*b)
    );
}

// обмен swap2 
 void swap2 (int *a,int *b)
   {
    
   *a^=*b;
    *b^=*a;
   *a^=*b;
   }

int main(int argc, char *argv[])
{
    int myArrayTest1[24]={2,4,4,23,13,3123,313,13,13,13,131,13,13,13,13,1313,13322,12
    ,23,1623,1212,5622,1212,1423};
    
     int myArrayTest2[24]={22,24,34,423,613,73123,7313,713,713,713,7131,13,713,13,13,1313,13322,12
    ,23,71623,1212,75622,1212,71423};
    
//вывод myArrayTest1
     cout<<"myArrayTest1 =";
    
    for(int i=0;i<24;i++)
    cout<<myArrayTest1[i]<<" ";
    cout<<endl;
    
    //вывод myArrayTest2
    cout<<"myArrayTest2 =";
    
    for(int i=0;i<24;i++)
    cout<<myArrayTest2[i]<<" ";
      cout<<endl;
      
    // обмен с замером времени
clock_t start = clock();

 for (int i;i<24;i++)
     swap1 (  &myArrayTest1[i], &myArrayTest2[i]); 
     
clock_t end = clock();

float diff;
diff=end-start;

cout<<"diff= "<<diff<<endl;

 //вывод myArrayTest1
  cout<<"myArrayTest1 =";
    for(int i=0;i<24;i++)
    cout<<myArrayTest1[i]<<" ";
    cout<<endl;
    
        //вывод массива myArrayTest2
         cout<<"myArrayTest2 =";
    for(int i=0;i<24;i++)
    cout<<myArrayTest2[i]<<" ";
      cout<<endl;
    
    // обмен swap2
     for(int i=0;i<24;i++)   
  swap2 (&myArrayTest1[i],&myArrayTest2[i]);
  
  //  
   //вывод myArrayTest1
   cout <<"After swap2()"<<endl;
  cout<<"myArrayTest1 =";
    for(int i=0;i<24;i++)
    cout<<myArrayTest1[i]<<" ";
    cout<<endl;
    
        //вывод myArrayTest2
         cout<<"myArrayTest2 =";
    for(int i=0;i<24;i++)
    cout<<myArrayTest2[i]<<" ";
      cout<<endl;
  
    system("PAUSE");
    return EXIT_SUCCESS;
}

Последний раз редактировалось vvmcpp; 15.01.2014 в 17:56. Причина: дополнения и исправление кодировки
vvmcpp вне форума Ответить с цитированием
Старый 15.01.2014, 17:58   #5
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию

У меня на медленном соединении ответ отправился 2 раза. Можно один как-то удалить один ответ?
vvmcpp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнить обработку массивов. предусмотреть описание массивов как динамических Vika_0_0 Паскаль, Turbo Pascal, PascalABC.NET 8 03.06.2012 10:12
Вычислить значение функции Z по формуле и зависящей от содержимого трёх массивов А, F и С [ C++ ] Pycbka Помощь студентам 1 25.04.2012 00:57
Delphi, сравнение массивов, умножение массивов Marjasja Помощь студентам 0 22.05.2011 19:59
Delphi, сравнение массивов, умножение массивов Marjasja Общие вопросы Delphi 0 22.05.2011 19:49