Jump to content
nosferatu

[help]tablouri bidimensionale. c++

Recommended Posts

Am un numar natural n impar(1<=n<=1337).

Vreau se afiseze suma elemenelor aflate pe diagonale in urma parcurgerii matricii M de dimensiuni n*n in spirala.

Exemplu:

Pentru n=5, matricea M va arata in felul urmator:

21 22 23 24 25

20 7 8 9 10

19 6 1 2 11

18 5 4 3 12

17 16 15 14 13

Suma elementelor de pe diagonale va fii egala cu:

21 + 25 + 7 + 9 + 1 + 5 + 3 + 17 + 13 = 101

M-am gandit la ceva de genu:

//program suma_patrate_concentrice;
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
void main()
{ int careu[10][10],i,j,M,n,L;
randomize();
clrscr();
do
{cout<<"Dimensiune careu: ";
cin>>M;
}while(M<2 || M>2);
for(i=0;i<M;i++)
for(j=0;j<M;j++)
careu[i][j]=random(M);
cout<<"Afisarea careului generat";
cout<<endl;
for(i=0;i<M;i++)
{for (j=0;j<M;j++)
cout<<careu[i][j]<<' ';
cout<<endl;
}
n=M/2;
cout<<"Afisarea contururilor"<<endl;
i=L;
for (j=L;j<M-L-1;j++)
cout<<careu[i][j]<<" ";
for(i=L;i<M-L-1;i++)
cout<<careu[i][j]<<" ";
for(j=M-L-1;j>L;j--)
cout<<careu[i][j]<<" ";
for(i=M-L-1;i>L;i--)
cout<<careu[i][j]<<" ";
cout<<endl;
}
if(M%2) cout<<"Ultimul nivel
"<<careu[n][n];
getch();
}

Dar nu este bine. Primesc niste erori si cica ar trebui sa declar randomize, dar cum. Odata ce am includ conio nu ar mai trebui. In fine, ce ar trebui sa modific..

Sau daca este total gresit ce ar trebui sa fac.

Edited by nosferatu
Link to comment
Share on other sites

Presupunand ca n-ul citit este impar:

#include<iostream.h>

void main()

{

int n,a[10][10],i,j,s=0;

cout<<"n=";

cin>>n;

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

{

cout<<"a["<<i<<"]["<<j<<"]=";

cin>>a[j];

}

for(i=1;i<=n;i++)

{

if(i!=(n+1)/2)

{

s+=a[n-i+1];

s+=a;

}

else

{

s+=a;

}

}

cout<<"Suma: "<<s<<"\n";

}

Daca n-ul e par dispareacel else.

Testat in Borland.

Link to comment
Share on other sites

Nu..probabil nu ai inteles.

Programul ar trebui sa faca ceva de genu:

Cere latura matrici..

sa spunem ca dam 3:

7 8 9

6 1 2

5 4 3

Se incepe cu 1 si continua in spirala pana cand latura tabloului ajunge la 3.

Si dupa se aduna numerele de pe diagonala..

7+1+3+5+1+9=26

LE: ma cam depaseste asta. Inca invat c++ si nu am ajuns la tablouri.

Link to comment
Share on other sites

randomize() nu e functie c ansi

if(M%2) cout<<"Ultimul nivel
"<<careu[n][n];

e interpretata ca doua linii

main() trebuie sa returneze int nu void

implicit la sfarsit pui return 0;

Random nu are parametrii in c ansi

long int random(void);

aici lipseste o paranteza

for (j=L;j<M-L-1;j++)

pentru getch() trebuie

#include <curses.h>

In rest algoritmul are buguri dar nu e datoria mea sa te ajut :)

totusi de ce ai facut

  do
{cout<<"Dimensiune careu: ";
cin>>M;
}while(M<2 || M>2);

Link to comment
Share on other sites

ba dar incetati cu problemele primite ca tema de la profa de info ... si tu nytro mai mult ii incurajezi

Ce atitudine de ipocriti aveti....

Nu va faceti griji ca nu este tema. Inca nu fac tablouri bidimensionale la liceu deci...suck

