Oppure

Loading
16/02/14 9:59
imZodiac
Salve a tutti, tra pochi giorni ho un' esame di informatica, in particolare abbiamo trattato il c++. mi sono messo a fare degli esami degli anni passati in questi giorni e ho visto che alcune volte la soluzione mi esce proprio come quella della prof, altre volte no. Ora io so che in informatica ci sono mille modi differenti di fare un programma, però questo quesito in particolare mi ha lasciato un po di perplessità:

Scrivere una funzione che presi come argomenti una lista di elementi di tipo elem e due interi i e j, modifica la listaeliminando tutti gli elementi compresi fra la posizione i e la posizione j (i e j inclusi).
Assumere che il primo elemento della lista abbia posizione 1, il secondo elemento della lista abbia posizione 2 e cosi’ di
seguito. La funzione deve gestire le eventuali situazioni di errore.
io ho svolto l'esercizio in questo modo:

void EliminaLista (elem *testa , int i , int j) {
 int inizio=0; int fine=0;
 elem *p=testa; elem *q;
 while (p!=NULL) {
  q=p;
  p=p->pun;
  inizio++;
  if (inizio=i-1) {
   while (fine=j-1) {
    q->pun=p->pun;
    delete p;
    p=q;
    fine++;
   }
  }
 }
return ;
}


ora invece vi mostro il codice del professore:

Codice:
void elimina(elem*& p, int i, int j) {
if ((p==NULL) || (i<=0 || j <=0 || i >j))
return;
elem*q = p, *r;
for (int k=1; (k<i) && (q!=NULL); k++) {
r=q;
q=q->pun;
}
if (q==NULL)
return;
int quanti = j-i +1;
if (q==p) {
while (p!=NULL && quanti >0){
p=p->pun;
delete q;
quanti--;
q=p;
}
}
else {
while (q!=NULL && quanti >0){
r->pun = q->pun;
delete q;
q=r->pun;
quanti--;
}
}
return;
}



come vedete la soluzione del prof è più lunga, questo sicuramente vuol dire che ho sbagliato io qualcosa perchè lui non scriverebbe mai un programma più lungo se non servisse. vorrei quindi sapere se effettivamente ho sbagliato io oppure sono corretti entrambi i codici.

ps: ho il sospetto che il passaggio argomenti per riferimento (che io non ho messo ma il prof si) c'entri qualcosa. grazie a tutti delle risposte!
aaa
16/02/14 11:53
nessuno
Vedi risposte che hai avuto qui

forum.html.it/forum/…

che è un ottimo forum.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
17/02/14 15:27
pierotofy
Non si sfugge al guardiano dei cross-forum-posting. :rofl:
Il mio blog: piero.dev