<?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=TEMA_11</id>
	<title>TEMA 11 - 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=TEMA_11"/>
	<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=TEMA_11&amp;action=history"/>
	<updated>2026-06-10T23:31:04Z</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=TEMA_11&amp;diff=14316&amp;oldid=prev</id>
		<title>Bella: /* Sol Raz */</title>
		<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=TEMA_11&amp;diff=14316&amp;oldid=prev"/>
		<updated>2017-12-17T23:07:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Sol Raz&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Solutii Diagonal ==&lt;br /&gt;
=== Razvan ===&lt;br /&gt;
Observatii: &lt;br /&gt;
* La afisare caractere out&amp;lt;&amp;lt; e lent. Am recomandat sa folosesti fputc, sau macar fin.put(c) din c++; &lt;br /&gt;
* Greseli de identare: acolade de deschidere pe linie noua sau acolada de inchidere dupa instructiuni, linii nealiniate, identare la spatiu variabil, scriere mai multe instructiuni pe aceeasi linie.&lt;br /&gt;
* initializare la declarare ci nu cum ar trebui inainte de codul care folosese initializarea.&lt;br /&gt;
* poti separa codul cu linii goale ca sa marchezi bucatile de cod, pentru lizibilitate&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
ifstream in(&amp;quot;diagonal.in&amp;quot;);&lt;br /&gt;
ofstream out(&amp;quot;diagonal.out&amp;quot;);&lt;br /&gt;
char v[101][101];&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    int n=0,x,i,j;&lt;br /&gt;
    x=in.get();&lt;br /&gt;
    while(x!=&amp;#039;\n&amp;#039;){&lt;br /&gt;
        v[0][n]=x;n++;x=in.get();}&lt;br /&gt;
    for(i=1;i&amp;lt;n;i++){&lt;br /&gt;
         for(j=0;j&amp;lt;n;j++)&lt;br /&gt;
             v[i][j]=in.get();&lt;br /&gt;
             in.get();&lt;br /&gt;
    }&lt;br /&gt;
     for(i=n-1;i&amp;gt;=0;i--)&lt;br /&gt;
          for(j=0;j&amp;lt;n-i;j++)&lt;br /&gt;
              out&amp;lt;&amp;lt;v[j+i][j];&lt;br /&gt;
     for(j=1;j&amp;lt;=n-1;j++)&lt;br /&gt;
        for(i=0;i&amp;lt;n-j;i++)&lt;br /&gt;
           out&amp;lt;&amp;lt;v[i][i+j];&lt;br /&gt;
        out&amp;lt;&amp;lt;&amp;#039;\n&amp;#039;;&lt;br /&gt;
    for(i=0;i&amp;lt;=n-1;i++)&lt;br /&gt;
          for(j=i;j&amp;gt;=0;j--)&lt;br /&gt;
              out&amp;lt;&amp;lt;v[i-j][j];&lt;br /&gt;
 for(i=1;i&amp;lt;=n-1;i++)&lt;br /&gt;
          for(j=0;j&amp;lt;=n-i-1;j++)&lt;br /&gt;
              out&amp;lt;&amp;lt;v[i+j][n-j-1];&lt;br /&gt;
               out&amp;lt;&amp;lt;&amp;#039;\n&amp;#039;;&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;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
