2825 - Chenar 2

De la Universitas MediaWiki

Sursă: [1]

Cerință

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

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

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

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

Exemple

Exemplu 1

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

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

Rezolvare

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)

Explicatii

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ă.