0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 60
1

Как первый и второй массивы с цифрами объединить и записать в третий массив и отсортировать?

27.06.2015, 20:34. Показов 1775. Ответов 20
Метки нет (Все метки)

В первом и во втором массиве находятся несколько цифр. Пожалуйста помогите, с чего мне начать и если сможете, выложите похожий готовый код.
 Комментарий модератора 
п.5.18. Правил
Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.

Вывод в консоли должен быть такой:
1>14789
2>24569
result>12456789
Как первый и второй массивы с цифрами объединить и записать в третий массив и отсортировать?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2015, 20:34
Ответы с готовыми решениями:

Объединить массивы: разместить в новый массив сначала первый по убыванию, затем второй по возрастанию
Прошу расписать задачу полностью (от вара до энда) в рамках 7-ого класса. Спасибо! 1) Объединить ...

Объединить массивы A и B в третий массив C
заданы 2 массива A от N и B от N, элементы которых упорядочены по возрастанию, объединить массивы A...

В двух файлах записаны отсортированные массивы, объединить их, записать результат в третий файл
В двух файлах записаны отсортированные по возрастанию массивы неизвестной длины. Объединить их и...

Отсортировать массивы, объединить и результирующий массив отсортировать
Помогите пожалуйста, нужно написать в паскале программу: Даны массив А(16), В(10).Отсортировать...

20
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 14
27.06.2015, 23:03 2
Начни с того, что считай элементы массива из файлов. Или так или по другому.
C++
1
2
3
int Arr[]={
#include "C:\Папка откуда\файл.txt"
};
Потом отобрази массивы через цикл или через функцию.
Потом объединяй два массива в 3.
И потом делай сортировку и снова вывод 3 массива.
0
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 60
28.06.2015, 00:42  [ТС] 3
Желательно начинать с int _tmain( int argc, _TCHAR* argv[] ) ?
0
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 14
28.06.2015, 12:43 4
Я начинал с int main()
и перед ним пару void для показа и сортировки.
Вечером может закину кусок рабочего кода.
0
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 60
28.06.2015, 19:03  [ТС] 5
Жду.
0
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 60
30.06.2015, 03:20  [ТС] 6
DEVOVIKING,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "stdafx.h"
#include <iostream>
#include <fstream>
 
using namespace std;
 
const int N = 256, M = 256;
char *F1 = "array_1.txt";
char *F2 = "array_2.txt";
 
void ReadFile()
{
    char A[N];
    char B[M];
    ifstream in1( F1 );
    while ( ! in1.eof() )
    {
        cout << "1>"; 
        in1.getline( A, N );
        cout << A << endl;
    }
    in1.close();
    ifstream in2( F2 );
    while ( ! in2.eof() )
    {
        cout << "2>";
        in2.getline( B, M );
        cout << B << endl;
    }
    in1.close();
    char* C = new char[ 10 ];
    int i = 0; 
    int j = 0;
    for ( int k = 0; k < 8; k++ )
    {
        if ( ( A[i] < B [j] || j >= M ) && i < N )
        {
            C[k] = A[i]; i++;
        }
        else 
            if ( A[i] == B[j])
            {
                C[k] = B[j]; i++; j++;
            }
            else 
            { 
                C[k] = B[j]; j++;
            }
    }
    cout << "result>";
    for ( int k = 0; k < 8; k++ )
        cout << C[k];
    cout << endl;
    delete[] C; 
}
 
int main()
{
    ReadFile();
    system( "pause" );
}
Такой код сойдет? Не будут ли замечания у препода?
0
285 / 172 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
30.06.2015, 05:35 7
Лучший ответ Сообщение было отмечено mihaprad как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    ifstream file[2];
    string nameFile[2] = {"C:/array_1.txt", "C:/array_2.txt"};
 
    int firstArray[5];
    int twoArray[5];
    int threeArray[10];
    char symbol = ' ';
 
    for(int i = 0; i < 2; i ++)
    {
        file[i].open(nameFile[i], ios::in);
 
        if(file[i].fail())
        {
            cout << "Ошибка открытия файл!";
            exit(1);
        }
 
        int j = 0;
 
        while (file[i].get(symbol))
        {
            if(i == 0)
                firstArray[j] = static_cast<int> (symbol) - 48 ;
 
            if(i == 1)
                twoArray[j] = static_cast<int> (symbol) - 48 ;
 
            j ++;
        }
    }
 
    int sizeThree = 0;
 
    for(int i = 0 ; i < 5; i ++)
    {
        threeArray[sizeThree++] = firstArray[i];
        threeArray[sizeThree++] = twoArray[i];
    }
