Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Теория программирования > Алгоритмы
Перезагрузить страницу Объединение двух массивов
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Horror Horror вне форума
Member
 
Сообщений: 62
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2007
По умолчанию 25.11.2007, 19:39

Всем привет !
у меня такая задача

есть массивы А,B,C
надо объединть два массива A и B в результирующий С
я сделал это так:

Код:
i=1;
while (i<=N1)
{
C[i]=A[i];
i=i+1;
}
i=1;
while(i<=N2)
{
    (C[i+N1]= B[i]);

 i=i+1;
}
Но еще в задаче стоит условие чтобы при объединение если числа в первом массиве повторяються во втором
то они пропускаються к примеру:

первый массив: 1, 2, 3
воторой массив: 4, 5, 6
результирующий массив: 1, 2, 3, 4, 5, 6

ДРУГОЙ пример

пм: 1,2,3
вм: 4,1,5
рм: 1,2,3,4,5

очень прошу помочь)
Ответить с цитированием
  (#2 (permalink)) Старый
Stone Stone вне форума
Member
 
Сообщений: 151
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2007
По умолчанию 25.11.2007, 21:39

Цитата:
Всем привет !
у меня такая задача

есть массивы А,B,C
надо объединть два массива A и B в результирующий С

пм: 1,2,3
вм: 4,1,5
рм: 1,2,3,4,5

очень прошу помочь)
Код:
#include <stdio.h>

#define SIZE_1 3
#define SIZE_2 3

int array_l[SIZE_1] = {1, 2, 3};
int array_2[SIZE_2] = {4, 1, 5};

int array_res[SIZE_1 + SIZE_2];

