Transformarea literelor mici in litere mari

Pascal este un limbaj imperativ, creat inițial pentru a ajuta la predarea noțiunilor de programare structurati studenților. Delphi, urmașul lui Pascal, este un mediu de dezvoltare pentru aplicații Windows. Delphi este primul limbaj de programare (Object Pascal, mai exact) care a îmbinat ușurința în programare a limbajelor de nivel înalt și puterea uneltelor de lucru de nivel scăzut într-un mediu RAD.

Transformarea literelor mici in litere mari

Postby andreiandreiq » 10 Jan 2012, 20:29

Salutare,

Am următoarea problema:

  1. Scrieţi un program Pascal care citeşte de la tastatură un cuvânt format din cel mult 20 de caractere, doar litere ale alfabetului englez. Programul determină transformarea cuvântului citit prin înlocuirea fiecărei litere mici a cuvântului cu litera mare corespunzătoare, restul literelor nemodificându-se, ca în exemplu. Programul afişează pe ecran cuvântul obţinut.
  2.  
  3. Exemplu: pentru cuvântul: bACAlaUrEaT se va afişa pe ecran: BACALAUREAT


Eu am rezolvat'o folosind funcția UpCase. Se poate rezolva și în alt mod (tind sa cred ca da) ?

  1. var s:string[20];
  2.       i:integer;
  3. begin
  4.    write(' Cuvantul:');
  5.    readln(s);
  6.    for i:=1 to length(s) do
  7.         s[i]:=upcase(s[i]);
  8.     writeln(s);
  9. end;
  10.    


P.S: Problema e dintr-o varianta de bac.
0,0p / 0 votes
Image
User avatar
andreiandreiq
Word
 
Joined: 30 Dec 2009
Status: 33.33

Re: Transformarea literelor mici in litere mari

Postby smith » 10 Jan 2012, 22:23

  1. for i:=1 to length(s) do
  2.     if s[i] >= 'a' and s[i] <= 'z' then
  3.         s[i]:= chr(ord(s[i]) - 32);  {32 este diferenta dintre litera mica si litera mare -vezi ascii}

Dacă nu știi diferența dintre literele mici și cele mari, poți face așa:
  1. for i:=1 to length(s) do
  2.     if s[i] >= 'a' and s[i] <= 'z' then
  3.       s[i]:= chr( ord(s[i]) - (ord('a') - ord('A')) ); {literele mici sunt dupa literele mari}

ord returnează valoarea ascii a unui caracter.
chr returneaza caracterul corespondent unui cod ascii.
0,0p / 0 votes
Ilea Cristian
User avatar
smith
Enum
 
Joined: 29 Dec 2009
Location: Cluj-Napoca
Status: 82

Re: Transformarea literelor mici in litere mari

Postby DarkByte » 10 Jan 2012, 22:24

La bac, varianta corecta (pentru majoritatea profesorilor) este cea cu UpCase. Varianta lui smith, desi este si ea absolut corecta (si care arata ce se intampla in spatele cortinei :P) nu este agreata/inteleasa de unii profi (care, ce-i drept, n-ar trebui catalogati drept profesori).
0,0p / 0 votes
User avatar
DarkByte
11011011
 
Joined: 29 Dec 2009
Status: 140

Re: Transformarea literelor mici in litere mari

Postby andreiandreiq » 10 Jan 2012, 22:56

Asta e rezolvarea pe care am gasit-o pe net la problema de mai sus:

  1.  
  2. const lit:set of
  3. char=[‘a’..’z’,’A’..’Z’];
  4. lit_mici:set of
  5. char=[‘a’..’z’];
  6. var cuv:string[20];
  7.       i,j:byte;
  8.       este:boolean;
  9.       l:integer;
  10. begin
  11.   repeat
  12.   write(‘cuvantul:’);readln(cuv);
  13.   este:=true;
  14.   l:=length(cuv);
  15.   for i:=1 to l do
  16.        if not (cuv[i] in lit) then
  17.        este:=false;
  18.   until este;
  19.   for i:=1 to l do
  20.        if cuv[i] in lit_mici then
  21.        cuv[i]:=chr(ord(cuv[i])-32);
  22.    writeln(cuv);
  23. end.


Presupun ca asa au rezolvat-o cei care au propus-o, sau cei care au propus unele variante de răspuns (corecte!).

Nu stiu care e cea mai potrivita pentru bac, poate e cum zici tu, DarkByte, sau poate nu :-??. Oricum nu stiu de ce m-as chinui sa scriu "ditamai" rezolvarea cand cu UpCase imi ia 5 randuri.

P.S: Rezolvarea de mai sus prezinta metoda sugerata de smith (mersi de informații !).
0,0p / 0 votes
Image
User avatar
andreiandreiq
Word
 
Joined: 30 Dec 2009
Status: 33.33


Return to Pascal / Delphi

Who is online

Users browsing this forum: No registered users and 0 guests