2911 - Write Digits: Diferență între versiuni

De la Universitas MediaWiki
(Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/4294/perechin 4294 - Perechi N] ---- == Cerinţa == Se dă un număr natural '''n'''. Să se afișeze fiecare cifră a numărului folosind simbolul @, ca în exemplu. == Date de intrare == Programul citește de la tastatură numărul '''n'''. == Date de ieșire == Programul va afișa pe ecran fiecare cifră a numărului citit scrisă. După fiecare cifră se va lăsa un rând gol. == Restricţii şi precizări == $n \in \mathbb{N},\ 1 \...)
 
Fără descriere a modificării
 
(Nu s-au afișat 16 versiuni intermediare efectuate de același utilizator)
Linia 6: Linia 6:
Programul citește de la tastatură numărul '''n'''.
Programul citește de la tastatură numărul '''n'''.
== Date de ieșire ==  
== Date de ieșire ==  
Programul va afișa pe ecran fiecare cifră a numărului citit scrisă. După fiecare cifră se va lăsa un rând gol.
Dacă datele sunt introduse corect, pe ecran se va afișa: '''"Date de intrare valide."''', apoi Programul va afișa pe ecran fiecare cifră a numărului citit scrisă. După fiecare cifră se va lăsa un rând gol. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: '''"Date de intrare invalide".'''
== Restricţii şi precizări ==
== Restricţii şi precizări ==
$n \in \mathbb{N},\ 1 \leq n \leq 10^{10}$
<p><strong>1</strong> &#8804; <strong>n</strong> &#8804; <strong>10<sup>10</sup></strong></p>
 
== Exemplu ==
== Exemplu ==
; Intrare
; Intrare
: 10
: 1234567890
; Ieșire
; Ieșire
: Datele de intrare corespund restricțiilor impuse.
: Date de intrare valide
: 1 9
<pre>
: 2 8
  @
: 3 7
@@
: 4 6
  @
: 5 5
  @
<br>
@@@@@
; Intrare
 
: abc
@@@@
; Ieșire
@  @
: Datele de intrare nu corespund restricțiilor impuse.
  @
<br>
@
; Intrare
@@@@
: -25
 
; Ieșire
@@@@@
: Datele de intrare nu corespund restricțiilor impuse.
    @
<br>
@@@@@
    @
@@@@@
 
@  @
@  @
@@@@@
    @
    @
 
@@@@@
@
@@@@@
    @
@@@@@
 
@@@@@
@
@@@@@
@  @
@@@@@
 
@@@@
  @
  @@@
  @
  @
 
@@@@@
@  @
@@@@@
@  @
@@@@@
 
@@@@@
@  @
@@@@@
    @
    @
 
@@@@@
@  @
@  @
@  @
@@@@@
</pre>
 
== Rezolvare ==  
== Rezolvare ==  
=== Rezolvare ver. 1 ===
=== Rezolvare ver. 1 ===
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
# 4294 - Perechi N
# 2911- WriteDigits
 
def afisare_cifra(cifra: int) -> None:
    if cifra == 0:
        print("@@@@@")
        print("@    @")
        print("@    @")
        print("@    @")
        print("@@@@@")
        print('\n')
    elif cifra == 1:
        print("  @")
        print(" @@")
        print("  @")
        print("  @")
        print("@@@@@")
        print('\n')
    elif cifra == 2:
        print("@@@@")
        print("    @")
        print("@@@@")
        print("@")
        print("@@@@@")
        print('\n')
    elif cifra == 3:
        print("@@@@")
        print("    @")
        print("@@@@")
        print("    @")
        print("@@@@")
        print('\n')
    elif cifra == 4:
        print("@  @")
        print("@  @")
        print("@@@@@")
        print("    @")
        print("    @")
        print('\n')
    elif cifra == 5:
        print("@@@@@")
        print("@")
        print("@@@@@")
        print("    @")
        print("@@@@@")
        print('\n')
    elif cifra == 6:
        print("@@@@@")
        print("@")
        print("@@@@@")
        print("@  @")
        print("@@@@@")
        print('\n')
    elif cifra == 7:
        print("@@@@@")
        print("    @")
        print("  @")
        print("  @")
        print("  @")
        print('\n')
    elif cifra == 8:
        print("@@@@@")
        print("@  @")
        print("@@@@@")
        print("@  @")
        print("@@@@@")
        print('\n')
    elif cifra == 9:
        print("@@@@@")
        print("@  @")
        print("@@@@@")
        print("    @")
        print("    @")
        print('\n')
 


def validare_date_numar(numar: str) -> bool:
def validare_date_numar(numar: str) -> bool:
     if numar.isdigit():
     if numar.isdigit():
         if 1 <= int(numar) <= 100:
         if int(numar) > 10 ** 10:
             return True
             return False
        return True
     return False
     return False


