Jump to content
nosferatu

[help]tablouri bidimensionale. c++

Recommended Posts

Posted (edited)

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
Posted

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.

Posted

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.

Guest temporary
Posted

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

Posted

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);

Posted
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..

Posted

Pentru getch() trebuie conio.h pe Windows si curses.h pe Linux (iar pe linux si initializare).

Ceva asemanator am primit eu mai de mult in clasa a 10-a.

Dar ca sa fac asta ia cam mult timp si nu prea am timp. :|

Posted
"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..

Posted

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...." ?

Posted

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..

Posted

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.

Posted

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?

Guest temporary
Posted
gasiti rezolvarea pe hackpedia.

Asta e o consecinta ... a faptului ca ai tai nu au folosit prezervativul

Posted
Asta e o consecinta ... a faptului ca ai tai nu au folosit prezervativul

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.

Guest temporary
Posted
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

Posted

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.

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...