Page 1 of 2

Exercitiu C++

Posted: 24 Dec 2012, 00:02
by johnnny
Asta e problema : http://s9.postimage.org/4hypyon8v/47225 ... 3145_o.jpg
Deci trebuie sa scriu un program. Cand il rulez, el trebuie sa-mi ceara numarul de linii si de coloane a matricei A. Dupa ce fac asta, trebuie sa-mi ceara valorile...Apoi sa-mi ceara valorile lui x si y. X fiind numarul randului din matricea A si y numarul coloanei din matricea A. B va incepe de la randul x linia Y, fiind o matrice de 2 linii si 2 coloane.
Exemplu:
m=numar de randuri A=4
n=numar de coloane A=4
Valori A:
x1y1 x1y2 x1y3 x1y4
x2y1 x2y2 x2y3 x2y4
x3y1 x3y2 x3y3 x3y4
x3y1 x4y2 x4y3 x4y4
x=numarul randului de unde va incepe B=2
y=numarul coloanei de unde va incepe B=2
Deci, matricea B va arata:
x2y2 x2y3
x3y2 x3y3.
Poate sa ma ajute cineva cu rezolvarea ?

Re: Exercitiu C++

Posted: 24 Dec 2012, 00:03
by styllEE.WTF!?
Nu merge poza ...

Re: Exercitiu C++

Posted: 24 Dec 2012, 02:02
by johnnny
Gata, merge.

Re: Exercitiu C++

Posted: 24 Dec 2012, 02:07
by GPaul
E usoara. Incearca sa o faci si te ajutam unde nu stii.

VREAU DOAR SA INCERCI, NU SA CERI MURA-N GURA.

Re: Exercitiu C++

Posted: 24 Dec 2012, 02:24
by johnnny

Code: Select all

#include<iostream>
using namespace std;2423424

int main()
{
int n,m,i,j,a[20][20];
cout<<"m=";
cin>>m;
cout<<"n=";
cin>>n;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];}
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
cout<<a[i][j];
}
}
Ok. Am declarat si citit matricea A. Acum, cum bag matricea B in A?

Re: Exercitiu C++

Posted: 24 Dec 2012, 02:35
by GPaul
Te rog sa postezi 'incercarea ta' si sa ne spui unde te-ai oprit.

P.S: Nici macar nu ai deschis ide-ul.

Re: Exercitiu C++

Posted: 24 Dec 2012, 02:53
by johnnny
Este incercarea mea. Intentionat am pus acele cifre dupa 'using namespace std;' tocmai pentru a evidentia acest lucru. Daca te uiti la tastele de la telefon "2423424" inseamna "bi beibi"=citirea in engleza mea la "be baby"=in engleza mea 'fii copil!'Mesaj pentru toata lumea acum in prag de Sarbatori.
Deci, ma ajuti ??

Re: Exercitiu C++

Posted: 24 Dec 2012, 12:34
by Raduk
Iti explic eu putin ce ai de facut si apoi continui tu. E bine?

Mai declari o matrice b[3][3] si inca doua variabile in care vei stoca pozitia (linie/coloane) de unde vor fi preluate elementele pentru matricea b. (sa zicem nb si mb).

Apoi vei face in felul urmator:
- primul element din matricea b adica b[0][0] v-a fi egal cu a[nb][mb] (adica elementul de start din matricea a)
- elementul b[0][1] v-a prelua valuarea elementului a[nb][mb+1] deoarece se afla pe acceasi linie dar coloana creste cu +1
- elementul b[1][0] v-a prelua valuarea elementului a[nb+1][mb] deoarece coboram cu o linie mai jos dar coloana este cea de start
- elementul b[1][1] v-a prelua valuarea elementului a[nb+1][mb+1] deoarece ne aflam cu o linie mai jos si cu o coloana mai la dreapta.

Dar inainte de asta mai trebuie sa verifici ca pozitia de start (nb si mb) sa nu fie pe ultima linie/coloana. Adica nb<n && mb<m.

Am explciat cam tot ce e de explicat, acum sper ca ai inteles daca nu pot reveni cu o schita.

Re: Exercitiu C++

Posted: 24 Dec 2012, 13:34
by johnnny
Am inteles asta. In teorie e usor. Dar nu inteleg cum sa scriu matricea B...adica ea incepe de la x si y...daca x=2...cum scriu ca primul termin din B e randul 2 din A ? Crezi ca e posibil sa lasi un cod cu matricea B ?

Re: Exercitiu C++

Posted: 24 Dec 2012, 13:53
by Raduk
E mai simplu decat crezi:
- elementul din matricea a, linia 3, coloana 3 se acceseaza ca nume_matrice[linia][coloana] adica a[3][3].
- daca vrei sa ii dai acestui element valuarea 5 o sa ai: a[3][3]=5
- sau daca vrei sa stochezi intr-o variabila (n sa zicem) continutul elemntului a[3][3] o sa ai: n=a[3][3].

In concluzie daca in primul element al matricei b (coloana 0, linia 0) un element din matricea a (sa zicem linia 2, coloana 4) o sa ai: b[0][0]=a[2][4].

In cazul tau faci in felul urmator:

Code: Select all

nb = 3; // linia de la care v-a incepe preluarea datelor din matricea A.
mb = 4; // coloana de la care v-a incepe preluarea datelor din matricea A.

// Si acum ai:
// pentru primul element vom extrage informatiile de la coordonatele specificate
b[0][0] = a[nb][mb]; 
// pentru al-II-lea element din B mergem o coloana spre dreapta (adica mb+1)
b[0][1] = a[nb][mb+1];

// si facem asa pentru cele 4 elemente.
Ai inteles despre ce e vorba?

Re: Exercitiu C++

Posted: 24 Dec 2012, 14:45
by johnnny
Am inteles Raduk. Multumesc mult. aia nu intelegeam, cum sa scriu ca primul termen din B este termenul de pe linia x si coloana y din A.

Re: Exercitiu C++

Posted: 24 Dec 2012, 15:56
by bogdhy
| Afiseaza codul
[code]#include <iostream.h>

int a[10][10],b[10][10],m,n,x,y;

void citeste(int a[][10],int n,int m)
{
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		{	
			cout<<"a["<<i<<"]["<<j<<"]="; cin>>a[j];
			
		}
}


void afisare(int a[][10],int n,int m)
{
	for(int i=1;i<=n;i++)
	{	for(int j=1;j<=m;j++)
			cout<<a[j]<<" ";
		cout<<endl;
	}
	
}

void construire(int x,int y)
{
	for(int i=1;i<=2;i++)
	{	for(int j=1;j<=2;j++)
		{	
			b[j]=a[x][y];
			y++;
		}
		x++;
		y=y-2;
	}
}

int suma()
{	
	int S=0;
	for(int i=1;i<=2;i++)
		for(int j=1;j<=2;j++)
			S+=b[j];
		
	return S;

}

int main()
{
	cout<<"n= "; cin>>n;
	cout<<"m= "; cin>>m; cout<<endl;
	
	citeste(a,n,m); cout<<endl;
	
	cout<<"<----------- Matricea A ----------->"<<endl<<endl;
	
	afisare(a,n,m); cout<<endl;
	
	cout<<"x= "; cin>>x;
	cout<<"y= "; cin>>y;
	
	construire(x,y); cout<<endl;
	
	cout<<"<----------- Matricea B ----------->"<<endl<<endl;
	
	afisare(b,2,2); cout<<endl;
	
	cout<<"Suma este egala cu "<<suma();
	
}[/code]