#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){
}
}



Le problème est à la ligne 22 au niveau du cout et il donne ce message: C: \ Users \ use \ Documents \ Dev C ++ \ void_vektor.cpp | 22 | error: no match for 'operator <<' (les types d'opérande sont 'std: : basic_ostream 'et' ') |

0
user13180321 1 avril 2020 à 19:46

3 réponses

Meilleure réponse

Le principal problème est que vous déclarez min dans la boucle for, cela sortira de la portée lorsque la boucle se terminera.

Le message d'erreur bizarre est probablement dû à la fonction std::min. Ceci est une bonne étude de cas expliquant pourquoi ne pas utiliser using namespace std;.

À première vue, il y a d'autres problèmes dans votre code:

  • i, min et j ne sont pas utilisés dans main().

  • n est utilisé non initialisé, il s'agit d'un comportement non défini, en outre < a href = "https://stackoverflow.com/questions/11379433/c-forbids-variable-size-array/11379442"> C ++ interdit les tableaux de taille variable . Si vous avez besoin d'un tableau de longueur variable, vous pouvez utiliser quelque chose comme std :: vector.

  • if(min = 0 > D[i-1][j-1]) est très étrange, est-ce vraiment ce dont vous avez besoin?

À l'avenir, vous devriez utiliser les avertissements du compilateur.

0
anastaciu 1 avril 2020 à 17:29

min n'est visible que dans la portée de la boucle for car vous l'avez déclaré à l'intérieur de la boucle.

L'a déclaré ici:

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;

Notez également que vous avez utilisé n non initialisé dans main et même si vous le prendrez comme entrée dans la fonction, envoyer une variable non initialisée à une fonction peut être problématique.

Et aussi déplacer la déclaration de int D[n][n]; après avoir pris n comme entrée.

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

Au lieu de vos boucles, je suggère ceci qui est plus facile:

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;

Notez également que si vous initialisez min=0, vous ne pouvez pas trouver min dans un tableau dans lequel tout elements>0. Je suggère min=[0][0].

1
hanie 1 avril 2020 à 17:20

Il y a un problème fondamental ici: l'appel matrice(n) dans main utilise la valeur non initialisée de n, donc si votre compilateur prend en charge cette syntaxe int D[n][n], vous n'avez aucune idée de la taille du tableau est en fait. Formellement, le comportement n'est pas défini. De manière informelle, il y a 50/50 de chances que vous obteniez un nombre négatif, ce qui n'a pas de sens en tant que taille de tableau.

0
Pete Becker 1 avril 2020 à 16:57