Inversione di una stringa

Materie:Appunti
Categoria:Informatica
Download:73
Data:26.11.2001
Numero di pagine:2
Formato di file:.doc (Microsoft Word)
Download   Anteprima
inversione-stringa_1.zip (Dimensione: 4.95 Kb)
trucheck.it_inversione-di-una-stringa.doc     31.5 Kb
readme.txt     59 Bytes


Testo

RELAZIONE DI INFORMATICA
Titolo: Inversione di una stringa. Il seguente algoritmo permette di invertire una stringa: se una stringa S è vuota, il suo rovesciamento è la stringa vuota; altrimenti è la concatenazione del rovesciamento di S, privata del primo carattere, con il primo carattere stesso
Autore:
Data di inizio del lavoro: 12 novembre 2001
Data di fine del lavoro: 15 novembre 2001
ANALISI DEL PROGRAMMA
Obbiettivi: Costruire un programma che effettui l’inversione di una stringa
Interfaccia grafico: Avendo costruito il programma in pascal non posso presentare alcun tipo si interfaccia grafico

Soluzione delle procedure: Ho risolto il programma utilizzando 2 cicli for perché se avessi utilizzato un ciclo solo avrei avuto come risultato la stringa identica a come l’avevo immessa.
Il ciclo J parte dall’inizio dell’array fino a metà mentre il ciclo I parte dalla fine dell’array fino a metà.
Ad ogni passo del ciclo si scambiano le celle con contatore I e J utilizzando la variabile d’appoggio varapp.
Utilizzando ad esempio un array di 6 caselle avrò che il primo ciclo for comprenderà le prime 3 celle mentre il secondo ciclo comprenderà le restanti.
Array = inverti

1° ciclo for 2° ciclo for
Se l’array sarebbe stato di 7 caselle o comunque un numero dispari non avrebbe avuto importanza in quanto nell’inverso di una parola la lettera al centro rimarrebbe invariata.
Variabili utilizzate:
Varapp = variabile d’appoggio
I, J = contatori
Inverti = array
n = determina le lettere dell’array
Programma:
Program inverso
Var I,n,J,varapp:integer;
var inverti:array[1..100] of string;
begin
writeln (‘quante lettere vuoi immettere?,);
readln(n);
for I:=1 to n do
begin
writeln (‘scrivi la lettera nella cella’,I);
readln(inverti[I]);
end;
for I:=n downto n/2 do
begin
for J:=1 to n/2 do
begin
varapp:=inverti[I];
inverti[I]:=inverti[J];
inverti[J]:=varapp;
write(inverti[j]);
end;
end;
end.
Test:
P
A
R
O
L
A
A
A
R
O
L
P
A
L
R
O
A
P
A
L
O
R
A
P
Osservazione e Conclusione: Il programma non ha presentato particola difficolta nello svolgimento eccetto quello di capire che doveva essere svolto con 2 cicli.
Ho svolto il programma in pascal in quanto lo ritenevo più semplice nell’esecuzione.

Esempio