G
G
g hh2022-01-19 11:17:44
C++ / C#
g hh, 2022-01-19 11:17:44

Why is garbage displayed instead of elements of a dynamic array, and some elements are not displayed at all?

#include<iostream>


using namespace std;

int main()
{
  setlocale(LC_ALL, "ru");

  int k, m, n;
  int arrayType;

  cout << "Введите размер первого массива:" << endl;
  cin >> k;
  cout << endl << "Введите размер второго массива:" << endl;
  cin >> m;
  cout << endl << "Введите размер третьего массива:" << endl;
  cin >> n;

  cout << endl << "Введите значение типа массива:" << endl;
  cout << endl << "0 - float";
  cout << endl << "1 - int" << endl << endl;
  cin >> arrayType;
  if (arrayType)
  {
    cout << endl << "int" << endl;
    int* array1 = new int[k];
    int* array2 = new int[m];
    int* array3 = new int[n];

    int i = 0;
    while(i < k)
    {
      cout << "Введите значение элемента первого массива под индексом " << i <<  ": " << endl;
      cin >> array1[i];
      i++;
    }
    cout << endl;

    i = 0;
    while (i < m)
    {
      cout << "Введите значение элемента второго массива под индексом " << i <<  ": " << endl;
      cin >> array2[i];
      i++;
    }
    cout << endl;

    i = 0;
    while (i < n)
    {
      cout << "Введите значение элемента третьего массива под индексом " << i << ": " << endl;
      cin >> array3[i];
      i++;
    }
    cout << endl;

    i = 0;
    cout << "Элементы первого массива: ";
    while (i < m)
    {
      cout <<  array1[i] << " ";
      i++;
    }
    cout << endl;

    i = 0;
    cout << "Элементы второго массива: ";
    while (i < n)
    {
      cout << array2[i] << " ";
      i++;
    }
    cout << endl;

    i = 0;
    cout << "Элементы третьего массива: ";
    while (i < k)
    {
      cout << array3[i] << " ";
      i++;
    }
    cout << endl;


    delete[] array1;
    delete[] array2;
    delete[] array3;
  }
  else
  {
    cout << endl << "float" << endl;
    float* array1 = new float[k];
    float* array2 = new float[m];
    float* array3 = new float[n];

    int i = 0;
    while (i < k)
    {
      cout << "Введите значение элемента первого массива под индексом " << i << ": " << endl;
      cin >> array1[i];
      i++;
    }
    cout << endl;

    i = 0;
    while (i < m)
    {
      cout << "Введите значение элемента второго массива под индексом " << i << ": " << endl;
      cin >> array2[i];
      i++;
    }
    cout << endl;

    i = 0;
    while (i < n)
    {
      cout << "Введите значение элемента третьего массива под индексом " << i << ": " << endl;
      cin >> array3[i];
      i++;
    }
    cout << endl;

    i = 0;
    cout << "Элементы первого массива: ";
    while (i < m)
    {
      cout << array1[i] << " ";
      i++;
    }
    cout << endl;

    i = 0;
    cout << "Элементы второго массива: ";
    while (i < n)
    {
      cout << array2[i] << " ";
      i++;
    }
    cout << endl;

    i = 0;
    cout << "Элементы третьего массива: ";
    while (i < k)
    {
      cout << array3[i] << " ";
      i++;
    }
    cout << endl;

    delete[] array1;
    delete[] array2;
    delete[] array3;
  }


  
  return 0;
}

61e7c92529b3b610620392.png

Answer the question

In order to leave comments, you need to log in

1 answer(s)
O
Ocelot, 2022-01-19
@dangor266

When you populate arrays, the size variables go in the order k, m, n; and when you output - m, n, k. Come up with meaningful names instead of meaningless letters, so there is less chance of making a mistake.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question