4317 - Cifre 19: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinţa == Să se scrie un program care citește un număr natural '''numar''' cu cifrele distincte și schimbă între ele cea mai mare și cea mai mică cifră a lui '''numar'''. == Date de intrare == Programul va citi de la tastatură numărul '''numar'''. == Date de ieşire == Programul va afişa pe ecran valoarea lui '''numar''', după transformarea cerută. == Restricții și precizări == * 10 ⩽ '''numar''' ⩽ 1.000.000.000 * cifrele lui '''numar''' sunt dis...
 
No edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
Sursă: [https://www.pbinfo.ro/probleme/4317/cifre19]
== Cerinţa ==
== Cerinţa ==
Să se scrie un program care citește un număr natural '''numar''' cu cifrele distincte și schimbă între ele cea mai mare și cea mai mică cifră a lui '''numar'''.
Să se scrie un program care citește un număr natural '''n''' cu cifrele distincte și schimbă între ele cea mai mare și cea mai mică cifră a lui '''n'''.
== Date de intrare ==
== Date de intrare ==
Programul va citi de la tastatură numărul '''numar'''.
Programul va citi de la tastatură numărul '''n'''.
== Date de ieşire ==
== Date de ieşire ==
Programul va afişa pe ecran valoarea lui '''numar''', după transformarea cerută.
Dacă datele introduse sunt corecte, se va afișa pe ecran mesajul: '''"Datele sunt introduse corect."''', apoi programul va afişa valoarea lui '''n''', după transformarea cerută. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: '''"Datele nu corespund restricțiilor impuse."''''.
== Restricții și precizări ==
== Restricții și precizări ==
* 10 ⩽ '''numar''' ⩽ 1.000.000.000
* 10 ⩽ '''n''' ⩽ 1.000.000.000
* cifrele lui '''numar''' sunt distincte
* cifrele lui '''n''' sunt distincte
== Exemplu ==
== Exemplu ==
; Intrare
; Intrare
: 31526
: 31526
; Ieșire
; Ieșire
: Datele sunt introduse corect.
: 36521
: 36521
== Rezolvare ==
== Rezolvare ==


<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
numar = input("Introduceți numărul cu cifre distincte: ")
#4317
 


# se găsesc pozițiile cifrei maxime și a celei minime
# Definim o funcție care verifică dacă un număr are cifrele distincte
poz_cifra_max = numar.index(max(numar))
def verificare_numar(numar):
poz_cifra_min = numar.index(min(numar))
    cifre = set(str(numar)) # transformăm numărul într-un set pentru a elimina cifrele duplicate
    if len(cifre) != len(str(numar)):  # verificăm dacă numărul are cifre distincte
        return False
    return True


# se schimbă cifrele la pozițiile respective
# Definim o funcție care realizează transformarea cerută
numar_lista = list(numar)
def transformare_numar(numar):
numar_lista[poz_cifra_max], numar_lista[poz_cifra_min] = numar_lista[poz_cifra_min], numar_lista[poz_cifra_max]
    # găsim pozițiile cifrei maxime și a celei minime în numărul dat
numar_nou = "".join(numar_lista)
    poz_cifra_max = str(numar).index(max(str(numar)))
    poz_cifra_min = str(numar).index(min(str(numar)))
   
    # transformăm numărul într-o listă pentru a putea schimba cifrele
    numar_lista = list(str(numar))
    # schimbăm cifrele la pozițiile respective
    numar_lista[poz_cifra_max], numar_lista[poz_cifra_min] = numar_lista[poz_cifra_min], numar_lista[poz_cifra_max]
    # transformăm lista înapoi în număr
    numar_nou = int("".join(numar_lista))
    return numar_nou


print("Numărul după transformare este: ", numar_nou)
# Funcția main este punctul de intrare în program
if __name__ == '__main__':
    numar = int(input("Introduceți numărul cu cifre distincte: "))
    if verificare_numar(numar):
        print("Datele sunt introduse corect.")
        numar_transformare = transformare_numar(numar)
        print("Numărul după transformare este:", numar_transformare)
    else:
        print("Datele nu corespund restricțiilor impuse.")




</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 17:29, 27 April 2023

Sursă: [1]

Cerinţa[edit | edit source]

Să se scrie un program care citește un număr natural n cu cifrele distincte și schimbă între ele cea mai mare și cea mai mică cifră a lui n.

Date de intrare[edit | edit source]

Programul va citi de la tastatură numărul n.

Date de ieşire[edit | edit source]

Dacă datele introduse sunt corecte, se va afișa pe ecran mesajul: "Datele sunt introduse corect.", apoi programul va afişa valoarea lui n, după transformarea cerută. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."'.

Restricții și precizări[edit | edit source]

  • 10 ⩽ n ⩽ 1.000.000.000
  • cifrele lui n sunt distincte

Exemplu[edit | edit source]

Intrare
31526
Ieșire
Datele sunt introduse corect.
36521

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 4317


  1. Definim o funcție care verifică dacă un număr are cifrele distincte

def verificare_numar(numar):

   cifre = set(str(numar))  # transformăm numărul într-un set pentru a elimina cifrele duplicate
   if len(cifre) != len(str(numar)):  # verificăm dacă numărul are cifre distincte
       return False
   return True
  1. Definim o funcție care realizează transformarea cerută

def transformare_numar(numar):

   # găsim pozițiile cifrei maxime și a celei minime în numărul dat
   poz_cifra_max = str(numar).index(max(str(numar)))
   poz_cifra_min = str(numar).index(min(str(numar)))
   
   # transformăm numărul într-o listă pentru a putea schimba cifrele
   numar_lista = list(str(numar))
   # schimbăm cifrele la pozițiile respective
   numar_lista[poz_cifra_max], numar_lista[poz_cifra_min] = numar_lista[poz_cifra_min], numar_lista[poz_cifra_max]
   # transformăm lista înapoi în număr
   numar_nou = int("".join(numar_lista))
   return numar_nou
  1. Funcția main este punctul de intrare în program

if __name__ == '__main__':

   numar = int(input("Introduceți numărul cu cifre distincte: "))
   if verificare_numar(numar):
       print("Datele sunt introduse corect.")
       numar_transformare = transformare_numar(numar)
       print("Numărul după transformare este:", numar_transformare)
   else:
       print("Datele nu corespund restricțiilor impuse.")


</syntaxhighlight>