Вывод массива в C++ (При сравнении массивов)

158
15 января 2019, 14:50

Задается 2 массива a и b, нужно вывести массив имеющий наименьшее кол-во положительных элементов. Пример: Массив a { 1, 2,3}, массив b { -4, -5, 6} программа выводит рандомное число -33686019.

#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
    int i, n, el1 = 0, el2 = 0, z, f;
    cout << " kol-vo elementov v massive n=";
    cin >> n;
    int *a = new int[n];
    int *b = new int[n];
    cout << "       Vvedi elemeti dlya I massiva: ";
    for (i = 0; i < n; i++) cin >> a[i];
    cout << "       Vvedi elemeti dlya II massiva: ";
    for (i = 0; i < n; i++) cin >> b[i];
    for (i = 0; i < n; i++)
    {
        if (a[i] > 0) el1++;
        if (b[i] > 0) el2++;
    }
    if (el1 > el2) cout << "1 massive \n:" << a[i] << ' ';
    if (el1 < el2) cout << "2 massive \n:" << b[i] << ' ';
    if (el1 == el2) cout << "\n Oni ravni";
    delete[]a;
    delete[]b;
    return 0;
    system("pause");
}
Answer 1

Значение i к тому моменту как вы делаете

if (el1 > el2) cout << "1 massive \n:" << a[i] << ' ';
if (el1 < el2) cout << "2 massive \n:" << b[i] << ' ';
if (el1 == el2) cout << "\n Oni ravni";

равно n, т.е. является недопустимым индексом для доступа в ваши массивы. В результате ваша попытка вывести элемент a[i] (или b[i]) производит доступ за пределы массива и выводит содержащийся там мусор. Этот мусор и есть ваше "рандомное число".

Зачем вы вообще пытаетесь выводить этот странный элемент a[i]? Вывод массива делается так же, как вы делали и ввод массива: вручную, поэлементно.

P.S. Зачем нужны переменные z и f? И какой смысл вы вкладываете в system("pause"); после return 0;?

READ ALSO
C++ Windows API цикл обработки сообщений

C++ Windows API цикл обработки сообщений

Есть Windows API окно обернутое в класСоздается в Windows API main методе например так:

158
Создание таблиц в PostgreSql из сгенерированных POJO классов из схемы AVRO

Создание таблиц в PostgreSql из сгенерированных POJO классов из схемы AVRO

Всем привет! Может кто сталкивался или знает куда копать?

199
MyClass&lt;&gt; myClass = new MyClass&lt;&gt;();

MyClass<> myClass = new MyClass<>();

И такЕсть известный класс ArrayList

148
Вычисление строк по hashCode

Вычисление строк по hashCode

Поставлена такая задача

207