|
Titlul: Problema Patrat Magic Scris de: A Cosmina - vechi din Mai 02, 2009, 12:54:11 Am urmatoarea cerinta: "Sa se scrie un prog. care verifica -printr-o singura parcurgere- daca o matrice cu n(n impar) linii si n coloane este patrat magic.
Am ajuns la urmatoarea concluzie: -sa zicem ca n=5 np=n*n adica 25 if (n%2!=0) k=(int)np%2+1; else k=(int)np%2; si asa am aflat nr care trebuie pus in mijloc, in acest caz 13. suma care trebuie sa fie in patrat o aflu cu 5*13=65 adica s=n*k. Acum mai ramane problema cu parcurgerea...Am cautat si am gasit patratul: 11 24 7 20 3 4 12 25 8 16 17 5 13 21 9 10 18 1 14 22 23 6 19 2 15 Am observat ca elementele de pe diagonala principala sunt consecutive, iar cele de pe diagonala secunadra sunt +n.Adica: 3+5=8 8+5=13 13+5=18 18+5=23 Cum fac treaba cu o singura parcurgere?Mentionez ca nu am invatat inca functii... :sad: Titlul: Răspuns: Problema Patrat Magic Scris de: alexandru din Mai 02, 2009, 14:59:03 poate te ajuta urmatoarea chestie:
Citat Un pătrat magic constă dintr-un tablou de numere aranjate în forma unui pătrat, astfel încât sumele elementelor din fiecare linie, coloană şi din cele două diagonale să fie identice; valoarea sumei se numeşte număr magic. Un pătrat magic este de ordin n dacă pe o latură a sa sunt aşezate n numere, iar în componenţa sa intră numerele 1, 2, 3…, n2; atunci numărul magic poate fi calculat cu formula: număr magic = n(n^2+1)/2. Titlul: Răspuns: Problema Patrat Magic Scris de: A Cosmina - vechi din Mai 02, 2009, 15:50:51 Exact acelasi lucru am facut si eu. Am probleme cu parcurgerea, nu cu aflarea nr magic (adica cel din centru).
Titlul: Răspuns: Problema Patrat Magic Scris de: gaboru corupt din Mai 02, 2009, 17:04:19 O metoda foarte simpla consta in urmatoarele actiuni:
Se plaseaza 1 in centrul ultimei coloane; Se merge in linie oblica, dreapta-jos, cu numarul urmator; daca se iese din patrat prin partea dreapta, se merge in partea opusa, in stanga liniei unde trebuia depus numarul, iar daca se iese prin partea de jos a patratului, se merge in partea de sus a coloanei unde trebuia depus numarul; Dupa ce se completeaza un grup de n numere, se merge cu o casuta spre stanga, pe aceeasi linie, pentru a se repeta apoi pasul 2 si a genera urmatorul grup de n numere. Se obtine in final urmatorul patrat magic: 11 10 4 23 17 18 12 6 5 24 25 19 13 7 1 2 21 20 14 8 9 3 22 16 15 Titlul: Răspuns: Problema Patrat Magic Scris de: A Cosmina - vechi din Mai 02, 2009, 17:20:32 Asta am gasit si eu pe net, pe mine ma interseaza cum verific, nu cum construiesc un patrat magic.
Titlul: Răspuns: Problema Patrat Magic Scris de: alexandru din Mai 02, 2009, 17:58:47 Intr-un vector sumi -retii sumele de pe fiecare linie si de pe cele 2 diagonale, intr-un vector sumj retii sumele de toate coloanele , apoi verifici daca fiecare element din cei 2 vectori este egal cu n(n^2+1)/2 :d.
Vectorii ii construiesti chiar de la citire => nu mai ai nevoie de matrice :D daca te chinui putin poti sa scapi de vectorul sumi :D Titlul: Răspuns: Problema Patrat Magic Scris de: A Cosmina - vechi din Mai 02, 2009, 18:08:04 Buna idee! O sa incerc si revin cu post. ;)
Titlul: Răspuns: Problema Patrat Magic Scris de: A Cosmina - vechi din Mai 04, 2009, 18:47:45 Ce nu e bine?
Cod: #include <iostream.h> Titlul: Răspuns: Problema Patrat Magic Scris de: Pripoae Teodor Anton din Mai 04, 2009, 19:54:26 Pai, in primul rand tu adaugi la sp si ss de n ori aceeasi chestie. Tre sa mai compari ss cu sumi[1] si sumi[1] cu sumj[1]. De asemenea, la if-uri trebuie || in loc de &&.
Cod: #include <iostream.h> Titlul: Răspuns: Problema Patrat Magic Scris de: Florian Marcu din Mai 04, 2009, 20:16:06 Iar sumi[] nu e initializata [ faci direct "sumi[ i ] += a[ i ] [ j ]; " ]
Titlul: Răspuns: Problema Patrat Magic Scris de: A Cosmina - vechi din Mai 04, 2009, 20:37:05 Am modificat si asta si 13 acela din colt (care de fapt era 23) si afiseaza nu! :-s
Titlul: Răspuns: Problema Patrat Magic Scris de: alexandru din Mai 05, 2009, 16:43:49 Uite un cod care merge :d
Cod: /*si ,si2 retin suma de pe linii La tine din cate am vazut: Citat for (i = 1; i <= n; ++ i) ar trebuii sa inceapa de la 0 ...n-1Citat ss=a[ i ][ n-1-i ]; ss+=a[ i ][ n-1-i ];Titlul: Răspuns: Problema Patrat Magic Scris de: Pripoae Teodor Anton din Mai 05, 2009, 20:14:16 Mdea, asa e, greseala mea.
Titlul: Răspuns: Problema Patrat Magic Scris de: A Cosmina - vechi din Mai 06, 2009, 17:06:54 Salut! Am rezolvat problema altfel:
Cod: clrscr(); |