1

(string) (int) (string) (int) である文字列を分割する必要があります。最初の文字列が「#」になるまでこれを続けます。しかし、最後に '#' を入力したいときはいつでも、# (int) (string) (int) という文字列全体を入力する必要があります。文字列全体ではなく、# を入力して終了するだけで済むようにコーディングするにはどうすればよいですか? これは私が持っているコードです:

void afegirEquips(EquipLliga & e) {
// Pre: --
// Post: Afegeix els equips entrats per teclat amb els seus gols al vector d'equips i calcula els seus punts

    string equipA, equipB;
    int golsA=0, golsB=0, n=0, cerca;
    e.n=0;
    cin >> equipA;
    cin >> golsA >> equipB >> golsB;          // Entra el primer equip per poder comprobar la condicio del 'while'
    while(equipA!=FI) {
        if(e.n>0) {
            cin >> equipA;
            cin >> golsA >> equipB >> golsB;      // Entra tots els equips menys el primer
        }
        cerca=cercaEquip(e,equipA);
        int posA=0;
        if(cerca==-1) {                      // Guarda la informacio del primer equip entrat i actualitza els gols i punts
            e.t[n].nomEquip=equipA;          // en el cas que l'equip sigui nou a la llista d'equips
            e.t[n].golsf=golsA;
            e.t[n].golsc=golsB;
           if(golsA>golsB) e.t[n].punts=e.t[n].punts+3;
           if(golsA<golsB) e.t[n].punts=e.t[n].punts;
           if(golsA==golsB) e.t[n].punts=e.t[n].punts+1;
            e.n++;
            n++;
        }
        else {                                              // Guarda la informacio del primer equip entrat i actualitza els gols i punts
            e.t[cerca].golsf=e.t[cerca].golsf+golsA;        // en el cas que l'equip ja existeixi a la llista d'equips
            e.t[cerca].golsc=e.t[cerca].golsc+golsB;
            if(golsA>golsB) e.t[cerca].punts=e.t[cerca].punts+3;
            if(golsA<golsB) e.t[cerca].punts=e.t[cerca].punts;
            if(golsA==golsB) e.t[cerca].punts=e.t[cerca].punts+1;
        }
        cerca=cercaEquip(e,equipB);
        int posB=0;
        if(cerca==-1) {                                     // Guarda la informacio del segon equip entrat i actualitza els gols i punts
            e.t[n].nomEquip=equipB;                         // en el cas que l'equip sigui nou a la llista d'equips
            e.t[n].golsf=golsB;
            e.t[n].golsc=golsA;
            if(golsA>golsB) e.t[n].punts=e.t[n].punts;
            if(golsA<golsB) e.t[n].punts=e.t[n].punts+3;
            if(golsA==golsB) e.t[n].punts=e.t[n].punts+1;
            e.n++;
            n++;
        }
        else {                                              // Guarda la informacio del segon equip entrat i actualitza els gols i punts
            e.t[cerca].golsf=e.t[cerca].golsf+golsB;        // en el cas que l'equip ja existeixi a la llista d'equips
            e.t[cerca].golsc=e.t[cerca].golsc+golsA;
            if(golsA>golsB) e.t[cerca].punts=e.t[cerca].punts;
            if(golsA<golsB) e.t[cerca].punts=e.t[cerca].punts+3;
            if(golsA==golsB) e.t[cerca].punts=e.t[cerca].punts+1;
        }
    }
}

コードの残りの部分は気にしないでください。重要なのは cin だけです。何か案が?

4

1 に答える 1

2

チェックした後にのみ他の入力を読み込むように、ループを変更する必要がありますequipA

  cin >> equipA;
  while(equipA!=FI) {
      cin >> golsA >> equipB >> golsB;
      //...
      cin >> equipA;
  }
于 2013-02-16T01:11:42.973 に答える