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

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

Войти
Регистрация
Восстановить пароль
 
El_i_z_a_b_e_th
0 / 0 / 0
Регистрация: 30.11.2015
Сообщений: 82
#1

Выводит какое-то левое число подскажите в чем ошибка? - C++

02.10.2016, 10:57. Просмотров 183. Ответов 5
Метки нет (Все метки)

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
#include <iostream>
#include <cmath>
#include <ctime>
#include <clocale>
#include <conio.h>
 
using namespace std;
 
//функция, сливающая массивы
void Merge(int *A, int first, int last)
{
    int middle, start, final, j;
    int *mas = new int[100];
    middle = (first + last) / 2; //вычисление среднего элемента
    start = first; //начало левой части
    final = middle + 1; //начало правой части
    for (j = first; j <= last; j++) //выполнять от начала до конца
    if ((start <= middle) && ((final>last) || (A[start]<A[final])))
    {
        mas[j] = A[start];
        start++;
    }
    else
    {
        mas[j] = A[final];
        final++;
    }
    //возвращение результата в список
    for (j = first; j <= last; j++) 
        A[j] = mas[j];
    delete[]mas;
};
//рекурсивная процедура сортировки
void MergeSort(int *A, int first, int last)
{
    {
        if (first<last)
        {
            MergeSort(A, first, (first + last) / 2); //сортировка левой части
            MergeSort(A, (first + last) / 2 + 1, last); //сортировка правой части
            Merge(A, first, last); //слияние двух частей
        }
    }
};
//главная функция
int main()
{
    setlocale(LC_ALL, "Rus");
    int n;
    cout << "Размер массива: "; 
    cin >> n;
    int *A = new int[n];
 
    for (int i = 0; i < n; ++i) // заполнение массива
    {
        A[i] = rand() % 20;
        cout << A[i] << " ";
    }
 
    cout << endl;
    MergeSort(A, 0, n-1); //вызов сортирующей процедуры
    cout << "Упорядоченный массив: "; //вывод упорядоченного массива
    for (int i = 0; i <= n; i++) 
        cout << A[i] << " ";
    
    delete[]A;
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2016, 10:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выводит какое-то левое число подскажите в чем ошибка? (C++):

Вывести N-е полупростое число (программа постоянно выводит число 4; не могу понять в чем ошибка) - C++
ПОМОГИТЕ ПОЖАЛУЙСТА НАЙТИ ОШИБКУ! #include &lt;stdio.h&gt; #include &quot;fstream&quot; #include &lt;iostream&gt; #include &lt;vector&gt; using...

В чем ошибка? Выводит просто черное окно - C++
В чем ошибка? Выводит просто черное окно #include &lt;SFML\Graphics.hpp&gt; #include &lt;SFML\OpenGL.hpp&gt; #include &lt;gl\GLU.h&gt; #pragma...

Подскажите в чем ошибка (С++) - C++
typedef struct { char name, mark; unsigned price, num; } Comp; Comp *list = NULL; int cnt = 0; int Add(Comp val)

подскажите в чем ошибка - C++
поставлена задача: Задан одномерный массив В, состоящем из n вещественных элементов. Определить позиции массива, в которых расположены...

Подскажите в чем ошибка! - C++
Программа должна выводить адресса букв, но в итоге выводит ошибку &quot;error: invalid type argument of `unary *' &quot; в 17 строке. Почему??? ...

Подскажите в чем ошибка - C++
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; void main() { int i; float a,b; double c; FILE *fout; ...

5
мановар
903 / 337 / 74
Регистрация: 12.03.2016
Сообщений: 1,334
Завершенные тесты: 1
02.10.2016, 11:17 #2
строка 63 i < n как в предыдущем цикле
0
El_i_z_a_b_e_th
0 / 0 / 0
Регистрация: 30.11.2015
Сообщений: 82
02.10.2016, 16:16  [ТС] #3
а на что его поменять можно ? ведь n - это размерность моего массива

Добавлено через 2 минуты
мановар, иначе же будет не правильно
0
мановар
903 / 337 / 74
Регистрация: 12.03.2016
Сообщений: 1,334
Завершенные тесты: 1
02.10.2016, 16:56 #4
Ничего менять не надо. Как создаете массив в 54 строке, так его и выводите в 63.
C++
1
for (int i = 0; i < n; ++i)
, а размерность ваша остается, так как массив начинается с A[0], а не с A[1]

Добавлено через 11 минут
Пусть n=3, тогда наш массив A[0],A[1],A[3] - 3 элемента (i<3), а при (i<=3) получаем A[0],A[1],A[2],A[3] - 4 элемента, переизбыток. Вот он Вам и выдает этот лишний четвертый элемент.
0
El_i_z_a_b_e_th
0 / 0 / 0
Регистрация: 30.11.2015
Сообщений: 82
02.10.2016, 18:52  [ТС] #5
мановар, спасибо не заметила)
0
мановар
903 / 337 / 74
Регистрация: 12.03.2016
Сообщений: 1,334
Завершенные тесты: 1
02.10.2016, 20:16 #6
El_i_z_a_b_e_th, пожалуйста, бывает.
0
02.10.2016, 20:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2016, 20:16
Привет! Вот еще темы с ответами:

Подскажите в чем ошибка - C++
Не могу понять вроде все правильно а не запускается #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #include &lt;time.h&gt; ...

подскажите в чем ошибка - C++
только сегодня начал знакомство и вот уже проблемка)подскажите пожалуйста в чем ошибка)) Две дроби a/b и c/d можно сложить следующим...

Подскажите в чем ошибка - C++
Вывести матрицу из 20 элементов целого типа. Определить каких элементов больше четных или нечетных { int A, i, m=0, n=0; for(i=0;...

Подскажите в чем ошибка?! - C++
#include&lt;windows.h&gt; LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE my_hinstance, HINSTANCE...


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

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

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