Это чтение из файла и объединение двух массивов, код сортировки вставьте свой.
1
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 60
30.06.2015, 09:49  [ТС] 8
Цитата Сообщение от Sn1p3rOk Посмотреть сообщение
Это чтение из файла и объединение двух массивов, код сортировки вставьте свой.
Мой код чем-то не устраивает? Ваш код сложный и не пойму, как вывести на экран первый и второй массивы из двух txt.
0
285 / 172 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
30.06.2015, 09:54 9
Проще чем у меня код наверное и не придумаешь.
В цикле выводи firstArray[i], twoArray[i]
0
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 60
30.06.2015, 10:17  [ТС] 10
Цитата Сообщение от Sn1p3rOk Посмотреть сообщение
Проще чем у меня код наверное и не придумаешь.
В цикле выводи firstArray[i], twoArray[i]
А с моим кодом что-то не так?

Добавлено через 18 минут
Sn1p3rOk, не получается с сортировкой, нужны M и N.
0
285 / 172 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
30.06.2015, 14:11 11
Цитата Сообщение от mihaprad Посмотреть сообщение
не получается с сортировкой, нужны M и N.
Ну это же размеры массивов. Укажите их явно, не обязательно константы создавать. Либо же если вам это не подходит воспользуйтесь оператором sizeof. Если вы хотите чтобы были N и M, то создайте их и вместо чисел в размерности массивов укажите ваши константы.
Цитата Сообщение от mihaprad Посмотреть сообщение
А с моим кодом что-то не так?
Да ваше право, если ваш код 100% работает то возьмите его. Мой код проще и меньше.
Да и вообще функция main если она int, а в коде она у вас int должна возвращать значение. Я понятия не имею как ваш проект вообще запустился .
0
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 60
30.06.2015, 14:42  [ТС] 12
Цитата Сообщение от Sn1p3rOk Посмотреть сообщение
Да и вообще функция main если она int, а в коде она у вас int должна возвращать значение. Я понятия не имею как ваш проект вообще запустился .
Должно быть void main()?
0
285 / 172 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
30.06.2015, 14:58 13
Можно и пустой тип, но не желательно.
Вот так сделайте.
C++
1
2
3
4
5
6
int main()
{
    // Ваш код
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 60
30.06.2015, 15:14  [ТС] 14
Цитата Сообщение от Sn1p3rOk Посмотреть сообщение
Ну это же размеры массивов. Укажите их явно, не обязательно константы создавать. Либо же если вам это не подходит воспользуйтесь оператором sizeof. Если вы хотите чтобы были N и M, то создайте их и вместо чисел в размерности массивов укажите ваши константы.
Код заработал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include "stdafx.h"
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
    setlocale( LC_ALL, "Russian" );
    ifstream file[2];
    string nameFile[2] = {"array_1.txt", "array_2.txt"};
 
    int firstArray[5];
    int twoArray[5];
    int threeArray[10];
    char symbol = ' ';
 
    for(int i = 0; i < 2; i ++)
    {
        file[i].open(nameFile[i], ios::in);
 
        if(file[i].fail())
        {
            cout << "Ошибка открытия файла!";
            exit(1);
        }
 
        int j = 0;
 
        while (file[i].get(symbol))
        {
            if(i == 0)
                firstArray[j] = static_cast<int> (symbol) - 48 ;
 
            if(i == 1)
                twoArray[j] = static_cast<int> (symbol) - 48 ;
 
            j ++;
        }
    }
    int sizeThree = 0;
    cout << "1>"; 
    for(int i = 0 ; i < 5; i ++)
    {
        threeArray[sizeThree++] = firstArray[i];
        cout << firstArray[i];
    }
    cout << endl << "2>"; 
    for(int i = 0 ; i < 5; i ++)
    {
        threeArray[sizeThree++] = twoArray[i];
        cout << twoArray[i];
    }
    cout << endl;
    int* C = new int[8];
    int i = 0; 
    int j = 0;
    for ( int k = 0; k < 8; k++ )
    {
        if ( ( firstArray[i] < twoArray [j] || j >= 5 ) && i < 5 )
        {
            C[k] = firstArray[i]; i++;
        }
        else 
            if ( firstArray[i] == twoArray[j])
            {
                C[k] = twoArray[j]; i++; j++;
            }
            else 
            { 
                C[k] = twoArray[j]; j++;
            }
    }
    cout << "result> ";
    for ( int k = 0; k < 8; k++ )
        cout << C[k];
    cout << endl;
    delete[] C; 
    system( "pause" );
}
Помогите понять, где лучше использовать sizeof?
0
285 / 172 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
30.06.2015, 15:21 15
Цитата Сообщение от mihaprad Посмотреть сообщение
Помогите понять, где лучше использовать sizeof?
Для чего он Вам сейчас нужен? Вы же размеры явно указали.
0
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 60
30.06.2015, 15:47  [ТС] 16
Цитата Сообщение от Sn1p3rOk Посмотреть сообщение
Для чего он Вам сейчас нужен? Вы же размеры явно указали.
Просто меня настораживает for ( int k = 0; k < 8; k++ ), именно k < 8. Думаю, должно быть что-то другое.