def perechin(numar: int):
    for termen1 in range(1, numar // 2 + 1):
        termen2 = numar - termen1       
        print(termen1, termen2)
       


if __name__ == "__main__":
if __name__ == "__main__":
     numar = input()
     n = input()
   
     if validare_date_numar(n):
     if validare_date_numar(numar):
        numar = int(numar)
       
         print("Datele de intrare corespund restricțiilor impuse.")
         print("Datele de intrare corespund restricțiilor impuse.")
         perechin(numar)
         for digit in n:
            afisare_cifra(int(digit))
     else:
     else:
         print("Datele de intrare nu corespund restricțiilor impuse.")
         print("Datele de intrare nu corespund restricțiilor impuse.")
      
      
</syntaxhighlight>
</syntaxhighlight>
== Explicație rezolvare==
<pre>
  Acest cod Python are două funcții. Funcția afisare_cifra primește o cifră între 0 și 9 și afișează modelul corespunzător acelei cifre folosind caractere speciale. Funcția validare_date_numar primește un șir de caractere și verifică dacă acesta conține doar cifre și dacă numărul reprezentat de aceste cifre este mai mic sau egal cu 10^10. Dacă numărul este valid, funcția returnează True, altfel returnează False.
    În funcția principală, programul citește un număr de la intrare și verifică dacă acesta este un număr valid folosind funcția validare_date_numar. Dacă numărul este valid, programul afișează un mesaj corespunzător și apoi afișează fiecare cifră din număr folosind funcția afisare_cifra. Dacă numărul nu este valid, programul afișează un mesaj corespunzător.
  În general, acest program poate fi folosit pentru a afișa cifrele sub forma unui model special și pentru a valida datele de intrare pentru a evita erorile.
</pre>

Versiunea curentă din 29 iunie 2023 18:37

Sursa: 4294 - Perechi N


Cerinţa

Se dă un număr natural n. Să se afișeze fiecare cifră a numărului folosind simbolul @, ca în exemplu.

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Date de intrare valide.", apoi Programul va afișa pe ecran fiecare cifră a numărului citit scrisă. După fiecare cifră se va lăsa un rând gol. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Date de intrare invalide".

Restricţii şi precizări

1n1010

Exemplu

Intrare
1234567890
Ieșire
Date de intrare valide
  @
 @@
  @
  @
@@@@@

@@@@
@  @
  @
 @
@@@@

@@@@@
    @
@@@@@
    @
@@@@@

@   @
@   @
@@@@@
    @
    @

@@@@@
@
@@@@@
    @
@@@@@

@@@@@
@
@@@@@
@   @
@@@@@

@@@@
   @
  @@@
   @
   @

@@@@@
@   @
@@@@@
@   @
@@@@@

@@@@@
@   @
@@@@@
    @
    @

@@@@@
@   @
@   @
@   @
@@@@@

Rezolvare

Rezolvare ver. 1

# 2911- WriteDigits

def afisare_cifra(cifra: int) -> None:
    if cifra == 0:
        print("@@@@@")
        print("@    @")
        print("@    @")
        print("@    @")
        print("@@@@@")
        print('\n')
    elif cifra == 1:
        print("  @")
        print(" @@")
        print("  @")
        print("  @")
        print("@@@@@")
        print('\n')
    elif cifra == 2:
        print("@@@@")
        print("    @")
        print("@@@@")
        print("@")
        print("@@@@@")
        print('\n')
    elif cifra == 3:
        print("@@@@")
        print("    @")
        print("@@@@")
        print("    @")
        print("@@@@")
        print('\n')
    elif cifra == 4:
        print("@   @")
        print("@   @")
        print("@@@@@")
        print("    @")
        print("    @")
        print('\n')
    elif cifra == 5:
        print("@@@@@")
        print("@")
        print("@@@@@")
        print("    @")
        print("@@@@@")
        print('\n')
    elif cifra == 6:
        print("@@@@@")
        print("@")
        print("@@@@@")
        print("@   @")
        print("@@@@@")
        print('\n')
    elif cifra == 7:
        print("@@@@@")
        print("    @")
        print("   @")
        print("  @")
        print("  @")
        print('\n')
    elif cifra == 8:
        print("@@@@@")
        print("@   @")
        print("@@@@@")
        print("@   @")
        print("@@@@@")
        print('\n')
    elif cifra == 9:
        print("@@@@@")
        print("@   @")
        print("@@@@@")
        print("    @")
        print("    @")
        print('\n')


def validare_date_numar(numar: str) -> bool:
    if numar.isdigit():
        if int(numar) > 10 ** 10:
            return False
        return True
    return False


if __name__ == "__main__":
    n = input()
    if validare_date_numar(n):
        print("Datele de intrare corespund restricțiilor impuse.")
        for digit in n:
            afisare_cifra(int(digit))
    else:
        print("Datele de intrare nu corespund restricțiilor impuse.")

Explicație rezolvare

   Acest cod Python are două funcții. Funcția afisare_cifra primește o cifră între 0 și 9 și afișează modelul corespunzător acelei cifre folosind caractere speciale. Funcția validare_date_numar primește un șir de caractere și verifică dacă acesta conține doar cifre și dacă numărul reprezentat de aceste cifre este mai mic sau egal cu 10^10. Dacă numărul este valid, funcția returnează True, altfel returnează False.

    În funcția principală, programul citește un număr de la intrare și verifică dacă acesta este un număr valid folosind funcția validare_date_numar. Dacă numărul este valid, programul afișează un mesaj corespunzător și apoi afișează fiecare cifră din număr folosind funcția afisare_cifra. Dacă numărul nu este valid, programul afișează un mesaj corespunzător.

   În general, acest program poate fi folosit pentru a afișa cifrele sub forma unui model special și pentru a valida datele de intrare pentru a evita erorile.