Vraag : Hoe zette ik komma's tussen de brieven in mijn output?

Zie mijn code hieronder: de output

The kijkt als dit: />22 voeten 33: De voeten van BD
44: CE

I wil het als dit kijken: />22 voeten 33 voeten F44 voeten, C, E

How neem ik komma's op?  
" codeBody "
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:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
#include 
#include 
#include 
#include 
#include 
#include 
#include 

het gebruiken van namespace norm;

struct StudentAttempt
{
   int. afstand;
   koord studentName;
};

bool cmpDist (recht verlaten StudentAttempt, StudentAttempt) {
   als (left.distance == right.distance) {
      ware terugkeer;
   }

  valse terugkeer;
}

bool cmpAttempts (recht verlaten StudentAttempt, StudentAttempt) {
   als (left.distance < right.distance) {
      ware terugkeer;
   }
   als anders (left.distance == right.distance) {
      als (left.studentName < right.studentName) {
         ware terugkeer;
      }
      anders
         valse terugkeer;
   }
   anders
      valse terugkeer;
}

isDistEqual bool (recht verlaten StudentAttempt, StudentAttempt) {
   terugkeer (left.distance == right.distance
      && left.studentName! = right.studentName);
}

size_t printAllEqual (const vector& v, const StudentAttempt& sa, stringstream& ss) {

  vector:: const_iterator i = v.begin ();
  size_t sz = 0;

  terwijl (I! = v.end ()) {

    als (isDistEqual (*i, sa)) {
    
      ss << i->studentName;
      ++sz;
    }

    ++i;
  }

  terugkeer sz;
}

int. leiding () {

   throwDist van StudentAttempt [] = {
      {50, „A“}, {22, „A“}, {16, „B“}, {44, „C“},
      {33, „D“}, {34, „E“}, {22, „F“}, {21, „G“},
      {49, „A“}, {5, „B“}, {2, „C“}, {22, „A“},
      {33, „B“}, {22, „C“}, {22, „D“}, {44, „E“},
   };

   set behandeld;

   int. len = sizeof (throwDist)/sizeof (throwDist [0]);
   vector dist (throwDist, throwDist + len);
   vector:: iterator het = dist.begin ();

   soort (dist.begin (), dist.end (), cmpAttempts);
   //unique (dist.begin (), dist.end (), cmpDist);


   voor (; het! = dist.end (); it++) {

      stringstream ss;

      pair:: iterator, bool> p = handled.insert (it->distance);

      als (! p.second) ga verder; reeds behandeld //

      als (0 < printAllEqual (dist, *it, ss)) 
        cout << setw (2) << (*it) .distance 
           << „voeten:  “ << (*it) .studentName << ss.str () << endl;
   }

   
}

Antwoord : Hoe zette ik komma's tussen de brieven in mijn output?

Een lichte verandering in 'printAllEqual () zal dat (nemend in rekening een slepende komma aan het eind niet om toe te voegen) doen:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
size_t printAllEqual (const vector& v, const StudentAttempt& sa, stringstream& ss) {

  vector:: const_iterator i = v.begin ();
  size_t sz = 0;
  bool bFirst = waar;

  terwijl (I! = v.end ()) {

    als (isDistEqual (*i, sa)) {
    
      als (! bFirst) ss <>studentName;
      ++sz;
    }

    ++i; 
    bFirst = vals;
  }

  terugkeer sz;
}
Andere oplossingen  
 
programming4us programming4us