<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Clasa_a_IX-a_lec%C8%9Bia_29</id>
	<title>Clasa a IX-a lecția 29 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Clasa_a_IX-a_lec%C8%9Bia_29"/>
	<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Clasa_a_IX-a_lec%C8%9Bia_29&amp;action=history"/>
	<updated>2026-06-10T15:51:15Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.algopedia.ro/wiki/index.php?title=Clasa_a_IX-a_lec%C8%9Bia_29&amp;diff=17784&amp;oldid=prev</id>
		<title>Bella: /* Tema Laborator */</title>
		<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Clasa_a_IX-a_lec%C8%9Bia_29&amp;diff=17784&amp;oldid=prev"/>
		<updated>2020-05-12T13:04:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Tema Laborator&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Lectie ( TEORIE ) =&lt;br /&gt;
== Matrice ==&lt;br /&gt;
Matricele sînt asemănătoare cu vectorii, dar cu două dimensiuni (coordonate, poziții) în loc de una. Vectorii se mai numesc și tablouri unidimensionale, iar matricele se mai numesc și tablouri bidimensionale.&lt;br /&gt;
=== Declarare matrice ===&lt;br /&gt;
Matricele se declară similar cu vectorii, însă cu o dimensiune în plus:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;int a[100][500];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Primul număr, &amp;lt;tt&amp;gt;100&amp;lt;/tt&amp;gt; în cazul nostru, reprezintă numărul de linii al matricei &amp;lt;tt&amp;gt;a&amp;lt;/tt&amp;gt;. Al doilea număr, &amp;lt;tt&amp;gt;500&amp;lt;/tt&amp;gt; în exemplul de mai sus, reprezintă numărul de coloane al matricei &amp;lt;tt&amp;gt;a&amp;lt;/tt&amp;gt;, sau numărul de elemente al fiecărei linii. O matrice poate fi privită ca un vector de vectori. În exemplul de mai sus &amp;lt;tt&amp;gt;a&amp;lt;/tt&amp;gt; poate fi privită ca un vector de &amp;lt;tt&amp;gt;100&amp;lt;/tt&amp;gt; de elemente. Fiecare element al acestui vector este, la rîndul lui, un alt vector, de &amp;lt;tt&amp;gt;500&amp;lt;/tt&amp;gt; de elemente. Numărul total de elemente al matricei &amp;lt;tt&amp;gt;a&amp;lt;/tt&amp;gt; este &amp;lt;tt&amp;gt;100&amp;lt;/tt&amp;gt; x &amp;lt;tt&amp;gt;500&amp;lt;/tt&amp;gt;, adică &amp;lt;tt&amp;gt;50000&amp;lt;/tt&amp;gt; de elemente întregi.&lt;br /&gt;
&lt;br /&gt;
=== Citire matrice ===&lt;br /&gt;
Cum citim o matrice? Asemănător cu un vector, vom citi mai întîi numărul de linii și numărul de coloane, apoi elementele. Elementele se citesc, în general, de-a lungul liniilor, fiecare linie fiind citită ca un vector:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;fscanf( fin, &amp;quot;%d%d&amp;quot;, &amp;amp;n, &amp;amp;m );&lt;br /&gt;
for ( i = 0; i &amp;lt; n; i++ )&lt;br /&gt;
  for ( j = 0; j &amp;lt; m; j++ )&lt;br /&gt;
    fscanf( fin, &amp;quot;%d&amp;quot;, &amp;amp;a[i][j] );&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scriere matrice ===&lt;br /&gt;
