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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как массиву присвоить массив? Подскажите функцию 
V
    Опции темы
zetxi815eb
Дата 3.11.2008, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



В делфи можно было сделать так


Код

var A,B :array[Nmax] of integer;
...
begin
  ...
  B:=A;
  ...
end.


Но в С++ имя массива - это указатель на начало

нашел функцию memcpm(B, A, n);

Но массив B остается неинициализированным

Код

#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <string.h>

using namespace std;

const char source[]="input.txt";
const char target[]="output.txt";
const int Nmax = 15000;
typedef int array[Nmax];

void vvod (int &n, array &A)
{
    ifstream infile(source);
    for (n = 0; !infile.eof(); n++) infile >> A[n];
}

void vivod(const int &n, const array &A)
{
    ofstream outfile(target);
    for (int i = 0; i < n; i++) outfile << A[i] << ' ';
}

void main()
{
    int n;
    array A;
    array B;
    vvod(n,A);
    memcmp(B, A, n);
    vivod(n,B);
}


в чем же трабла?


Это сообщение отредактировал(а) zetxi815eb - 3.11.2008, 16:52
PM MAIL   Вверх
mr.Anderson
Дата 3.11.2008, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



zetxi815eb, не memcpm, а memcpy. smile

ЗЫ "memory copy"

Это сообщение отредактировал(а) mr.Anderson - 3.11.2008, 16:51


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
triclosan
Дата 3.11.2008, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



идеологически более верно 
Код

#include <сstring>

PM MAIL   Вверх
zetxi815eb
Дата 3.11.2008, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

void main()
{
    int n;
    array A;
    array B;
    vvod(n,A);
    memcpy(B, A, n*4);
    vivod(n,B);
}

сделал так..но в memcpy(B, A, n*4) третий аргумент надо указывать в байтах
А есть в memcmp(B,A,n) вроде третий аргумент - это кол-во элементов..но она почему то не работатет(
PM MAIL   Вверх
mr.Anderson
Дата 3.11.2008, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



zetxi815eb, скорее, (n*sizeof(n)) тогда уж. Попробуй так.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
zetxi815eb
Дата 3.11.2008, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



mr.Anderson, да это та функция работает...размер int  -4 байта...

вообщем вопрос решен

спасибо

PM MAIL   Вверх
mr.Anderson
Дата 3.11.2008, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Кстати, вот такой пример приведен в вики.
Код

#include <string.h>
 
unsigned int  array[512];                 // источник
unsigned char byte_array[sizeof(array)];  // буфер назначения
 
memcpy(byte_array, array, sizeof(array));


Добавлено через 28 секунд
zetxi815eb, не всегда 4 байта, поэтому я и написал sizeof.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
taiven
Дата 3.11.2008, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

#include <fstream>
#include <iostream>
#include <cstring>

using namespace std;

const char source[]="input.txt";
const char target[]="output.txt";
const int Nmax = 15000;
typedef char arr[Nmax];
int n;

void vvod (arr A)
{
    ifstream infile(source);
    for (n = 0; !infile.eof(); n++) infile >> A[n];
}
void vivod(arr A)
{
    ofstream outfile(target);
    for (int i = 0; i < n; i++) outfile << A[i] << ' ';
}
void main()
{
    arr A = "";
    arr B = "";
    vvod(A);
    strcpy((char*)B, (char*)A);
    vivod(B);
}


Это сообщение отредактировал(а) taiven - 3.11.2008, 17:37
PM   Вверх
J0ker
Дата 3.11.2008, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mr.Anderson @ 3.11.2008,  17:01)
zetxi815eb, скорее, (n*sizeof(n)) тогда уж. Попробуй так.

при чем тут sizeof(n)
в данном случае правильно будет memcpy(B, A, sizeof(array));
но надо быть осторожным, если менять описание array
можно так
memcpy(B, A, sizeof(A[0])*n);


--------------------
user posted image
PM MAIL   Вверх
mr.Anderson
Дата 3.11.2008, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



J0ker, ага, точн, ошибся.


--------------------
user posted image

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

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

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

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

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


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

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


 




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


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

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