Member 13639632 Ответов: 3

Почему эта ошибка завершается сигналом 11


вот этот код
это дает некоторую ошибку, пожалуйста, помогите

пытался найти Макс не идеальный квадрат в арарии

Что я уже пробовал:

#include<iostream>
#include<math.h>

int main()
{
    int mp=-1;
    int n;
    int A[n];
    std::cin>>n;
    int i;
    for(i=0;i<n;i++)
    {
        std::cin>>A[i];
    }
    for(i=0;i<n;i++)
    {
        int d=sqrt(A[i]);
        if(d*d!=A[i])
        {
            if(A[i]>mp)
            {
                mp=A[i];
            }
        }
    }
    std::cout<<mp;
    return 0;
}

ZurdoDev

И в чем же ошибка?

3 Ответов

Рейтинг:
1

Patrice T

Цитата:
Почему эта ошибка завершается сигналом 11

Когда вы не понимаете, почему ваш код терпит неудачу, ответ-отладчик.

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что он делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
0

CPallini

Вам даже не нужен массив для этого:

#include <iostream>
#include <cmath>

int main()
{
  int mp=-1;

  int N;

  std::cin >> N;

  for(int n =0; n < N; n++)
  {
    int x;
    std::cin >> x;
    if ( x > mp)
    {
      int d = static_cast<int>(sqrt(x));
      if ( d*d != x )
        mp = x;
    }
  }
  std::cout << "the maximum non-perfect-square number is " << mp << std::endl;
}


Рейтинг:
0

Rick York

Это не будет компилироваться так, как есть. Сначала вам нужно получить n, а затем определить размер массива в соответствии с ним. Вот один из способов выделения целочисленного массива :

...
   int n;
   std::cin >> n;
   int * intArray = new int[n];

   // rest of code goes here

   delete [] intArray;  // memory must be freed after use
}