2825 - Chenar 2

From Bitnami MediaWiki
Revision as of 11:55, 19 April 2023 by Andor Giulia (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Sursă: [1]

Cerință[edit | edit source]

Scrieți un program C/C++ care citește de la tastatură numere naturale din intervalul [3, 100], în această ordine: n și m, apoi elementele unui tablou bidimensional cu n linii și m coloane, iar la final un număr x.

Programul afișează pe ecran mesajul DA, dacă există cel puțin un element egal cu x aflat pe conturul tabloului (format din prima linie, ultima linie, prima coloană și ultima coloană), sau mesajul NU în caz contrar.

Date de intrare[edit | edit source]

Programul citește de la tastatură de la tastatură numere naturale n și m, apoi elementele unui tablou bidimensional cu n linii și m coloane, iar la final un număr x.

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.", Programul va afișa pe ecran mesajul DA sau mesajul NU, conform cerinței. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".

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

  • toate valorile citite sunt numere naturale din intervalul [3, 100].

Exemple[edit | edit source]

Exemplu 1[edit | edit source]

Date de intrare
4 5
12 5 12 11 4
3 20 10 20 12
4 5 30 12 6
8 13 7 12 14
12
Date de ieșire
DA

Exemplu 2[edit | edit source]

Date de intrare
3 2
Date de ieșire
NU, Datele nu sunt comform restricțiilor impuse

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1"> def citire_lin_col():

   try:
       lin = int(input("Introduceti numarul de linii: "))
       col = int(input("Introduceti numarul de coloane: "))
       if 3 <= lin <= 100 and 3 <= col <= 100:
           print("Datele sunt corecte.")
           return lin, col
       else:
           print("Datele nu sunt conform restricțiilor impuse.")
           exit()
   except ValueError:
       print("Trebuie introduse doar numere intregi.")
       exit()

def citeste_valori_matrice(lin, col):

   matrice = []
   for linie in range(lin):
       matrice.append([])
       for coloana in range(col):
           while True:
               try:
                   n = int(input("Introduceti un numar: "))
                   if 3 <= n <= 100:
                       print("Datele sunt corecte.")
                       matrice[linie].append(n)
                       break
                   else:
                       print("Datele nu sunt conform restricțiilor impuse.")
               except ValueError:
                   print("Trebuie introduse doar numere intregi.")
   return matrice

def citeste_numar_x():

   while True:
       try:
           x = int(input("Introduceti numarul : "))
           if 3 <= x <= 100:
               print("Datele sunt corecte.")
               return x
           else :
               print("Datele nu sunt conform restricțiilor impuse.")
       except ValueError:
           print("Trebuie introduse doar numere intregi.")

def element(matrice, n, m, x):

   for i in range(n):
       for j in range(m):
           if i == 0 or i == n - 1 or j == 0 or j == m - 1:
               if matrice[i][j] == x:
                   print("DA")
                   return
   print("NU")

if _name_ == "_main_":

  n, m = citire_lin_col()
  matrice = citeste_valori_matrice(n, m)
  x = citeste_numar_x()
  element(matrice, n, m, x)

</syntaxhighlight>

Explicatii[edit | edit source]

Acest cod implementează o funcție pentru a căuta un anumit element x în matricea dată. Funcția primește matricea, numărul de linii și coloane ale acesteia și numărul căutat.
În primul rând, funcția citire_lin_col solicită introducerea numărului de linii și coloane, verifică dacă acestea sunt în intervalul [3,100], afișează un mesaj corespunzător și returnează valorile introduse.
Apoi, funcția citeste_valori_matrice primește numărul de linii și coloane și construiește matricea prin adăugarea de elemente la fiecare iterație a buclei. Se verifică dacă fiecare element este în intervalul [3,100], iar dacă acesta nu este valid, se va afișa un mesaj corespunzător.
Funcția citeste_numar_x solicită introducerea numărului căutat, verifică dacă acesta este în intervalul [3,100], afișează un mesaj corespunzător și returnează valoarea introdusă.
În cele din urmă, funcția element primește matricea, numărul de linii și coloane ale acesteia și numărul căutat. Se parcurge matricea și se caută elementul x pe marginea matricei (primele și ultimele linii și coloane). Dacă x este găsit pe una dintre margini, se afișează "DA" și se returnează. Dacă nu este găsit pe nicio margine, se afișează "NU".
În if _name_ == "_main_":, se apelează funcțiile pentru a efectua căutarea elementului x în matricea dată.