2243 - Caracterul Mediu: Difference between revisions

From Bitnami MediaWiki
Sinn Erich (talk | contribs)
Sinn Erich (talk | contribs)
 
(2 intermediate revisions by the same user not shown)
Line 22: Line 22:
== Exemplul 1 ==
== Exemplul 1 ==
; Datele de intrare
; Datele de intrare
: FZ.
: Introduceti un caracter: F
:Introduceti un caracter: Z
:Introduceti un caracter: .
; Datele de ieșire
: Datele sunt introduse corect.
: Datele sunt introduse corect.
; Datele de ieșire
: Caracterul mediu este: P
: P
<br>
<br>


Line 32: Line 34:
#2243
#2243
def read_characters():
def read_characters():
     caractere = []
     characters = []
     caracter = input("Introduceti un caracter: ")
     character = input("Introduceti un caracter: ")
     while caracter != '.':
     while character != '.':
         caractere.append(caracter)
         characters.append(character)
         caracter = input("Introduceti un caracter: ")
         character = input("Introduceti un caracter: ")
     return caractere
     return characters


def find_character_median(characters):
def find_character_median(characters):
Line 43: Line 45:
     caracter_mediu = chr(media)
     caracter_mediu = chr(media)
     return caracter_mediu
     return caracter_mediu
def validate_input(characters):
    if len(characters) < 2 or '.' in characters:
        return False
    return True


if __name__ == '__main__':
if __name__ == '__main__':
     caractere = read_characters()
     characters = read_characters()


     if len(caractere) >= 2:
     if validate_input(characters):
         caractere = [c for c in caractere if c != '.']
         caracter_mediu = find_character_median(characters)
        if caractere:
        print("Datele sunt introduse corect.")
            caracter_mediu = find_character_median(caractere)
        print(f"Caracterul mediu este: {caracter_mediu}")
            print("Datele sunt introduse corect.")
            print(f"Caracterul mediu este: {caracter_mediu}")
        else:
            print("Datele nu corespund restricțiilor impuse.")
     else:
     else:
         print("Datele nu corespund restricțiilor impuse.")
         print("Datele nu corespund restricțiilor impuse.")


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 21:24, 27 April 2023

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.