Am incercat sa fac ceva, nu vreau mura in gura..Unii mai si gandesc..

Aveam nevoie pt altceva..o.O

pentru getch() trebuie

#include <curses.h>

Eu stiu ca trebuie:

#include<conio.h>

Nu am avut probleme pana acum..

totusi de ce ai facut

Nu trebuie sa declar dimensiunea careului. Si careul o i-a in spirala..

Link to comment
Share on other sites

"Ce atitudine de ipocriti aveti...."

De ce? Pentru ca nu iti rezolva problema? Normal ar fi sa nu te ajute nimeni... Oricum eu tot nu am inteles cum vine spirala aia.

Te simti? Nu vreau ca nimeni sa imi rezolve problema, ci doar sa ma ajute..

Normal ar fi sa nu te ajute nimeni...

De ce?..o.O..

Ok forget it..

Ma descurc singur..

PS: nytro: parca asta era si rolul forumului. Ajuti si primesti ajutor..

Link to comment
Share on other sites

Ok, ma ajuti si pe mine sa trec la mate? Ma ajuti sa iau un 6? Imi faci si mie tema la info? Iti scriu problemele? Aici pot venii tot felul de oameni cu tot felul de probleme. Nu e nimeni obligat sa te ajute. La mine te-ai referit cand ai spus "Ce atitudine de ipocriti aveti...." ?

Link to comment
Share on other sites

Ok am inteles..Dar mai bine nu posta nimeni si nu venea cu replici de genu:

ba dar incetati cu problemele primite ca tema de la profa de info ... si tu nytro mai mult ii incurajezi

Si nu este tema nimanui!!!!Nu are legatura cu scoala..

Nu m-am referit la tine..

1.INCA nu imi permit sa te fac ipocrit..

2. Ai incercat ceva acolo sa ma ajuti si iti multumesc pt asta..

Link to comment
Share on other sites

de ce nu incerci sa faci rezolvarea pe indicii matricii,sa iti dai seama care este regula de adunare?:)

Avem matricea ta :


21 22 23 24 25
20 7 8 9 10
19 6 1 2 11
18 5 4 3 12
17 16 15 14 13

Se observa ca n = 5

si noi trebuie sa adunam in cazul asta :

v[0][0] + v[0][n] + v[1][1] + v[1][n-1-1] + v[2][2] + v[3][3] + v[3][n-3-1] + v[4][4] + v[4][n-4-1]

De aici scoate regula de adunare,e foarte simplu.

Link to comment
Share on other sites

Eu stiu ca trebuie:

#include<conio.h>

Nu am avut probleme pana acum..

Scuze, asa cum spunea a13x4nd7u pentru windows trebuie sa folosesti conio.h

Nu trebuie sa declar dimensiunea careului. Si careul o i-a in spirala..

Tot nu inteleg, dar ideea e ca

1) careul o "i-a" in spirala se scrie cu ia legat (vezi verbul a lua in dexonline.ro)

2)


do
{cout<<"Dimensiune careu: ";
cin>>M;
}while(M<2 || M>2);

Ia spune-mi pentru ce valori ale lui M programul tau va sari din while?

Link to comment
Share on other sites

Guest temporary
Era o gluma?

A vorbit pt cei interesati. Daca nu erai de ce ai postat?..o.O

Nu cred ca ai nici un sfert din cunostintele lui dranaxum..

@dranaxum: merci.

am postat ca el e un vierme ... si face faze de genul : ... e pe hackpedia

cat despre cunostinte ... noi sa fim sanatosi

Link to comment
Share on other sites

Atat timp cat staff-ul nu a zis nimic inseamna ca totul e ok. Pana la urma tot userii de pe RST castiga fiindca daca nu ziceam nimic, poate nici nu se afla (chiar daca pe unii i-ar fi interesat).

(tot pentru cei interesati: am postat si algoritmul pentru complexitate O(1).)

Daca tu nu esti ajutat de acest algoritm, abtine-te fiindca RST, banuiesc, e o comunitate cu MULTI useri.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...