17/10/12 16:11
Tommaso95
Ciao a tutti, sono nuovo e sto imparando a programmare con il Pascal sia a scuola sia per conto mio.
Ho creato qualche programma più o meno complesso (tutti relativamente facili alla fine) ma non riesco a saltarne fuori con questo che all'apparenza è semplicissimo ma ha un "pezzo" che mi crea problemi.
In pratica devo:
- Creare un array con 100 elementi
- Riempirlo con numeri da 1 a 100
- Controllare la presenza di eventuali doppioni e se ci sono sostituirli
- Stampare l'array.
Il codice che ho creato fino adesso è questo:
I problemi\domande che ho sono due:
1) Perchè la procedura controllo non funziona? Mi interessa sapere più che altro concettualmente che erroe ho fatto
2) Perchè il nostro prof ha detto che i parametri che mettiamo tra parentesi dopo il nome della procedura possono essere o di input\output (se hanno il var) o solo di input se non lo hanno ma in ogni caso mi stampano l'array ? Se non si è capita questa domanda, perchè anche se tolgo il var mi stampa l'array? In teoria non è solo di input?
Grazie a tutti.
P.S. Purtroppo da questo primo mesi di informatica a scuola ho notato che è una materia ancora tralasciata da molti. In classe siamo solo in 3-4 a sapere qualcosa, gli altri non sanno nemmeno a cosa serve read o write
Ho creato qualche programma più o meno complesso (tutti relativamente facili alla fine) ma non riesco a saltarne fuori con questo che all'apparenza è semplicissimo ma ha un "pezzo" che mi crea problemi.
In pratica devo:
- Creare un array con 100 elementi
- Riempirlo con numeri da 1 a 100
- Controllare la presenza di eventuali doppioni e se ci sono sostituirli
- Stampare l'array.
Il codice che ho creato fino adesso è questo:
program test; uses crt; type tab = array[1..100] of integer; var ele:tab; procedure carica_dati(var ele:tab); var a:byte; begin randomize; for a:=1 to 100 do ele[a]:=random(100)+1; end; procedure controllo_doppioni(var ele:tab); var a,pos:byte; begin for a:=1 to 100 do begin repeat pos:=2; if (ele[a]<>ele[pos]) and (pos<=100) then begin pos:=pos+1; end else ele[pos]:=random(100)+1; until pos>100; end; end; procedure stampa_dati(ele:tab); var a:byte; begin for a:=1 to 100 do Write(ele[a]:5); end; begin clrscr; carica_dati(ele); controllo_doppioni(ele); stampa_dati(ele); readln; end.
I problemi\domande che ho sono due:
1) Perchè la procedura controllo non funziona? Mi interessa sapere più che altro concettualmente che erroe ho fatto
2) Perchè il nostro prof ha detto che i parametri che mettiamo tra parentesi dopo il nome della procedura possono essere o di input\output (se hanno il var) o solo di input se non lo hanno ma in ogni caso mi stampano l'array ? Se non si è capita questa domanda, perchè anche se tolgo il var mi stampa l'array? In teoria non è solo di input?
Grazie a tutti.
P.S. Purtroppo da questo primo mesi di informatica a scuola ho notato che è una materia ancora tralasciata da molti. In classe siamo solo in 3-4 a sapere qualcosa, gli altri non sanno nemmeno a cosa serve read o write
aaa