Scrierea este asemănătoare cu citirea, cu mențiunea să avem grijă să tipărim un &amp;lt;tt&amp;gt;&amp;#039;\n&amp;#039;&amp;lt;/tt&amp;gt; la finalul fiecărei linii. Vom afisa linie cu linie, pentru fiecare linie, afisam elementele de pe acea linie si un sfarsit de linie.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
for ( i = 0; i &amp;lt; n; i++ ) {&lt;br /&gt;
  for ( j = 0; j &amp;lt; m; j++ )&lt;br /&gt;
    fprintf( fout, &amp;quot;%d &amp;quot;, a[i][j] );&lt;br /&gt;
  fprintf( fout, &amp;quot;\n&amp;quot; );&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parcurgerea elementelor unei matrice ===&lt;br /&gt;
In functie de cerintele problemei, parcurgerea elementelor matricei, in vederea prelucrarii acestora, poate fi facuta in mai multe modalitati. Cea mai intalnita metoda de a parcurge elementele unei matrice, este parcurgerea linie cu line. Sa presupunem ca ni se cere sa calculam suma elementelor tuturor elementelor. Iata allgoritmul: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
s = 0;&lt;br /&gt;
for ( i = 0; i &amp;lt; n; i++ ) &lt;br /&gt;
  for ( j = 0; j &amp;lt; m; j++ )&lt;br /&gt;
    s += a[i][j];&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un algoritm echivalent este acela de a parcurge matricea coloane cu coloana:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
s = 0;&lt;br /&gt;
for ( j = 0; j &amp;lt; m; j++ )&lt;br /&gt;
  for ( i = 0; i &amp;lt; n; i++ ) &lt;br /&gt;
    s += a[i][j];&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Din punct de vedere al eficientei, credeti ca este vreo deosebire intre cei doi algoritmi?&lt;br /&gt;
&lt;br /&gt;
=== Căutare element în matrice ===&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;i = j = 0;&lt;br /&gt;
while ( (i &amp;lt; n) &amp;amp;&amp;amp; (a[i][j] != e) ) {&lt;br /&gt;
  j++;&lt;br /&gt;
  if ( j &amp;gt;= m ) {&lt;br /&gt;
    j = 0;&lt;br /&gt;
    i++;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
if ( i == n )&lt;br /&gt;
  //nu am gasit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Permutarea coloanelor spre stanga ===&lt;br /&gt;
Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Să se permute coloanele matricei circular spre stânga cu o poziție. [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=770 PermCol]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int a[100][100];&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
  int n, m, i, j, aux;&lt;br /&gt;
  scanf ( &amp;quot;%d%d&amp;quot;, &amp;amp;n, &amp;amp;m );&lt;br /&gt;
  for ( i = 0; i &amp;lt; n; i++ )&lt;br /&gt;
    for ( j = 0; j &amp;lt; m; j++ )&lt;br /&gt;
      scanf ( &amp;quot;%d&amp;quot;, &amp;amp;a[i][j] );      &lt;br /&gt;
  &lt;br /&gt;
  for ( i = 0; i &amp;lt; n; i++ ){&lt;br /&gt;
      // permutam spre stanga linia i&lt;br /&gt;
      aux = a[i][0];                // primul element de pe linia i il salvam in aux&lt;br /&gt;
      for ( j = 0; j &amp;lt; m - 1; j++ ) // mutam spre dreapta toate celelalte elem de pe linie, incepand cu al doilea elem&lt;br /&gt;
        a[i][j]= a[i][j+1];&lt;br /&gt;
      a[i][m-1] = aux;              // punem elementul salvat in aux pe ultima pozitie a liniei i&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for ( i = 0 ; i &amp;lt; n ; i++ ){&lt;br /&gt;
    for ( j = 0 ; j &amp;lt; m ; j++ )&lt;br /&gt;
      printf ( &amp;quot;%d &amp;quot;, a[i][j] );      &lt;br /&gt;
    printf ( &amp;quot;\n&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LABORATOR ==&lt;br /&gt;
==== [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=659 SumaLinii1]	====&lt;br /&gt;
Gigel a găsit o matrice cu n linii și m coloane și elemente numere naturale. El își propune să determine, pentru fiecare linie, cea mai mică valoare care se poate obține adunând elementele de pe linie, cu excepția unuia.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int a[101][101];&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
    int n, m, s, c, l, max;&lt;br /&gt;
    &lt;br /&gt;
    scanf ( &amp;quot;%d %d&amp;quot;, &amp;amp;n, &amp;amp;m);&lt;br /&gt;
    &lt;br /&gt;
    for ( l = 0 ; l &amp;lt; n ; l++ ){&lt;br /&gt;
        s = 0;&lt;br /&gt;
        max = a[l][0];&lt;br /&gt;
        for ( c = 0 ; c &amp;lt; m ; c++ ){&lt;br /&gt;
            scanf ( &amp;quot;%d&amp;quot;, &amp;amp;a[l][c] );&lt;br /&gt;
            s = s + a[l][c];&lt;br /&gt;
            if ( a[l][c] &amp;gt; max ){&lt;br /&gt;
                max = a[l][c];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        s  =  s - max;&lt;br /&gt;
        printf ( &amp;quot;%d &amp;quot;, s);&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=773 MaxAp1]====	&lt;br /&gt;
Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Să se determine elementul cu număr maxim de apariții în matrice. Dacă există mai multe elemente cu număr maxim de apariții se va afișa cel mai mare dintre ele.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
int v[1000000]; //vectorul de frecventa&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
  int n, m, i, j, x, maxap;&lt;br /&gt;
  scanf( &amp;quot;%d%d&amp;quot;, &amp;amp;m, &amp;amp;n );&lt;br /&gt;
  for( i = 0; i &amp;lt; m; i++ ){&lt;br /&gt;
    for( j = 0; j &amp;lt; n; j++ ){&lt;br /&gt;
      scanf( &amp;quot;%d&amp;quot;, &amp;amp;x );&lt;br /&gt;
      v[x]++;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  int val;&lt;br /&gt;
  maxap = 0;&lt;br /&gt;
  for( i = 0; i &amp;lt; 1000000; i++ )&lt;br /&gt;
    if( v[i] &amp;gt;= maxap ){&lt;br /&gt;
      maxap = v[i];&lt;br /&gt;
      val = i;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;%d&amp;quot;, val);&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=771 OrdLin] ====	&lt;br /&gt;
Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Să se ordoneze liniile matricei crescător după suma elementelor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
int a[101][101];&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
  int n, m, i, j, x, minim, poz;&lt;br /&gt;
&lt;br /&gt;
  // citim matricea si calculam suma pe fiecare linie, memorand sumele pe ultima coloana&lt;br /&gt;
  scanf( &amp;quot;%d%d&amp;quot;, &amp;amp;m, &amp;amp;n );&lt;br /&gt;
  for( i = 0;i &amp;lt; m; i++ ){&lt;br /&gt;
    a[i][n] = 0;       // aici voi pune suma elementelor de pe linia i&lt;br /&gt;
    for( j = 0; j &amp;lt; n; j++ ){&lt;br /&gt;
      scanf( &amp;quot;%d&amp;quot;, &amp;amp;a[i][j] );&lt;br /&gt;
      a[i][n] += a[i][j];&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  // sortam liniile dupa elementele de pe coloana n cu metoda select sort&lt;br /&gt;
  for( i = 0; i &amp;lt; m - 1; i++ ){&lt;br /&gt;
    // determinam minimul si pozitia minimului pe coloana n, incepand de la linia i&lt;br /&gt;
    minim = a[i][n]; poz = i;&lt;br /&gt;
    for( j = i + 1; j &amp;lt; m; j++ )&lt;br /&gt;
      if( a[j][n] &amp;lt; minim ){&lt;br /&gt;
        minim = a[j][n];&lt;br /&gt;
        poz = j;&lt;br /&gt;
      }&lt;br /&gt;
    // interschimb  linia i cu linia poz ( inclusiv a[i][n] cu a[poz][n])&lt;br /&gt;
    int aux;&lt;br /&gt;
    for( x = 0; x &amp;lt;= n; x++ ){&lt;br /&gt;
      aux = a[poz][x];&lt;br /&gt;
      a[poz][x] = a[i][x];&lt;br /&gt;
      a[i][x] = aux;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  // afisam matricea &lt;br /&gt;
  for( i = 0; i &amp;lt; m; i++ ){&lt;br /&gt;
    for( j = 0; j &amp;lt; n; j++ )&lt;br /&gt;
      printf( &amp;quot;%d &amp;quot;, a[i][j] );&lt;br /&gt;
    printf( &amp;quot;\n&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=778 MChenar] ====&lt;br /&gt;
Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Să se determine mulțimea formată din elementele distincte ale chenarului matricei.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
int v[1000000]; //vectorul de frecventa&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
  int n, m, i, j, x;&lt;br /&gt;
  scanf( &amp;quot;%d%d&amp;quot;, &amp;amp;m, &amp;amp;n );&lt;br /&gt;
  for( i = 0; i &amp;lt; m; i++ ){&lt;br /&gt;
    for( j = 0; j &amp;lt; n; j++ ){&lt;br /&gt;
      scanf( &amp;quot;%d&amp;quot;, &amp;amp;x );&lt;br /&gt;
      if ( i == 0 || j == 0 || i == m - 1 || j == n - 1 )&lt;br /&gt;
        v[x]++;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for(i = 0; i &amp;lt; 1000000; i++ ){&lt;br /&gt;
    if( v[i] &amp;gt; 0 )&lt;br /&gt;
      printf(&amp;quot;%d &amp;quot;, i );&lt;br /&gt;
  }&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=804 ColEgale] ====	&lt;br /&gt;
Se dă o matrice cu m linii şi n coloane şi elemente numere naturale cu cel mult 4 cifre fiecare. Să se determine coloanele matricei care au toate elementele egale cu aceeași valoare.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int a[50][50];&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
  int i, j, n, m, cnt;&lt;br /&gt;
  scanf( &amp;quot;%d%d&amp;quot;, &amp;amp;n, &amp;amp;m);&lt;br /&gt;
  for( i = 0; i &amp;lt; n; i++ )&lt;br /&gt;
    for( j = 0; j &amp;lt; m; j++ )&lt;br /&gt;
      scanf( &amp;quot;%d&amp;quot;, &amp;amp;a[i][j] );&lt;br /&gt;
&lt;br /&gt;
  cnt = 0;&lt;br /&gt;
  for( j = 0; j &amp;lt; m; j++ ){&lt;br /&gt;
    // cautam pe coloana j un element diferit de primul element al coloanei j&lt;br /&gt;
    i = 1;&lt;br /&gt;
    while( i &amp;lt; n &amp;amp;&amp;amp; a[i][j] == a[0][j] )&lt;br /&gt;
      i++;&lt;br /&gt;
    // daca nu am gasit un element diferit printam valoarea comuna&lt;br /&gt;
    if ( i == n ){&lt;br /&gt;
      cnt ++;&lt;br /&gt;
      printf(&amp;quot;%d &amp;quot;, a[0][j]);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (!cnt)&lt;br /&gt;
    printf(&amp;quot;nu exista&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=751 MCautare] ====	&lt;br /&gt;
Se dă o matrice cu n linii și m coloane și elemente numere naturale și k valori naturale. Determinați pentru fiecare dintre cele k valori dacă apare pe fiecare linie a matricei.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int a[100][100];&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
  int i, j, n, m, nr, x, cnt, k;&lt;br /&gt;
&lt;br /&gt;
  scanf( &amp;quot;%d%d&amp;quot;, &amp;amp;m, &amp;amp;n );&lt;br /&gt;
  for( i = 0; i &amp;lt; m; i++ )&lt;br /&gt;
    for( j = 0; j &amp;lt; n; j++ )&lt;br /&gt;
      scanf( &amp;quot;%d&amp;quot;, &amp;amp;a[i][j] );&lt;br /&gt;
&lt;br /&gt;
  scanf( &amp;quot;%d&amp;quot;, &amp;amp;nr );&lt;br /&gt;
  for( k = 0; k &amp;lt; nr; k++ ){&lt;br /&gt;
    scanf( &amp;quot;%d&amp;quot;, &amp;amp;x );&lt;br /&gt;
    // numaram pe cate linii apare x&lt;br /&gt;
    cnt = 0;&lt;br /&gt;
    for ( i = 0; i &amp;lt; m; i++ ){&lt;br /&gt;
      j = 0;&lt;br /&gt;
      while ( j &amp;lt; n  &amp;amp;&amp;amp; a[i][j] != x  )&lt;br /&gt;
        j++;&lt;br /&gt;
      cnt = cnt + ( j &amp;lt; n );&lt;br /&gt;
    }&lt;br /&gt;
    // daca x apare pe toate liniile afisam DA altfel afisam NU&lt;br /&gt;
    if ( cnt == m )&lt;br /&gt;
      printf(&amp;quot;DA\n&amp;quot;);&lt;br /&gt;
    else&lt;br /&gt;
      printf(&amp;quot;NU\n&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
_________________________________________________________________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
==== Citirea unei matrice de caractere fara sa se citeasca in prealabil dimensiunea ei ====&lt;br /&gt;
Sa se citeasca din fisierul &amp;quot;date.in&amp;quot; o matrice de caractere. Fiecare linie de caractere este pe cate un rand al fisierului, iar caracterele nu au spatii intre ele. D&lt;br /&gt;
Vom citi prima linie a fisierului si vom determina numarul de elemente de pe aceasta, determinand astfel numarul de coloane ale matricei n. Apoi vom citi urmatoarele linii pana la intalnirea sfarsitului de fisier.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
// Sol 9 C&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
char a[100][100];&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
  FILE *fin, *fout;&lt;br /&gt;
  int n, m, l, c;&lt;br /&gt;
  char ch;&lt;br /&gt;
&lt;br /&gt;
  fin = fopen( &amp;quot;date.in&amp;quot;, &amp;quot;r&amp;quot; );&lt;br /&gt;
  // citim intii prima linie pina la &amp;#039;\n&amp;#039;, pentru a-l afla pe n=nr. de coloane&lt;br /&gt;
  n = 0;&lt;br /&gt;
  ch = fgetc( fin );&lt;br /&gt;
  while ( ch != &amp;#039;\n&amp;#039; ) {&lt;br /&gt;
    a[0][n] = ch;&lt;br /&gt;
    n++;&lt;br /&gt;
    ch = fgetc( fin );&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  // citim linie cu linie pana ajungem la o linie goala sau la finalul fisierului(EOF)&lt;br /&gt;
  ch = fgetc( fin );&lt;br /&gt;
  m = 1; // nr. de linii&lt;br /&gt;
  while ( ch != &amp;#039;\n&amp;#039; &amp;amp;&amp;amp; ch != EOF ) {&lt;br /&gt;
    // Fisierul nu s-a terminat, citim urmatoarea linie:&lt;br /&gt;
    for ( c = 0; c &amp;lt; n; c++ ) {&lt;br /&gt;
      a[m][c] = ch;&lt;br /&gt;
      ch = fgetc( fin );&lt;br /&gt;
    }&lt;br /&gt;
    m++;&lt;br /&gt;
    ch = fgetc( fin );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Afisam matricea&lt;br /&gt;
  fout = fopen( &amp;quot;date.out&amp;quot;, &amp;quot;w&amp;quot; );&lt;br /&gt;
  for ( l = 0; l &amp;lt; m; l++ ) {&lt;br /&gt;
    for ( c = 0; c &amp;lt; n; c++ )&lt;br /&gt;
      fputc( a[l][c], fout );&lt;br /&gt;
    fputc( &amp;#039;\n&amp;#039;, fout );&lt;br /&gt;
  }&lt;br /&gt;
  fclose( fout );&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
O implementare similara a solutiei de mai sus presupune citirea tuturor caracterelor pana la sfarsit de fisier. Vom numara elementele pana la intalnirea primului sfarsit de linie, determinand astfel numarul de coloane si vom numara &amp;#039;\n&amp;#039;-rile determinand astfel numarul de linii. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
//Sol 9I&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
char a[100][100];&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
  FILE *fin, *fout;&lt;br /&gt;
  int n, m, l, c,i;&lt;br /&gt;
  char ch;&lt;br /&gt;
&lt;br /&gt;
  fin = fopen( &amp;quot;date.in&amp;quot;, &amp;quot;r&amp;quot; );&lt;br /&gt;
  // citim intii prima linie pina la &amp;#039;\n&amp;#039;, pentru a-l afla pe n=nr. de coloane&lt;br /&gt;
  i = m = n =  0;//m = nr de linii, m = linii de coloane&lt;br /&gt;
  ch = fgetc( fin );&lt;br /&gt;
  while (ch != EOF ) {&lt;br /&gt;
    if(ch == &amp;#039;\n&amp;#039;){&lt;br /&gt;
        if(m == 0)&lt;br /&gt;
            n = i;&lt;br /&gt;
        m++;&lt;br /&gt;
        i = 0;&lt;br /&gt;
    }&lt;br /&gt;
    else{&lt;br /&gt;
        a[m][i] = ch;&lt;br /&gt;
        i++;&lt;br /&gt;
    }&lt;br /&gt;
    ch = fgetc(fin);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Afisam matricea&lt;br /&gt;
  fout = fopen( &amp;quot;date.out&amp;quot;, &amp;quot;w&amp;quot; );&lt;br /&gt;
  for ( l = 0; l &amp;lt; m; l++ ) {&lt;br /&gt;
    for ( c = 0; c &amp;lt; n; c++ )&lt;br /&gt;
      fputc( a[l][c], fout );&lt;br /&gt;
    fputc( &amp;#039;\n&amp;#039;, fout );&lt;br /&gt;
  }&lt;br /&gt;
  fclose( fout );&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O alta solutie ar fi sa retinem toate elementele intr-un vector, determinand numarul de linii in functie de numarul de &amp;#039;\n&amp;#039; uri, iar numarul de coloane il putem determina pe baza numarului de linii si al numarului total de elemente trasnferate in vector. La final vom afisa elementele vectorului sub forma unei matrice, tiparind cate n elemente pe fiecare rand.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
char a[100*100];&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
  FILE *fin, *fout;&lt;br /&gt;
  int n, m, l, c, j;&lt;br /&gt;
  char ch;&lt;br /&gt;
&lt;br /&gt;
  fin = fopen( &amp;quot;date.in&amp;quot;, &amp;quot;r&amp;quot; );&lt;br /&gt;
  // Construim un vector cu toate elementele matricei&lt;br /&gt;
  m = j = 0;        //m = nr de linii, j = numarul de elemente citite&lt;br /&gt;
  ch = fgetc( fin );&lt;br /&gt;
  while (ch != EOF ) {&lt;br /&gt;
    if( ch == &amp;#039;\n&amp;#039; )&lt;br /&gt;
        m++;&lt;br /&gt;
    else&lt;br /&gt;
        a[j++] = ch;&lt;br /&gt;
    ch = fgetc(fin);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  n = j / m;        // n = nr de coloane = nr de elemente citite / nr de linii&lt;br /&gt;
  &lt;br /&gt;
  // Afisam matricea&lt;br /&gt;
  fout = fopen( &amp;quot;date.out&amp;quot;, &amp;quot;w&amp;quot; );&lt;br /&gt;
  for ( l = 0; l &amp;lt; m; l++ ) {&lt;br /&gt;
    for ( c = 0; c &amp;lt; n; c++ )&lt;br /&gt;
      fputc( a[l*n+c], fout );&lt;br /&gt;
    fputc( &amp;#039;\n&amp;#039;, fout );&lt;br /&gt;
  }&lt;br /&gt;
  fclose( fout );&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sarcina Laborator:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Cititi o matrice de numere naturale fara sa se cunoasca dimensiunea acestea&lt;br /&gt;
* Cititi o matrice de numere intregi fara sa se cunoasca dimensiunea acesteia&lt;br /&gt;
&lt;br /&gt;
= Tema = &lt;br /&gt;
== Tema Teorie ==&lt;br /&gt;
Rezolvati urmatoarele probleme de pe pbinfo.ro&lt;br /&gt;
==== [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=767 SumaPare2]	====&lt;br /&gt;
Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Determinați suma valorilor pare din matrice.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=658 SumaLinii]	====&lt;br /&gt;
Se dă o matrice cu n linii și m coloane și elemente numere naturale. Să se determine suma elementelor de pe fiecare linie.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=666 NrPrime] ====&lt;br /&gt;
Se dă o matrice cu n linii și m coloane și elemente numere naturale. Să se determine câte dintre elementele situate pe linii cu indici pari sunt prime.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=768 SumaPare3] ==== 	&lt;br /&gt;
Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Determinați suma valorilor pare distincte din matrice. Dacă o valoare pară apare în matrice de mai multe ori, se va aduna o singură dată.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=771 MaxAp] ==== &lt;br /&gt;
Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Să se determine elementul cu număr maxim de apariții în matrice. Dacă există mai multe elemente cu număr maxim de apariții se vor afișa toate, în ordine crescătoare.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Tema Laborator pbinfo ==&lt;br /&gt;
&lt;br /&gt;
==== [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=789  Max2Ap] ==== &lt;br /&gt;
Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Să se determine cea mai mare valoare care apare în matrice de cel puțin două ori.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=776 CntLinii] ====	&lt;br /&gt;
Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Să se determine câte linii ale matricei au toate elementele egale.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=777 CntColoane] ====	&lt;br /&gt;
Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Să se determine câte coloane ale matricei au elementele distincte două câte două.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=769 OrdCol] ==== 	&lt;br /&gt;
Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Să se ordoneze coloanele matricei astfel încât elementele de pe prima linie să fie ordonate crescător.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=662 SumElPare] ====	&lt;br /&gt;
Se dă o matrice cu n linii și m coloane și elemente numere naturale. Să se determine indicele liniei pentru care suma elementelor pare este maximă.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=766 NrPare] ==== 	&lt;br /&gt;
Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Determinați indicele liniei care conține număr maxim de elemente pare. Dacă există mai multe linii cu număr maxim de elemente pare, se vor afișa toți indicii, în ordine crescătoare.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=1007 Matrice7] ====	&lt;br /&gt;
Se consideră o matrice cu n linii şi m coloane şi elemente numere naturale. Să se modifice matricea în felul următor: toate elementele egale cu valoarea maximă din matrice se înlocuiesc cu valoarea minimă de pe coloana lor.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Probleme de pe varena ==&lt;br /&gt;
* [http://varena.ro/problema/zoomx2 zoomx2] - generare matrice pe baza unei matrice date&lt;br /&gt;
* [http://varena.ro/problema/cautare căutare] - cautare submatrice in matrice&lt;br /&gt;
* [http://varena.ro/problema/patrate1 patrate1]&lt;/div&gt;</summary>
		<author><name>Bella</name></author>
	</entry>
</feed>