1 Востаннє редагувалося sonik_20014 (07.01.2014 23:40:03)

Тема: Допоможіть розвязати задачу на динамічні масиви!!!

Написати програму для обєднання масивів, n - кількість масивів, що підлягають обєднанню; а - масив вказівників на масиви, що підлягають обєднанню; масив size - містить розмір масивів, що підлягають обєднанню. Память під масиви виділити динамічно; totar - результуючий масив.

І це все потрібно зробити на мові С++ без malloc(), calloc()...і т.д.
Буду дуже вдячний!!!

Подякували: oleh0071

2

Re: Допоможіть розвязати задачу на динамічні масиви!!!

Оскільки жодних напрацювань немає, а отже, і підказувати вам нема чого, уточніть хоч б суму вдячності.

3 Востаннє редагувалося Bartash (08.01.2014 00:03:18)

Re: Допоможіть розвязати задачу на динамічні масиви!!!

#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
 
int main()
{
    int n,m,x;
 
    cout << "Enter size of first array\n";
    cin >> n;
    int *a = new int[n];
    cout << "Enter your first array\n";
    for (int i=0; i<n; i++)
    {
        cin >> a[ i ];
    }
    
    cout << "Enter size of second array\n";
    cin >> m;
    int *b = new int[m];
    cout << "Enter your second array\n";
    for (int i=0; i<m; i++)
    {
        cin >> b[ i ];
    }
    x = n + m;
 
    int *c = new int[x];
    for (int i=0; i<n; i++)
    {
        c[ i ] = a[ i ];
    }
    for (int i=n; i<x; i++)
    {
        c[ i ] = b[i - n];
    }
 
    for (int i=0; i<x; i++)
    {
        cout << c[ i ] << " ";
    }
    _getch();
    return 0;
}

Bartash: код слід брати у теги [ code ].


ось код для додавання 2-х масивів але тут потрібно зовсім інакше!!!

4 Востаннє редагувалося koala (08.01.2014 00:00:19)

Re: Допоможіть розвязати задачу на динамічні масиви!!!

А чому не код ядра Лінукса? Це теж не те, що треба.
Обирайте - або ви щось зробите самі в потрібному напрямку, хай косо-криво, з помилками, але так, щоб було видно, що ви намагаєтеся, і поставите конкретне питання по тому коду, або пропонуйте гроші. Код, який робить щось інше, нам не потрібен.

Коротше
http://s018.radikal.ru/i504/1305/4e/128b3beefcef.jpg

Так, і теги code використовуйте.

Подякували: Logans1

5

Re: Допоможіть розвязати задачу на динамічні масиви!!!

Приєднуюсь до ТС. Я теж не можу розв'язати цю задачу, навіть прочитавши тему.
Якщо хтось може, наведіть простенький код на використання динамічних масивів з cout-ами, щоб можна було зрозуміти логіку виконання.

Білий Лунь

6

Re: Допоможіть розвязати задачу на динамічні масиви!!!

Ну якщо вже стільки запитів... Гадаю, totar - помилка, втім, автор за добу не виправив, тому так і буде.

int totarSize = 0;
for(int i = 0; i < n; ++i)
  totarSize += size[ i ];
int *totar = new int[ totarSize ], t = 0;
for(int i = 0; i < n; ++i)
  for(int j = 0; j < size[ i ]; ++j)
    totar[ t++ ] = a[ i ][ j ];

 

Для лінивих, кмітливих і терплячих:

std::vector totarV;
for( int i = 0; i < n; ++i )
  totarV.insert( totarV.end(), a[ i ], a[ i ] + size[ i ] )
int *totar = new int [ totarV.size() ];
std::copy( totarV.begin(), totarV.end(), totar );
Подякували: Ярослав1

7

Re: Допоможіть розвязати задачу на динамічні масиви!!!

ось код я вже розвязав

#include <iostream>
#include <ctime>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"ukr");
    
    srand(time(NULL));
    
    int  n; // кількість масивів, що підлягають об'єднанню
    cout << "Введiть кiлькiсть масивiв, що пiдлягають об'єднанню: ";
    (cin >> n).get();
    int* size = new int[n]; // розміри масивів, що підлягають об'єднанню
    int** a = new int*[n]; // масив вказівників на масиви, які підлягають об'єднанню
    int* torar; // результуючий масив
 
    for (int i = 0; i < n; ++i)  
    {
        cout<<"Введiть розмiр "<<(i+1)<<"-го масиву"<<endl;
        (cin>>size[i]).get();
    }
    for (int i = 0; i < n; ++i) // заповнення масивів випадковими значеннями від 0 до 20
    {
        a[i] = new int[size[i]];
        for (int j = 0; j < size[i]; ++j)
            a[i][j] = rand() % 21;
    }
    
    cout << "Масиви:" << endl;
    for (int i = 0; i < n; ++i) 
    {
        for (int j = 0; j < size[i]; ++j)
            cout << a[i][j] << " ";
        cout << endl;
    }
    cout << endl;
    
    int size_torar = 0;
    for (int i = 0; i < n; ++i) // вычисление размера результирующего массива
        size_torar += size[i];
 
    torar = new int[size_torar];
    int i = 0;
    for (int j = 0; j < n; ++j) // объединение массивов
        for (int k = 0; k < size[j]; ++k)
            torar[i++] = a[j][k];
           
    cout << "Результулючий масив:" << endl;
    for (int i = 0; i < size_torar; ++i) // вывод результирующего массива
        cout << torar[i] << " ";
    cout << endl;
 
    cout << "Для вихода натиснiть Enter";
    cin.get();
    return 0;
}
Подякували: koala, Logans2