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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с копированием, Копирование двух массивов в третий 
:(
    Опции темы
Belirafor
Дата 26.9.2009, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите с копированием двух массивов в третий. Для копирования использую функцию memcpy(). Почему он копирует, только первые пять элементов первого или второго массива, а не все. Заранее спасибо.

Код

#include "stdafx.h"
#include <conio.h>            //_getch()
#include <iostream>            //Потоки ввода/вывода
#include <string.h>            //memcpy()

using namespace std;

int main()
{
    setlocale (0,"");                            //Отображаем кириллицу
    const int n = 5;                            //Вводим константу размерности массивов
    const int m = 10;                            //Размерность третьего массива
    int mFirst[n], mSecond[n], mThird[m];        //Инициализируем три массива
    int i;                                        //Вводим индекс массива

/* Вводим данные в массивы ===============================================================*/
    cout << "Введите первый массив:" << endl;
    for (i = 0; i < n; i++)                        //Подготовка цикла ко вводу данных
        cin >> mFirst[i];                        //Вводим первый массив
        cout << endl;                            //Разделяем массивы
        cout << "Введите второй массив:" << endl;
    for (i = 0; i < n; i++)
        cin >> mSecond[i];
        cout << endl;

/* Ищем наименьший элемент первого массива ===============================================*/
    for (i = 0; i < n - 1; i++)
    {
        int iMin = i;                            //Примем за наименьший элемент - первый
        for (int j = i + 1; j < n; j++)            //Поиск элемента из неупорядоченных
        if (mFirst[j] < mFirst[iMin]) iMin = j;    //Запоминаем номер меньшего элемента
        int a = mFirst[i];
        mFirst[i] = mFirst[iMin];
        mFirst[iMin] = a;
    }

/* Ищем наименьший элемент второго массива ===============================================*/
    for (i = 0; i < n - 1; i++)
    {
        int iMin = i;
        for (int j = i + 1; j < n; j++)
            if (mSecond[j] < mSecond[iMin]) iMin = j;
        int a = mSecond[i];
        mSecond[i] = mSecond[iMin];
        mSecond[iMin] = a;
    }

/* Копируем первый и второй массив в третий ==============================================*/
    memcpy(mThird, mFirst, sizeof (mThird));
    memcpy(mThird, mSecond, sizeof (mThird));
    
    
    
/* Выводим массивы на экран ==============================================================*/
    cout << "Первый отсортированный массив:" << endl;
    for (i = 0; i < n; i++)
        cout << mFirst[i] << ' ';
        cout << endl;
    cout << "\nВторой отсортированный массив:" << endl;
    for (i = 0; i < n; i++)
        cout << mSecond[i] << ' ';
        cout << endl;

    cout << "\nТретий массив, полученный путем копирования первого и второго" << endl;
    for (i = 0; i < m; i++)
        cout << mThird[i] << ' ';
        cout << endl;

    cout << "\nДля завершения нажмите любую клавишу...";
    _getch();
    return 0;
}

PM MAIL   Вверх
ИванМ
Дата 26.9.2009, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

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



Код

memcpy(mThird, mFirst, sizeof (mFirst));
memcpy(mThird+sizeof (mFirst), mSecond, sizeof (mSecond));

PM MAIL   Вверх
Belirafor
Дата 26.9.2009, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



выдает ошибку Run-Time Check Failure #2 - Stack around the variable 'mFirst' was corrupted. И не дополняет третий массив до конца.

Это сообщение отредактировал(а) Belirafor - 26.9.2009, 21:42
PM MAIL   Вверх
ИванМ
Дата 26.9.2009, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

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



Код

memcpy(mThird, mFirst, sizeof (mFirst));
memcpy(mThird+sizeof (mFirst)/sizeof(int), mSecond, sizeof (mSecond));
 

PM MAIL   Вверх
Deliverance
Дата 26.9.2009, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 2.12.2007
Где: Украина,Донецк

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



Вот ,может пригодится.Просто ,но зато работает

Код

#include <iostream>
#include <windows.h>

using namespace std;

void main()
{
    SetConsoleOutputCP(1251);
    const int n=5;
    int a[n],a1[n],a2[2*n],i;
    cout << "Введите элементы массива a \n";
    for(i=0;i<n;i++)
    {
        cout << i << ": \t";
        cin >> a[i];
    }
    cout << "Введите элементы массива a1 \n";
    
    for(i=0;i<n;i++)
    {
        cout << i << ": \t";
        cin >> a1[i];
    }
    for (i=0;i<n;i++)
    {
     a2[i]=a[i];
     a2[i+n]=a1[i];
     
    }
    cout <<"\n \n";
    for(i=0;i<n+n;i++)
    {
        cout << i << ": \t" <<a2[i]<<"\n";
    }
}


Это сообщение отредактировал(а) Deliverance - 26.9.2009, 21:51
PM MAIL WWW ICQ Skype   Вверх
Belirafor
Дата 26.9.2009, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Мне нужна функция memcpy();
PM MAIL   Вверх
DenWPF
Дата 26.9.2009, 22:00 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

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



Цитата(Belirafor @ 26.9.2009,  21:52)
Мне нужна функция memcpy();

совет. напиши ручками все функции с работой с строкой.
PM MAIL   Вверх
Belirafor
Дата 26.9.2009, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(ИванМ @ 26.9.2009,  21:48)
Код

memcpy(mThird, mFirst, sizeof (mFirst));
memcpy(mThird+sizeof (mFirst)/sizeof(int), mSecond, sizeof (mSecond));
 

Спасибо Работает!
PM MAIL   Вверх
zim22
Дата 27.9.2009, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

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



Цитата(DenWPF @  26.9.2009,  22:00 Найти цитируемый пост)
совет. напиши ручками все функции с работой с строкой.

дурной совет


--------------------
PM MAIL   Вверх
DenWPF
Дата 27.9.2009, 09:36 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

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



Цитата(zim22 @ 27.9.2009,  08:18)
Цитата(DenWPF @  26.9.2009,  22:00 Найти цитируемый пост)
совет. напиши ручками все функции с работой с строкой.

дурной совет

сам от себя не ожидал..ужас какой дурной...
да парень тебе это не надо..и вообще давай сразу в ШАРП там вобоще не чего ручками делать не надо.
PM MAIL   Вверх
zim22
Дата 27.9.2009, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

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



Цитата(DenWPF @  27.9.2009,  09:36 Найти цитируемый пост)
сам от себя не ожидал..ужас какой дурной...

я тоже не ожидал. причём здесь строка?
Цитата(Belirafor @  26.9.2009,  21:15 Найти цитируемый пост)
Помогите с копированием двух массивов в третий.

строка - это последовательность символов. но не последовательность объектов.



--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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