// corectare Raz&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
ifstream in(&amp;quot;diagonal.in&amp;quot;);&lt;br /&gt;
ofstream out(&amp;quot;diagonal.out&amp;quot;);&lt;br /&gt;
char v[101][101];&lt;br /&gt;
int main(){&lt;br /&gt;
  int n,x,i,j;&lt;br /&gt;
  x=in.get();&lt;br /&gt;
  n=0;&lt;br /&gt;
  while(x!=&amp;#039;\n&amp;#039;){&lt;br /&gt;
    v[0][n++]=x;&lt;br /&gt;
    x=in.get();&lt;br /&gt;
  }&lt;br /&gt;
  for(i=1;i&amp;lt;n;i++){&lt;br /&gt;
    for(j=0;j&amp;lt;n;j++)&lt;br /&gt;
      v[i][j]=in.get();&lt;br /&gt;
    in.get();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for(i=n-1;i&amp;gt;=0;i--)&lt;br /&gt;
    for(j=0;j&amp;lt;n-i;j++)&lt;br /&gt;
      out.put(v[j+i][j]);&lt;br /&gt;
  for(j=1;j&amp;lt;=n-1;j++)&lt;br /&gt;
    for(i=0;i&amp;lt;n-j;i++)&lt;br /&gt;
      out.put(v[i][i+j]);&lt;br /&gt;
  out.put( &amp;#039;\n&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
  for(i=0;i&amp;lt;=n-1;i++)&lt;br /&gt;
    for(j=i;j&amp;gt;=0;j--)&lt;br /&gt;
      out&amp;lt;&amp;lt;v[i-j][j];&lt;br /&gt;
  for(i=1;i&amp;lt;=n-1;i++)&lt;br /&gt;
    for(j=0;j&amp;lt;=n-i-1;j++)&lt;br /&gt;
      out.put(v[i+j][n-j-1]);&lt;br /&gt;
  out.put( &amp;#039;\n&amp;#039; );&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== cod Teo ===&lt;br /&gt;
Observatii:&lt;br /&gt;
* multe variabile in for&lt;br /&gt;
* Am recomandat sa folosesti fputc, sau macar fin.put(c) din c++; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
ifstream in(&amp;quot;diagonal.in&amp;quot;);&lt;br /&gt;
ofstream out(&amp;quot;diagonal.out&amp;quot;);&lt;br /&gt;
char m[100][100],e;&lt;br /&gt;
int main() {&lt;br /&gt;
    int i,j,n,c;&lt;br /&gt;
    n=0;&lt;br /&gt;
    in.get(e);&lt;br /&gt;
    while(e!=&amp;#039;\n&amp;#039;) {&lt;br /&gt;
        m[0][n]=e;&lt;br /&gt;
        n++;&lt;br /&gt;
        in.get(e);&lt;br /&gt;
    }&lt;br /&gt;
    for(i=1;i&amp;lt;n;i++)&lt;br /&gt;
        for(j=0;j&amp;lt;n;j++)&lt;br /&gt;
            in&amp;gt;&amp;gt;m[i][j];&lt;br /&gt;
    for(i=n-1; i&amp;gt;=0; i--)&lt;br /&gt;
        for(j=i,c=0; j&amp;lt;n; j++,c++)&lt;br /&gt;
            out&amp;lt;&amp;lt;m[j][c];&lt;br /&gt;
    for(i=1; i&amp;lt;n; i++)&lt;br /&gt;
        for(j=i,c=0; j&amp;lt;n &amp;amp;&amp;amp; c&amp;lt;n; j++,c++)&lt;br /&gt;
            out&amp;lt;&amp;lt;m[c][j];&lt;br /&gt;
    out.put(&amp;#039;\n&amp;#039;);&lt;br /&gt;
    for(i=0; i&amp;lt;n; i++)&lt;br /&gt;
        for(j=i,c=0; j&amp;gt;=0 &amp;amp;&amp;amp; c&amp;lt;n; j--,c++)&lt;br /&gt;
            out&amp;lt;&amp;lt;m[c][j];&lt;br /&gt;
    for(i=1; i&amp;lt;n; i++)&lt;br /&gt;
        for(j=i,c=n-1; j&amp;lt;n &amp;amp;&amp;amp; c&amp;lt;n; j++,c--)&lt;br /&gt;
            out&amp;lt;&amp;lt;m[j][c];&lt;br /&gt;
            out&amp;lt;&amp;lt;&amp;#039;\n&amp;#039;;&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Andrei ===&lt;br /&gt;
Observatii:&lt;br /&gt;
* Fara tema&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Solutii Cautare ==&lt;br /&gt;
=== Sol Teo ===&lt;br /&gt;
Observatii: &lt;br /&gt;
* NU ai aplicat algoritmul recomandat pentru cautare. Avand in vedere ca nu stim cand ne oprim, nu puteam sa folosim for, am conventit ca folosim for doar pentru numar cunoscut de pasi. Uu ai nevoie de stegulete nici de break. Cand vei da uitarii comanda break vei incepe sa gandesti mai bine conditiile de ciclare: cautam cat timp nu am terminat domeniul in care catam si cat timp elementul curent e ok,  aici ok inseamna ca este egal cu elementul corespondent din cealalalta matrice.&lt;br /&gt;
* atentie la identare.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
ifstream in(&amp;quot;cautare.in&amp;quot;);&lt;br /&gt;
ofstream out(&amp;quot;cautare.out&amp;quot;);&lt;br /&gt;
char m1[100][100],m2[100][100];&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    int n,m,i,j,i1,j1,i2,j2,c,cj,ok;&lt;br /&gt;
    in&amp;gt;&amp;gt;n&amp;gt;&amp;gt;m;&lt;br /&gt;
    for(i=0;i&amp;lt;n;i++)&lt;br /&gt;
        for(j=0;j&amp;lt;n;j++)&lt;br /&gt;
         in&amp;gt;&amp;gt;m1[i][j];&lt;br /&gt;
    for(i=0;i&amp;lt;m;i++)&lt;br /&gt;
        for(j=0;j&amp;lt;m;j++)&lt;br /&gt;
         in&amp;gt;&amp;gt;m2[i][j];&lt;br /&gt;
         c=0;&lt;br /&gt;
    for(i=0;i&amp;lt;=n-m;i++) {&lt;br /&gt;
        for(j=0;j&amp;lt;=n-m;j++) {&lt;br /&gt;
            ok=1;&lt;br /&gt;
            for(i1=i,i2=0;i1&amp;lt;i+m &amp;amp;&amp;amp; i2&amp;lt;=m;i1++,i2++)&lt;br /&gt;
                for(j1=j,j2=0;j1&amp;lt;j+m &amp;amp;&amp;amp; j2&amp;lt;=m;j1++,j2++)&lt;br /&gt;
                    if(m1[i1][j1]!=m2[i2][j2]){&lt;br /&gt;
                        ok=0;&lt;br /&gt;
                        break;&lt;br /&gt;
                    }&lt;br /&gt;
            if(ok)&lt;br /&gt;
                c++;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
         out&amp;lt;&amp;lt;c;&lt;br /&gt;
    return 0;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sol Raz ===&lt;br /&gt;
Obs: &lt;br /&gt;
* NU ti-ai insusit pe deplin codul de la cautare, din lectie. Acolo aveai un singur while, nu doua. Cand pui 2 trebuie sa te inghijesti sa le opresti pe amandoua nu doar pe unul. Ai mai jos corectura de cod. Te rog, indenteaza corect, nu iti pot citi codul.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
ifstream in(&amp;quot;cautare.in&amp;quot;);&lt;br /&gt;
ofstream out(&amp;quot;cautare.out&amp;quot;);&lt;br /&gt;
char x[101][101],y[101][101];&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    int n,m,i,j,a,b,cnt=0;&lt;br /&gt;
    in&amp;gt;&amp;gt;n&amp;gt;&amp;gt;m;&lt;br /&gt;
    in.get();&lt;br /&gt;
    for(i=0; i&amp;lt;n; i++)&lt;br /&gt;
    {&lt;br /&gt;
        for(j=0; j&amp;lt;n; j++)&lt;br /&gt;
            x[i][j]=in.get();&lt;br /&gt;
        in.get();&lt;br /&gt;
    }&lt;br /&gt;
    for(i=0; i&amp;lt;m; i++)&lt;br /&gt;
    {&lt;br /&gt;
        for(j=0; j&amp;lt;m; j++)&lt;br /&gt;
            y[i][j]=in.get();&lt;br /&gt;
        in.get();&lt;br /&gt;
    }&lt;br /&gt;
    for(i=0;i&amp;lt;=n-m;i++)&lt;br /&gt;
        for(j=0;j&amp;lt;=n-m;j++)&lt;br /&gt;
    {&lt;br /&gt;
        a=i;&lt;br /&gt;
        b=j;&lt;br /&gt;
        while(a&amp;lt;i+m)&lt;br /&gt;
        {&lt;br /&gt;
            b=j;&lt;br /&gt;
            while(b&amp;lt;j+m and x[a][b]==y[a-i][b-j])&lt;br /&gt;
                b++;&lt;br /&gt;
            a++;&lt;br /&gt;
        }&lt;br /&gt;
        if(a==i+m and b==j+m)&lt;br /&gt;
               cnt++;&lt;br /&gt;
    }&lt;br /&gt;
    out&amp;lt;&amp;lt;cnt;&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
// corectare cod Raz&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
ifstream in(&amp;quot;cautare.in&amp;quot;);&lt;br /&gt;
ofstream out(&amp;quot;cautare.out&amp;quot;);&lt;br /&gt;
char x[101][101],y[101][101];&lt;br /&gt;
int main(){&lt;br /&gt;
  int n,m,i,j,lin,col,cnt;&lt;br /&gt;
  in&amp;gt;&amp;gt;n&amp;gt;&amp;gt;m;&lt;br /&gt;
  in.get();&lt;br /&gt;
&lt;br /&gt;
  // citire matrice mare&lt;br /&gt;
  for(i=0; i&amp;lt;n; i++)    {&lt;br /&gt;
    for(j=0; j&amp;lt;n; j++)&lt;br /&gt;
      x[i][j]=in.get();&lt;br /&gt;
    in.get();&lt;br /&gt;
  }&lt;br /&gt;
  // citire matrice mica&lt;br /&gt;
  for(i=0; i&amp;lt;m; i++)    {&lt;br /&gt;
    for(j=0; j&amp;lt;m; j++)&lt;br /&gt;
      y[i][j]=in.get();&lt;br /&gt;
    in.get();&lt;br /&gt;
  }&lt;br /&gt;
  // parcurgem elementele matricei mari care pot fi colturile de&lt;br /&gt;
  // inceput ale unei aparitii ale matricei mici&lt;br /&gt;
  cnt = 0;&lt;br /&gt;
  for(i=0;i&amp;lt;=n-m; i++)&lt;br /&gt;
    for(j=0;j&amp;lt;=n-m;j++){&lt;br /&gt;
      lin=i;&lt;br /&gt;
      col=j;&lt;br /&gt;
      while(lin&amp;lt;i+m &amp;amp;&amp;amp; x[lin][col]==y[lin-i][col-j]){&lt;br /&gt;
        col++;&lt;br /&gt;
        if(col&amp;gt;=j+m ){&lt;br /&gt;
          lin++;&lt;br /&gt;
          col=j;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if(lin&amp;gt;=i+m){&lt;br /&gt;
        cnt++;&lt;br /&gt;
        //cout&amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt;j&amp;lt;&amp;lt;&amp;quot;\n&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  out&amp;lt;&amp;lt;cnt;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sol Andrei ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
???&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Solutiie ZOOM ==&lt;br /&gt;
&lt;br /&gt;
=== Razvan ===&lt;br /&gt;
Observatii:&lt;br /&gt;
* iar identare vraiste :) abia reusesc sa citesc codul, te rog da-mi o mana de autor sa citesc mai usor&lt;br /&gt;
* de ce v[101][101] NU pune elemente in plus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
ifstream in(&amp;quot;zoomx2.in&amp;quot;);&lt;br /&gt;
ofstream out(&amp;quot;zoomx2.out&amp;quot;);&lt;br /&gt;
char v[101][101];&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    int n,k=2,i,j,y,z;&lt;br /&gt;
    char x;&lt;br /&gt;
    in&amp;gt;&amp;gt;n;&lt;br /&gt;
    for(i=0;i&amp;lt;n;i++)&lt;br /&gt;
        for(j=0;j&amp;lt;n;j++)&lt;br /&gt;
        {&lt;br /&gt;
            in&amp;gt;&amp;gt;x;&lt;br /&gt;
            for(y=k*i;y&amp;lt;=k*i+k-1;y++)&lt;br /&gt;
                for(z=k*j;z&amp;lt;=k*j+k-1;z++)&lt;br /&gt;
                         v[y][z]=x;&lt;br /&gt;
        }&lt;br /&gt;
    for(i=0;i&amp;lt;k*n;i++){&lt;br /&gt;
        for(j=0;j&amp;lt;k*n;j++)&lt;br /&gt;
            out&amp;lt;&amp;lt;v[i][j];&lt;br /&gt;
            out&amp;lt;&amp;lt;&amp;#039;\n&amp;#039;;&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;
=== Teo ===&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
???&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Andrei ===&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
???&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bella</name></author>
	</entry>
</feed>