Bonjour,

la compile du fichier recurs.cpp ne passe pas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
In file included from /usr/include/c++/11/vector:66,
                 from recurs.cpp:3:
/usr/include/c++/11/bits/stl_uninitialized.h:138:72: error: static assertion failed: result type must be constructible from value type of input range
  138 |       static_assert(is_constructible<_ValueType2, decltype(*__first)>::value,
/usr/include/c++/11/bits/stl_uninitialized.h:138:72: note: ‘std::integral_constant<bool, false>::value’ evaluates to false
In file included from /usr/include/c++/11/bits/char_traits.h:39,
                 from /usr/include/c++/11/ios:40,
                 from /usr/include/c++/11/ostream:38,
                 from /usr/include/c++/11/iostream:39,
                 from recurs.cpp:1:
/usr/include/c++/11/bits/stl_algobase.h:385:25: error: no match foroperator=’ (operand types are ‘std::vector<std::__cxx11::basic_string<char> >’ and ‘std::__cxx11::basic_string<char>’)
  385 |               *__result = *__first;
      |               ~~~~~~~~~~^~~~~~~~~~
In file included from /usr/include/c++/11/vector:72,
                 from recurs.cpp:3:
/
voici le fichier recurs.cpp en entier:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <string>
#include <vector>
 
 
 
std::vector<std::vector<std::string>>productionstete(std::string tete,std::vector<std::vector<std::string>>const &grammaire_s);
 
int main(){
  std::vector<std::vector<std::string>>grammaire_s={
    {"S","A","a"},
    {"S","b"},
    {"A","A","c"},
    {"A","S","d"},
    {"A","epsilon"}
  };
  std::string tetej,tete;
  std::vector<std::string>gamma;
  std::vector<std::vector<std::string>>P;
  for(size_t i=0;i<grammaire_s.size();i++)
    for(size_t j=0;j<i;j++)
      if(grammaire_s[j][0]==grammaire_s[i][1]){
	tetej=grammaire_s[j][0];
	P=productionstete(tetej,grammaire_s);
	gamma=grammaire_s[i];
	gamma.erase(gamma.begin(),gamma.begin()+2);
	tete=grammaire_s[i][0];
	grammaire_s.erase(grammaire_s.begin()+i);
	for(auto p:P){
	  p.insert(p.end(),gamma.begin(),gamma.end());
	  grammaire_s.insert(grammaire_s.begin()+i,p.begin(),p.end());
	}
      }
  for(auto p:grammaire_s){
    for(auto s:p)
      std::cout<<s<<' ';
    std::cout<<std::endl;
  }
}
 
std::vector<std::vector<std::string>>productionstete(std::string tete,std::vector<std::vector<std::string>>const &grammaire_s){
  std::vector<std::vector<std::string>>sortie;
  for(auto p:grammaire_s)
    if(p[0]==tete)
      sortie.push_back(p);
  return sortie;
}
quelqu'un a une idée?