1284 - Carte 1: Difference between revisions

From Bitnami MediaWiki
No edit summary
Sinn Erich (talk | contribs)
Line 43: Line 43:
         except ValueError:
         except ValueError:
             print("Introduceti un numar valid.")
             print("Introduceti un numar valid.")


def validate_input(n):
def validate_input(n):
Line 53: Line 54:
     else:
     else:
         return True
         return True


def calculate_pages(n):
def calculate_pages(n):
Line 63: Line 65:


     return pagini-1
     return pagini-1


def display_pages(total_pages):
def display_pages(total_pages):
     print("Numarul de pagini al cartii este:", total_pages)
     print("Numarul de pagini al cartii este:", total_pages)


def main():
 
if __name__ == '__main__':
     n = read_number()
     n = read_number()


     if not validate_input(n):
     if not validate_input(n):
         return
         exit()


     total_pages = calculate_pages(n)
     total_pages = calculate_pages(n)
     display_pages(total_pages)
     display_pages(total_pages)


if __name__ == '__main__':
main()
</syntaxhighlight>
</syntaxhighlight>
'''Explicatie cod:'''
'''Explicatie cod:'''

Revision as of 22:20, 27 April 2023

Sursa: [1]

Cerinţa

Pentru a se numerota paginile unei cărți s-au folosit n cifre. Câte pagini are cartea?

Date de intrare

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

Date de ieșire

Programul afișează pe ecran numărul p, reprezentând numărul de pagini ale carții.

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează cate pagini are cartea.

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

Restricţii şi precizări

1 ≤ n ≤ 1.000.000

pentru fiecare test exista soluție.

numerotarea paginilor se face de la 1.

Exemplul 1

Datele de intrare
Introduceti numarul de cifre folosite pentru numerotarea paginilor:
1791
Datele de ieșire
Datele sunt introduse corect.
Numarul de pagini al cartii este:
633


Rezolvare

<syntaxhighlight lang="python" line>

  1. 1284

def read_number():

   while True:
       try:
           n = int(input("Introduceti numarul de cifre folosite pentru numerotarea paginilor: "))
           if n < 1:
               print("Datele nu corespund restricțiilor impuse.")
           else:
               return n
       except ValueError:
           print("Introduceti un numar valid.")


def validate_input(n):

   if not isinstance(n, int):
       print("Datele nu corespund restricțiilor impuse.")
       return False
   elif n < 1:
       print("Datele nu corespund restricțiilor impuse.")
       return False
   else:
       return True


def calculate_pages(n):

   pagini = 0
   cifre = 0
   while cifre <= n:
       pagini += 1
       cifre += len(str(pagini))
   return pagini-1


def display_pages(total_pages):

   print("Numarul de pagini al cartii este:", total_pages)


if __name__ == '__main__':

   n = read_number()
   if not validate_input(n):
       exit()
   total_pages = calculate_pages(n)
   display_pages(total_pages)

</syntaxhighlight> Explicatie cod:

Funcția 1: read_number() Această funcție primește de la utilizator numărul de cifre folosite pentru numerotarea paginilor și îl returnează.

Funcția 2: calculate_pages(n) Această funcție primește numărul de cifre folosite pentru numerotarea paginilor și calculează numărul total de pagini ale cărții.

Funcția 3: display_pages(total_pages) Această funcție primește numărul total de pagini și îl afișează.