nosferatu Posted January 14, 2009 Report Posted January 14, 2009 (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 2520 7 8 9 1019 6 1 2 1118 5 4 3 1217 16 15 14 13Suma elementelor de pe diagonale va fii egala cu:21 + 25 + 7 + 9 + 1 + 5 + 3 + 17 + 13 = 101M-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 January 17, 2009 by nosferatu Quote
Nytro Posted January 14, 2009 Report Posted January 14, 2009 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. Quote
nosferatu Posted January 15, 2009 Author Report Posted January 15, 2009 Nu..probabil nu ai inteles.Programul ar trebui sa faca ceva de genu:Cere latura matrici..sa spunem ca dam 3:7 8 96 1 25 4 3Se 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=26LE: ma cam depaseste asta. Inca invat c++ si nu am ajuns la tablouri. Quote
Guest temporary Posted January 15, 2009 Report Posted January 15, 2009 ba dar incetati cu problemele primite ca tema de la profa de info ... si tu nytro mai mult ii incurajezi Quote
noidee Posted January 15, 2009 Report Posted January 15, 2009 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 voidimplicit la sfarsit pui return 0;Random nu are parametrii in c ansi long int random(void);aici lipseste o parantezafor (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); Quote
nosferatu Posted January 15, 2009 Author Report Posted January 15, 2009 ba dar incetati cu problemele primite ca tema de la profa de info ... si tu nytro mai mult ii incurajeziCe atitudine de ipocriti aveti....Nu va faceti griji ca nu este tema. Inca nu fac tablouri bidimensionale la liceu deci...suckAm incercat sa fac ceva, nu vreau mura in gura..Unii mai si gandesc..Aveam nevoie pt altceva..o.Opentru getch() trebuie #include <curses.h>Eu stiu ca trebuie:#include<conio.h>Nu am avut probleme pana acum..totusi de ce ai facutNu trebuie sa declar dimensiunea careului. Si careul o i-a in spirala.. Quote
Nytro Posted January 15, 2009 Report Posted January 15, 2009 "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. Quote
a13x4nd7u Posted January 15, 2009 Report Posted January 15, 2009 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. Quote
nosferatu Posted January 15, 2009 Author Report Posted January 15, 2009 "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.. Quote
Nytro Posted January 15, 2009 Report Posted January 15, 2009 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...." ? Quote
nosferatu Posted January 15, 2009 Author Report Posted January 15, 2009 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 incurajeziSi 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.. Quote
Nytro Posted January 15, 2009 Report Posted January 15, 2009 Si te voi ajuta daca inteleg ce vrei sa faci. Dami exemplu pe o matrice 5 pe 5 si pe una 6 pe 6, ceva mai mare sa vad mai bine. Quote
Andrei Posted January 17, 2009 Report Posted January 17, 2009 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 2520 7 8 9 1019 6 1 2 1118 5 4 3 1217 16 15 14 13Se 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. Quote
noidee Posted January 17, 2009 Report Posted January 17, 2009 Eu stiu ca trebuie:#include<conio.h>Nu am avut probleme pana acum..Scuze, asa cum spunea a13x4nd7u pentru windows trebuie sa folosesti conio.hNu 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? Quote
dranaxum Posted January 17, 2009 Report Posted January 17, 2009 gasiti rezolvarea pe hackpedia. Quote
Guest temporary Posted January 17, 2009 Report Posted January 17, 2009 gasiti rezolvarea pe hackpedia.Asta e o consecinta ... a faptului ca ai tai nu au folosit prezervativul Quote
dranaxum Posted January 17, 2009 Report Posted January 17, 2009 Daca incerci sa ma scoti din sarite, nu iti iese.Daca incerci sa iti creezi o imagine proasta (dpdv comportamental) iti iese.Concluzie: tu ai de pierdut. Quote
nosferatu Posted January 17, 2009 Author Report Posted January 17, 2009 Asta e o consecinta ... a faptului ca ai tai nu au folosit prezervativulEra o gluma?A vorbit pt cei interesati. Daca nu erai de ce ai postat?..o.ONu cred ca ai nici un sfert din cunostintele lui dranaxum..@dranaxum: merci. Quote
Guest temporary Posted January 18, 2009 Report Posted January 18, 2009 Era o gluma?A vorbit pt cei interesati. Daca nu erai de ce ai postat?..o.ONu 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 Quote
dranaxum Posted January 18, 2009 Report Posted January 18, 2009 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. Quote