Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
0191 - Max Mat
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
Sursă: [https://www.pbinfo.ro/probleme/191/maxmat] == Enunt == Se dă o matrice cu '''n''' linii și '''m''' coloane și elemente numere întregi. == Cerinţa == Să se determine, pentru fiecare linie a matricei, valoarea maximă și indicele coloanei pe care se află valoarea maximă. == Date de intrare == Fişierul de intrare '''maxmat.in''' conţine pe prima linie numerele '''n''' și '''m''', iar următoarele '''n''' linii câte '''m''' numere întregi, reprezentând elementele matricei. == Date de ieșire == Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.". Fişierul de ieşire '''maxmat.out''' va conţine '''n''' linii; pe fiecare linie se vor afla două numere, separate prin exact un spațiu, reprezentând valoarea maximă de pe linia curentă și indicele coloanei pe care se află aceasta . În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.". == Restricții și precizări == * '''1 ≤ n,m ≤ 25''' * elementele matricei aparțin intervalului '''[-1000,1000]''' * dacă pe o linie a matricei, elementul maxim apare de mai multe ori, se va afișa indicele de coloană minim * liniile și coloanele matricei sunt numerotate de la '''1''' == Exemple == === Exemplu 1 === ; '''maxmat.in''' : 4 5 : -2 -9 7 -7 -7 : 1 -7 -8 -1 4 : 8 2 5 -7 2 : 8 -9 -7 10 -9 ; '''maxmat.out''' : 7 3 : 4 5 : 8 1 : 10 4 ==Rezolvare== <syntaxhighlight lang="python" line="1"> def citire_matrice(): try: with open("maxmat.in", "r") as fin: n, m = map(int, fin.readline().split()) if 1 <= n <= 25 and 1 <= m <= 25: print("Datele sunt corecte.") else: print("Datele nu sunt conform restrictiilor impuse.") exit() matrice = [] for linie in range(n): linie_matrice = [] valori = fin.readline().split() for coloana in range(m): try: valoare = int(valori[coloana]) if -1000 <= valoare <= 1000: print("Datele sunt corecte.") linie_matrice.append(valoare) else: print("Datele nu sunt conform restrictiilor impuse.") exit() except ValueError: print("Trebuie introduse doar numere intregi.") exit() matrice.append(linie_matrice) return n, m, matrice except FileNotFoundError: print("Fisierul maxmat.in nu exista.") exit() def maxmat(): n, m, a = citire_matrice() with open("maxmat.out", "w") as fout: for i in range(n): maxi = -1001 for j in range(m): if a[i][j] > maxi: maxi = a[i][j] ind = j fout.write(str(maxi) + " " + str(ind + 1) + "\n") if _name_ == "_main_": col_zero = maxmat() print("rezultatul este: ", col_zero) </syntaxhighlight> == Explicații == Acest cod este format din doua functii: citire_matrice() - aceasta functie deschide fisierul "maxmat.in", citeste dimensiunile matricei si verfica daca sunt in conformitate cu restrictiile impuse (1<=n,m<=25). Apoi, citeste matricea din fisier, verifica daca valorile matricei sunt in intervalul [-1000, 1000], si construieste matricea in memorie. Daca valorile nu sunt valide sau fisierul nu exista, se afiseaza un mesaj corespunzator si se iese din program. Se returneaza dimensiunile matricei si matricea construita in memorie. maxmat() - aceasta functie apeleaza citire_matrice() pentru a obtine dimensiunile matricei si matricea in memorie. Apoi, deschide fisierul "maxmat.out" pentru a scrie rezultatele si parcurge matricea in linii, cautand cel mai mare element de pe fiecare linie. Daca gaseste un element mai mare, salveaza valoarea si pozitia acestuia. Dupa ce a terminat de parcurs fiecare linie, scrie in fisier valoarea maxima si pozitia acesteia pentru fiecare linie. In final, codul verifica daca a fost obtinut un rezultat si afiseaza un mesaj corespunzator.
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width