Добавлено через 18 минут
Sn1p3rOk, плиз выложите код с использованием sizeof в циклах и т.д., это последнее о чем прошу)
0
285 / 172 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
30.06.2015, 16:12 17
Цитата Сообщение от mihaprad Посмотреть сообщение
плиз выложите код с использованием sizeof в циклах и т.д., это последнее о чем прошу)
Пробуй так.
C++
1
k < sizeof(firstArray[0] + twoArray[0]) / 2 * sizeof(int)
Добавлено через 7 минут
Мне кажется если в ваших файла будет много повторяющихся цифр, то думаю Ваш код правильно работать не будет.

Добавлено через 1 минуту
Извиняюсь, некорректно написал пример с sizeof. Вот правильный результат.
C++
1
k < sizeof(firstArray[0] + twoArray[0]) / sizeof(int)
0
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 60
30.06.2015, 16:18  [ТС] 18
Sn1p3rOk, код работает, спасибо!
Именно этот работает
C++
1
k < sizeof(firstArray[0] + twoArray[0]) / 2 * sizeof(int)
а этот нет
C++
1
k < sizeof(firstArray[0] + twoArray[0]) / sizeof(int)
0
285 / 172 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
30.06.2015, 16:21 19
Цитата Сообщение от mihaprad Посмотреть сообщение
Именно этот работает
А правильный, что не работает?
0
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 60
30.06.2015, 16:23  [ТС] 20
Цитата Сообщение от Sn1p3rOk Посмотреть сообщение
А правильный, что не работает?
Не работает.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2015, 16:23
Помогаю со студенческими работами здесь

Третий массив заполнить буквами входящими и в первый и во второй массив
Добрый Вечер Всем. Дано два массива. Они заполнены случайными буквами латинского алфавита. Ок это я...

Заполнить третий массив теми числами, которые входят и в первый и во второй массив
Помогите сделать задачу с использованием массива. Заполнить два массива размером 20 и 30...

Заполнить третий массив теми буквами, которые входят и в первый и во второй массив
Заполнить двумерный массив размером 20 и 30 элементов случайным образом буквами латинского...

Объединить массивы в третий динамический массив через указатели
Пользователь вводит размеры двух массивов и сами массивы. Программа объединяет эти массивы в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru