c++ telefoonboek

Status
Niet open voor verdere reacties.

jansen3

Nieuwe gebruiker
Lid geworden
25 jul 2006
Berichten
1
Ik weet dat het niet netjes is, maar ik heb een vraag over een schoolopdracht.
De bedoeling is dat ik een telefoonboek ga koppelen aan een gesimuleerde centrale, Object georiënteerd programmeren.
NU ben ik bijna klaar maar ik krijg 1 gedeelte niet voor elkaar, vergelijken van gebelde nummers met nummers in het telefoonboek.
Ik heb er al enige uren inzitten maar kom er niet uit:confused: , misschien dat er iemand met meer ervaring even naar wil kijken.

Wat ik nu heb is hieronder bijgevoegd.



case 'v': {
cout << "v: verwerk de gesprekken van de centrale in het telefoonboek" << endl;
for (int i=0;i<gesprekaantal;i++) {
verwerkt=false;
for (int j=0;j<aantal;j++) {
if (telefoonboek[j].zoeknummer(centrale.geefnummer())) {
telefoonboek[j].verwerkseconden(centrale.geefseconden());
telefoonboek[j].verwerktotaalkosten(centrale.geeftotaalkosten());
verwerkt=true;
}
}
if (verwerkt==false) {
overigenummers.verwerkseconden(centrale.geefseconden());
overigenummers.verwerktotaalkosten(centrale.geeftotaalkosten());
}
}
for (int i=0; i<gesprekaantal; i++) centrale .maakleeg();
break;

Alvast bedankt.
 
Ik ben zo vrij geweest om je code iets te veranderen, misschien dat dit iets oplevert:

Code:
case 'v': {
cout << "v: verwerk de gesprekken van de centrale in het telefoonboek" << endl;
for (int i=0;i<gesprekaantal;i++) {
  verwerkt=false;
  for (int j=0;j<aantal;j++) {
    if (telefoonboek[j].zoeknummer(centrale[i].geefnummer())) {
      telefoonboek[j].verwerkseconden(centrale[i].geefseconden());
      telefoonboek[j].verwerktotaalkosten(centrale[i].geeftotaalkosten());
      verwerkt=true;
    }
  }
  if (verwerkt==false) {
    overigenummers.verwerkseconden(centrale[i].geefseconden());
    overigenummers.verwerktotaalkosten(centrale[i].geeftotaalkosten());
  }
centrale[i].maakleeg();
}
break;
Nog even een toelichting: De laatste for() loop heb ik verwijderd omdat je anders twee keer dezelfde bewerking uitvoert (for (int i=0;i<gesprekaantal;i++)). De tweede "loop" zal niet worden uitgevoerd voordat de eerste beeindigd is - de nummers worden niet eerder verwijderd uit de centrale totdat alles doorlopen is -, dus het verwijderen ervan scheelt ook procestijd. Voor zover ik het heb begrepen wil je na het verwerken ervan het nummer verwijderen uit de centrale, dus kan dat direct gebeuren in plaats van een aparte routine ervoor te schrijven.

Ik hoop dat dit iets helpt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan