Неизвестная ошибка компилятора в cout << теоретически работает - PullRequest
0 голосов
/ 01 апреля 2020
#include <iostream>
using namespace std;

void matrice(int n){


cout<<"Input the number of the elements "<<endl;
cin>>n;
int D[n][n];
cout<<"Input the elements :";
for(int i=0;i<n;i++){
  for(int j=0;j<n;j++){
        cin>>D[i][j];

  }
}
int min;
for(int i=1;i<=n;i++){
    for(int j=1;j<=n;j++){
            if( min=0>D[i-1][j-1]){
        D[i-1][j-1]=min;
    }
    }
}
cout<<" The smallest element is : "<< min<<"and it is the"<< i <<" element ."  ;
}


int main(){
int i, min ,j,n;

int n1;
    cout<<"Decide: "<<endl;
    cout<<"Matrice[1]"<<"\t"<<"Vekcor[2]"<<endl;
cin>>n1;
if(n1==1){
    matrice(n);
}
else if(n1==2){
}
}



Проблема в строке 22 у cout, и она выдает следующее сообщение: C: \ Users \ use \ Documents \ Dev C ++ \ void_vektor.cpp | 22 | ошибка: нет соответствия для оператора << '(типы операндов:' std :: basic_ostream 'и' ') | </p>

Ответы [ 3 ]

1 голос
/ 01 апреля 2020

min отображается только в области видимости l oop, поскольку вы объявили его внутри l oop.

объявили его здесь:

int min=D[0][0];
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            if (min > D[i - 1][j - 1])
            {
                D[i - 1][j - 1] = min;
            }
        }
    }
    cout << " Elementi me i vogel eshte : " << min;

также обратите внимание, что вы использовали неинициализированный n в основном и даже если вы примете его в качестве ввода в функцию, отправка неинициализированной переменной в функцию может быть проблематичной c.

, а также переместить объявление int D[n][n]; после принятия n в качестве ввода.

cout<<"Input the number of the elements "<<endl;
cin>>n;
int D[n][n];

вместо ваших циклов, я предлагаю это, что проще:

int min=D[0][0];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (min > D[i][j])
            {
                D[i][j] = min;
            }
        }
    }
    cout << " Elementi me i vogel eshte : " << min;

также обратите внимание, что если вы инициализируете min=0, вы не можете найти min в массиве, в котором все elements>0. Я предлагаю min=[0][0].

0 голосов
/ 01 апреля 2020

Здесь есть фундаментальная проблема: при вызове matrice(n) в main используется неинициализированное значение n, поэтому, если ваш компилятор поддерживает синтаксис int D[n][n], вы не представляете, насколько большой массив на самом деле. Формально поведение не определено. Неофициально, есть вероятность 50/50, что вы получите отрицательное число, которое не имеет смысла как размер массива.

0 голосов
/ 01 апреля 2020

Основная проблема заключается в том, что вы объявляете min внутри for l oop, оно выходит за пределы go при выходе из l oop.

Странное сообщение об ошибке: скорее всего из-за функции std::min. Это хороший пример того, почему бы не использовать using namespace std;.

На первый взгляд в вашем коде есть другие проблемы:

В будущем вы должны использовать предупреждения компилятора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...