Newsgroup: it.comp.lang.pascal
Titolo: trasfomazione frase in codice ascii

Ciao a tutti.
Qualcuno puo dirmi dov'è l'errore in  questo semplice programma per la
trasformazione di una frase nei rispettivi codici ASCII
(sono anche molto inesperto).
Grazie
program ascii;
procedure lettura;
var c:char;
begin
 read(c);
 ord(c);
 write(c);
 end;
begin
 writeln('inserire una riga di testo e poi premere ENTER');
 lettura
end.
Poi un'altra cosa: se la parola è formata da n lettere pari come faccio ad
usare i codici ascii delle lettere minuscole,  e se la parola è fomata da n
lettere dispari come faccio ad usare quelli delle lettere maiuscole?
Grazie e ciao a tutti
Spike

Spike
Ti allego il programma corretto e commentato...
Program Ascii;
Procedure Lettura;
Var s: String;
    i: Integer;
Begin
  ReadLn(s); { Legge una stringa (non un carattere) }
  For i:=1 to Length(s) do
{ da 1 fino al numero di caratteri della stringa }
  Begin
     Write(Ord(s[i]), ' ');
{ scrive il codice ascii del carattere seguito da uno spazio }
  End;
  ReadLn; { aspetta la pressione di un tasto }
End;
Begin
   WriteLn('inserire una riga di testo e poi premere ENTER');
   Lettura;
End.
Ciao...

 ha scritto nel messaggio
news:3a8fbc6c...@news.libero.it...

nemmeno io.....

 nemmeno io.....
Allora mi spiego meglio(forse): allora devo fare in modo che, una parola
formata da n lettere di lunghezza pari usi i codici ASCII delle minuscole,
invece se n è dispari vengano usati i codici ASCII delle maiuscole.
Spero che mi abbiate capito.
E grazie per l'aiuto.
Ciao
Spike


Ora ho capito =)
Per vedere se il numero di caratteri di una stringa è pari o dispari
puoi usare length(s) mod 2 (che torna il resto della divisione del
numero di char della stringa per 2) 0 = pari; 1 = dispari.
Per la conversione della stringa puoi prendere la via facile o quella
difficile
Via facile: utilizzare le funzioni UpCase o StrUpper e StrLower (le
ultime due stanno nella unit Strings)
Via difficile: sottrarre (o addizionare) 32 al codice ascii di ogni
carattere per ottenerlo maiuscolo o minuscolo (occhio ai codici dei
numeri e degli spazi)
neon gas
- e-mail: 
ne...@freemail.it
- ICQ#: 96988011

 numeri e degli spazi)
Mi spieghi cosa sono le funzioni UpCase, StrUpper e StrLower?
Se prendo la via difficile : se scrivo grande non sballa tutto?
Un'altra cosa: per avere tutti i codici senza spazio come faccio?
Grazie ancora e ciao
Spike

 Spike
non ho capito cosa intendi per lettere pari e dispari, quando scrivi 'A'
ottineni un codice ascii quando scrivi 'a' ottieni un codice differente
forse vuoi dire che ho una stringa di lunghezza pari la trasformo in lettere
minuscole e quella di lunghezza dispari in maiuscole ?!? ...mah facci capire
Ciao ReDiCuori

 Ciao ReDiCuori
Penso che tu abbia capito: se la parola è di lunghezza pari devo trasformare
le lettere in minuscolo e poi nel rispettivo codice ascii, invece se le
lettere sono dispari devo trasformarle in maiuscolo e poi nel rispettivo
codice ascii.
Spero di ricevere un aiuto al piu presto possibile.
Ciao e garzie ancora.
Spike

 Spike
ahhhhh trasformare sai com'è non si capiva quel "utilizzare"
procedure lettura2;
var c : string;
    i,l: integer;
begin
  readln(c);
  l:=length(c)
 if (l mod 2 =0)   then
    begin
       for i:=1 to length(c) do
          if c[i] in ['A'..'Z'] then
             c[i]:=chr(ord(c[i])-32);
    end
 else
   begin
{lower case}
       for i:=1 to length(c) do
          if c[i] in ['a'..'z'] then
             c[i]:=chr(ord(c[i])+32);
    end
{up case }
 for i:=1 to length(c) do
   begin
      write(ord(c)); write(' ');
   end;
  writeln;
  writeln('batti ENTER per uscire');
  readln;
end;
Ciao ReDiCuori


Le funzioni le trovi nell'help =)
per la soluzione ti ha già risposto redicuori =)
ciao...
neon gas
- e-mail: 
ne...@freemail.it
- ICQ#: 96988011
- Sito: 
http://ne0n.cjb.net

Grazie a tutti per avermi risolto il mio piccolo problema.
Spike