Duplicati pascal

Materie:Appunti
Categoria:Informatica
Download:94
Data:31.10.2001
Numero di pagine:2
Formato di file:.doc (Microsoft Word)
Download   Anteprima
duplicati-pascal_1.zip (Dimensione: 4.21 Kb)
trucheck.it_duplicati-pascal.doc     25 Kb
readme.txt     59 Bytes


Testo

Relazione di informatica

TESTO:
Eliminare le ripetizioni contigue di un numero, ad esempio 533888448 diventa 53848. Si usi il seguente approccio:
1. Memorizzare i dati in un vettore;
2. Sostituire i duplicati con zero;
3. Stampare i numeri diversi da zero;

ANALISI:
Il problema richiede di eliminare le ripetizioni contigue in un numero di più cifre. Per la risoluzione pratica in linguaggio Pascal è indispensabile l'utilizzo di variabili di tipo vettore (ARRAY). Il numero inserito dall'utente viene salvato cifra per cifra nella variabile di tipo ARRAY cosicché subito dopo ne consegua il controllo di ogni cifra e ogni volta che se ne trovano due o più uguali e consecutive le si pone a zero. Per fare questa operazione è molto utile una selezione che aiuta molto nel controllo delle cifre.
Le variabili utilizzate sono state:
- vettore, di tipo Array usato per salvare le cifre una ad una;
- i, j, di tipo intero utilizzati come indici di vettore.

RAFFINAMENTO:

programma duplicati;
inizio
(*acquisizione numeri*)
Inserisci('Scrivere il numero, digitare . per terminare');
i:=1;
ripeti
vettore[i]:=readkey;
Inserisci (vettore[i]);
incrementa(i);
finchè vettore[i-1]='.';
Inserisci;
(*eliminazione duplicati*)
i:=2;
j:=1;
ripeti
se vettore[i]=vettore[j] allora
vettore[i]:='0'
altrimenti j:=i;
incrementa(i);
finchè vettore[i]='.';
i:=1;
(*visualizzazione risultato*)
ripeti
se vettore[i]'0' allora
Inserisci(vettore[i]);
incrementa(i);
finchè vettore[i]='.';
ricevi;
fine.

PROGRAMMA:

program duplicati;
uses crt;
var i,j: integer;
vettore:array[1..20000] of char;
begin
clrscr;
(*acquisizione numeri*)
Writeln('Scrivere il numero, digitare . per terminare');
i:=1;
repeat
vettore[i]:=readkey;
write(vettore[i]);
inc(i);
until vettore[i-1]='.';
writeln;
(*eliminazione duplicati*)
i:=2;
j:=1;
repeat
if vettore[i]=vettore[j] then
vettore[i]:='0'
else j:=i;
inc(i);
until vettore[i]='.';
i:=1;
(*visualizzazione risultato*)
repeat
if vettore[i]'0' then write(vettore[i]);
inc(i);
until vettore[i]='.';
readln;
end.

Esempio