int main()
{
    int idx;

    for(idx = 0; idx < SIZE_1; idx++)
    {
        array_res[idx] = array_l[idx];

        printf("%5d", array_res[idx]);
        printf("%c", (idx + 1)%10 ? ' ' : '\n');
    }

    for(; idx < SIZE_1 + SIZE_2; idx++)
    {
        array_res[idx] = array_l[idx];

        printf("%5d  ", array_res[idx]);
        printf("%c", (idx + 1)%10 ? ' ' : '\n');
    }

    printf("\n");
   
    return 0;
}
Надеюсь, вы поняли свою ошибку?
Ответить с цитированием
  (#3 (permalink)) Старый
Horror Horror вне форума
Member
 
Сообщений: 62
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2007
По умолчанию 25.11.2007, 22:50

не не если вы думаете что ошибка из за того что я считаю массив с первого элемента, а не с нулевово
то это не так вот мой код:
просто я подумал что в алгоритмах пишут с первого эл массива (нам так говориле)

Код:
#include <conio.h>
#include <iostream.h>

int const N1=3;
int const N2=3;

int A[N1];
int B[N2];
int C[N1+N2];


int main()
{
int i;
for(i=1;i<=N1;i++){ cin>>A[i];}  cout<<"\n";
for(i=1;i<=N1;i++){ cin>>B[i];}  cout<<"\n";

i=1;
while (i<=N1)
{
    C[i]=A[i];
    i=i+1;
}

i=1;
while(i<=N2)
{
   C[i+N1]= B[i];
   i=i+1;
}

for(i=1;i<=(N1+N2);i++){ cout<<C[i]<<" , ";}   cout<<"Tuno TAK";

getch();
return 0;
}
и ваш пример не решает мою задачу
у вас получается
1 2 3 4 1 5
а мне надо
1 2 3 4 5
исключить повторения!
Ответить с цитированием
  (#4 (permalink)) Старый
Stone Stone вне форума
Member
 
Сообщений: 151
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2007
По умолчанию 26.11.2007, 09:27

Цитата:
и ваш пример не решает мою задачу
у вас получается
1 2 3 4 1 5
а мне надо
1 2 3 4 5
исключить повторения!
Теперь уже решает
Код:
#include <stdio.h>

#define SIZE_1 3
#define SIZE_2 3

int array_l[SIZE_1] = {1, 2, 3};
int array_2[SIZE_2] = {4, 1, 5};

int array_res[SIZE_1 + SIZE_2];

int main()
{
    int idx, jdx, kdx;
    int limit, temp;

    for(idx = 0; idx < SIZE_1; idx++)
    {
        array_res[idx] = array_l[idx];

        printf("%5d", array_res[idx]);
        printf("%c", (idx + 1)%10 ? ' ' : '\n');
    }

    limit = SIZE_1 + SIZE_2;
    jdx = 0;

    for(; idx < limit; idx++)
    {
        temp = array_2[jdx++];

        for(kdx = 0; kdx < SIZE_1; kdx++)
            if(array_l[kdx] == temp)
            {
                idx--;
                limit--;

                goto end_of_cycle;
            }

        array_res[idx] = temp;

        printf("%5d  ", array_res[idx]);
        printf("%c", (idx + 1)%10 ? ' ' : '\n');
    end_of_cycle:
    }

    printf("\n");
   
    return 0;
}
Я вначале не понял условие.
Ответить с цитированием
  (#5 (permalink)) Старый
Stone Stone вне форума
Member
 
Сообщений: 151
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2007
По умолчанию 26.11.2007, 15:34

Horror, вот еще один вариант вашей прграммы.
Код:
#include <stdio.h>
#include <mem.h>

#define SIZE_1 3
#define SIZE_2 3

int array_l[SIZE_1] = {1, 2, 3};
int array_2[SIZE_2] = {4, 1, 5};

int main()
{
    int idx, jdx;
    int limit, temp;

    limit = SIZE_2;

    for(idx = 0; idx < limit; idx++)
    {
        temp = array_2[idx];

        for(jdx = 0; jdx < SIZE_1; jdx++)
            if(array_l[jdx] == temp)
            {
                limit--;
                memmove(&array_2[idx], &array_2[idx + 1],
                          (limit - jdx)*sizeof(array_2[0]));
        }
    }

    printf("     Merged arrais\n");

    for(idx = 0; idx < SIZE_1 + limit; idx++)
    {
        printf("%5d,", array_l[idx]);
        printf("%s", (idx + 1)%10 ? " " : "\n");
    }

    printf("\n");
   
    return 0;
}
Спросите у преподавателя, почему программа работает и как сделать, что бы она не работала?
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Horror Horror вне форума
Member
 
Сообщений: 62
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2007
По умолчанию 27.11.2007, 17:13

Пасибо большое!
вроде все нормально!
дома потестю!
Ответить с цитированием
  (#7 (permalink)) Старый
Stone Stone вне форума
Member
 
Сообщений: 151
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.11.2007
По умолчанию 27.11.2007, 18:01

Цитата:
Пасибо большое!
вроде все нормально!
дома потестю!
Так вы потом сообщите, какую оценку мы получили за программу. Хорошо?
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение двух локальных сетей LatentBlo Сетевое программирование 4 31.05.2010 21:14
Объединение двух символных строк Natalina Assembler 1 29.12.2009 16:35
Быстрый Алгоритм сравнения двух массивов AcerExtensa С/С++ 6 21.07.2008 11:38
Создание двух динамических массивов qqeeaaddzzcc С/С++ 6 23.05.2008 17:27
Написать функцию UNION, которая вычисляет объединение двух множеств Horror Lisp 22 06.01.2008 11:08
Построчное объединение двух матриц в С Stiker Вопросы начинающих программистов 9 10.12.2007 00:15
Написать функцию UNION, которая вычисляет объединение двух множеств Serg13 Lisp 3 13.09.2007 14:22
Сравнение двух массивов в Excel'e edgar Visual Basic 2 20.08.2007 17:33
Объединение чётных элементов двух списков Дмитрий_Шишков Prolog 2 18.08.2006 13:23
Конкатенация двух численных массивов Amputator Pascal 4 16.04.2006 20:01
CONSTRAINT объединение двух таблиц igora112 Oracle 1 29.09.2005 18:38



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов