2243 - Caracterul Mediu

From Bitnami MediaWiki

Sursa: [1]

Cerinţa[edit | edit source]

Caracterul mediu a două sau al mai multor caractere este caracterul care are codul ASCII egal cu partea întreagă a mediei aritmetice a codurilor ASCII ale caracterelor date.

Se citesc mai multe caractere, pană la apariția punctului (.). Să se determine caracterul mediu al lor .

Date de intrare[edit | edit source]

Programul citește de la tastatură mai multe caractere, pană la apariția punctului (.).

Date de ieșire[edit | edit source]

Programul va afișa pe ecran caracterul mediu.

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează caracterul mediu al mai multor numere.

În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."

Restricţii şi precizări[edit | edit source]

Numărul de caractere citite este mai mare sau egal cu 2.

Punctul nu se ia în considerare la calcularea mediei.

Exemplul 1[edit | edit source]

Datele de intrare
Introduceti un caracter: F
Introduceti un caracter: Z
Introduceti un caracter: .
Datele de ieșire
Datele sunt introduse corect.
Caracterul mediu este: P


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 2243

def read_characters():

   characters = []
   character = input("Introduceti un caracter: ")
   while character != '.':
       characters.append(character)
       character = input("Introduceti un caracter: ")
   return characters

def find_character_median(characters):

   media = sum(ord(c) for c in characters) // len(characters)
   caracter_mediu = chr(media)
   return caracter_mediu

def validate_input(characters):

   if len(characters) < 2 or '.' in characters:
       return False
   return True

if __name__ == '__main__':

   characters = read_characters()
   if validate_input(characters):
       caracter_mediu = find_character_median(characters)
       print("Datele sunt introduse corect.")
       print(f"Caracterul mediu este: {caracter_mediu}")
   else:
       print("Datele nu corespund restricțiilor impuse.")


</syntaxhighlight>

Explicatie cod:

Acest cod are două funcții și o instrucțiune de validare care îi permite să respecte anumite restricții.

Funcția read_characters() cere utilizatorului să introducă caractere până când este introdus caracterul punct (".") și returnează o listă cu toate caracterele introduse.

Funcția find_character_median(characters) primește o listă de caractere și găsește caracterul mediu, adică caracterul care are codul ASCII egal cu partea întreagă a mediei aritmetice a codurilor ASCII ale caracterelor date. În acest scop, se calculează mai întâi media aritmetică a codurilor ASCII ale caracterelor din listă cu ajutorul funcției sum() și apoi se obține caracterul mediu cu ajutorul funcției chr().

Instrucțiunea if __name__ == '__main__': verifică dacă acest cod este rulat ca un script standalone (adică direct din linia de comandă) și, în caz afirmativ, începe procesul de citire a caracterelor și calcularea caracterului median. Înainte de a apela funcția find_character_median(), instrucțiunea de validare verifică dacă numărul de caractere introduse este mai mare sau egal cu 2 și elimină punctul din lista de caractere. Dacă lista conține caractere valide, caracterul median este calculat și afișat, altfel se afișează un mesaj de eroare.