Ni s-a dat noua la scoala azi o problema care spunea sa construim o matrice in felul urmator:
16 15 14 13
9 10 11 12
8 7 6 5
1 2 3 4 .
Am facut noi problema la tabla, dar fiind mai ambitios am zis hai sa fac varianta mea, dupa mine, una mai eficienta din urmatoarele puncte de vedere:timp si spatiu.
Problema facuta in clasa arata cam asa:
CODE
#include<fstream.h>
void main()
{int a[20][20],i,j,k,m,n,l;
cin>>n>>m;
for(i=1;i<=m;i++)
a[n][i]=i;
l=m;
k=0;
for(i=n-1;i>=1;i--)
if(k==0)
{for(j=m;j>=1;j--)
{l++;
a[i][j]=l; }
k=1}
else
for(j=1;j
{l++;
a[i][j]=l;
k=0; }
for(i=1;i<=n;i++)
{for(j=1;j<=m;j++)
cout<<a[i][j]<<" ";
cout<<endl;}
}
void main()
{int a[20][20],i,j,k,m,n,l;
cin>>n>>m;
for(i=1;i<=m;i++)
a[n][i]=i;
l=m;
k=0;
for(i=n-1;i>=1;i--)
if(k==0)
{for(j=m;j>=1;j--)
{l++;
a[i][j]=l; }
k=1}
else
for(j=1;j
{l++;
a[i][j]=l;
k=0; }
for(i=1;i<=n;i++)
{for(j=1;j<=m;j++)
cout<<a[i][j]<<" ";
cout<<endl;}
}
La ce m-am gandit eu...
Am observat urmatoarea chestie, luand spre exemplu liniile in care numerele sunt in ordine crescatoare. Am schimbat fontul in rosu la numerele 1 si 9. diferenta dintre ele este de 2m, la fel si intre 5 si 13. In capu meu mi-am spus sa fac un for si sa intreb daca linia este para(asta inseamnand ca numere vor fi in ordine crescatoare).Daca e asa, atunci cu urmatoarea formula m(m-j)+1 ar trebui sa-mi scrie numerele in ordine crescatoare incepand exact cu cat iese rezultatul. De exemplu pt m=4, cum e matricea noastra, 4(4-4)+1=1, astea inseamna ca pe a 4a linie, sa se scrie numerele 1 2 3 4, pt j=2 va fi 4(4-2)+1=9, numerele fiind 9 10 11 12.Analog si la liniile impare. pt j=3, 4(4-3)+1=5...
Asta ar fi cam teoretic. La practic o sa ma incurc.
Cu ce as vrea eu sa ma ajutati daca vreti si puteti. Sa mi se spuna daca ideea ar merge, daca e mai eficienta si ca timp si ca spatiu. Eu am sa fac programul dupa mine si as vrea sa fie corectat unde trebuie
CODE
#include<fstream.h>
void main()
{int a[50][50], i,j,n,m;
cin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(m%2==0)
a[m][i]=m(m-j)+1; //aici cred ca nu e bun.
else
for(i=n;i>=1;i--)
for(j=m;j>=1;j--)
a[m][i]=m(m-1)+1; //nici aici nu cred ca e bun. M-am gandit sa iau invers pt a le putea pune descrescator.
void main()
{int a[50][50], i,j,n,m;
cin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(m%2==0)
a[m][i]=m(m-j)+1; //aici cred ca nu e bun.
else
for(i=n;i>=1;i--)
for(j=m;j>=1;j--)
a[m][i]=m(m-1)+1; //nici aici nu cred ca e bun. M-am gandit sa iau invers pt a le putea pune descrescator.
....
iar daca de aici imi iese problema restu e simplu....
Va multumesc anticipat!!!
