Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
triadec_96
12 / 12 / 1
Регистрация: 27.12.2012
Сообщений: 442
Завершенные тесты: 1
#1

Создание отсортированого массива с двух - C++

10.09.2013, 23:01. Просмотров 325. Ответов 2
Метки нет (Все метки)

Задание:
Есть массив c[1],...c[n] и массив d[1],...d[k].С этих двух массивов создать массив f так,чтобы f[1]<=f[2]<=...<=f[n+k].
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
#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
    int i,j,c[255],d[255],f[255],t,n,k,q,w,e;
 
    cout<<"Input n"<<endl; //ввод переменных n и k
    cin>>n;
    system("cls");
    cout<<"Input k"<<endl;
    cin>>k;
    system("cls");
 
    for(i=0;i<n;i++) //ввод массивов
    {cout<<"Input c"<<endl;
    cin>>c[i];}
 
    for(i=0;i<k;i++)
    {cout<<"Input d"<<endl;
    cin>>d[i];}
    system("cls");
 
    for(i=0;i<n-1;i++) //сортировка массивов
        for(j=0;j<n-1;j++)
            if(c[j]>c[j+1]) 
            {t=c[j];
            c[j]=c[j+1];
            c[j+1]=t;}
 
    for(i=0;i<k-1;i++)
        for(j=0;j<k-1;j++)
            if(d[j]>d[j+1]) 
            {t=d[j];
            d[j]=d[j+1];
            d[j+1]=t;}
 
    t=0;j=0;q=0; //t-индекс текущего элемента массива с,j-ИТЭМ d,q-число,которое будем присваивать эл. масс. f
        for(i=0;i<n+k;i++)
        {
            if(t==n-1) //если закончились элементы с
            {e=i; //e-новый индекс масс. f
                for(w=j;j<k;w++,e++)
                    f[e]=c[w];
        i=254;} // это потому,что в конце цыкла есть строка "f[i]=q" и надо сбить i
        else if(j==k-1) //если закончились элементы d
            {e=i;
                for(w=j;j<k;w++,e++)
                    f[e]=d[w];
        i=254;}
            if(c[t]==d[j]) //если текущий с равен текущему d
        {f[i]=c[t]; 
        q=d[j];
        i++;t++;j++;} //думаю понятно почему так много инкрементов
        else if(c[t]<d[j]) //здесь тоже не сложно
        {q=c[t];t++;}
        else {q=d[j];j++;}
        
        f[i]=q;}
 
        for(i=0;i<n+k;i++)
            cout<<f[i]<<" ";
 
    getch();
}
Проблема в том,что перед выводом результата выбивает "Необработанное исключение по адресу 0x009552ED в Проект1.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x00260000."
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2013, 23:01     Создание отсортированого массива с двух
Посмотрите здесь:

Создание нового массива из двух предыдущих - C++
Помогите , господа прогеры. Я начинающий в C++. И мне нужна помощь от вас. Мне надо сделать программу , которая : 1. Надо создать 1...

Создание минимально возможного третьего динамического массива из двух - C++
Подскажите в чем ошибка. Есть код #include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int main() { int a=10; int...

Найти произведение двух наибольших и двух наименьших отрицательных нечетных чисел массива - C++
Найти произведение двух наибольших и двух наименьших отрицательных нечетных чисел массива Дана последовательность из n различных целых...

Создание двух объектов класса Employee - C++
Напишите программу с использованием класса Emloyee, два объекта класса Employee, устанавливает значения членов itsAge, itsYearOfService, и ...

Создание функции max, возвращающей максимальное значение из двух чисел - C++
создайте функцию max, возвращающую максимальное значение из двух чисел. введите вещественные числа a,b,c. используя функцию max, вычислите...

Создание ДЕК (как стэк только о двух концах) без <deque> - C++
здравствуйте! написал класс Deque, создал методы push_back(), push_front(), pop_back(), pop_front()... Все работает нормально, кроме...

Проход массива с двух концов - C++
Подскажите, как пройтись с двух концов строки в двухмерном массиве: //Функция для первого задания, которая заполняет...

Формировка третьего массива из двух других - C++
Привет всем. Пишу программу, формирующую третий массив из двух. И мне надо вывести массив на консоль. Я не знаю, как последний пункт...

Сортировка массива с помощью двух функций - C++
Всем добрый вечер. Нужно написать программу, которая бы сортировала динамический массив, с помощью ДВУХ функций(main,sortirovka). ...

Сравнение двумерного массива созданного из двух строк - C++
Вот первая проблема,если при вводе первого предложения поставить пробел то второе он вводить уже не требует а сразу работает далее, почем...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
10.09.2013, 23:18     Создание отсортированого массива с двух #2
лучше написать отдельную функцию для сортировки массива, чем одно и тоже писать в нескольких частях программы

Добавлено через 31 секунду
отсюда и появляются ошибки
Stella
75 / 75 / 5
Регистрация: 26.02.2013
Сообщений: 224
11.09.2013, 00:16     Создание отсортированого массива с двух #3
triadec_96, возможно сначала здесь:

C++
1
2
3
4
5
6
7
        if(t==n-1) //если закончились элементы с
        {
            e=i; //e-новый индекс масс. f
            for(w=j;j<k;w++,e++)
                f[e]=c[w];
            i=254;
        } // это потому,что в конце цыкла есть строка "f[i]=q" и надо сбить i
элементы с у вас закончились, а почему вы в f дальше элементы из с записываете?


Цитата Сообщение от triadec_96 Посмотреть сообщение
i=254;} // это потому,что в конце цыкла есть строка "f[i]=q" и надо сбить i
вот по-этому скорее всего и исключение.
как только заканчиваются элементы из с или d, i устанавливается 254, а потом увеличивается на 1 (в условии цикла) и стает 255, а потом читается с[255] или d[255] - и выход за границы массива.

Попробуйте пройти программу по F10 и посмотрите, как изменяются переменные. Тогда будет видно.
Yandex
Объявления
11.09.2013, 00:16     Создание отсортированого массива с двух
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru