Second Opinion
Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale. Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit. www.neurohope.ro |
[TEMA] Dificultate citire matrice
Last Updated: Jul 10 2015 12:43, Started by
DaRakNa
, Jul 01 2015 14:55
·
0
#1
Posted 01 July 2015 - 14:55
Salutare!
Am o matrice cu m linii si n coloane; m,n diferite de 0. Am nevoie de un algoritm de citire pe diagonala astfel: Pentru matricea a[2][3] 1 2 3 4 5 6 sirul rezultat este 1 2 4 3 5 6 a[4][3] 1 2 3 4 5 6 7 8 9 10 11 12 sirul rezultat este: 1 2 4 3 5 7 6 8 10 9 11 12 Am scris programul insa am nevoie de ajutor in a determina in mod corect variabila param care este influentat de m si n. #include<iostream> #include<fstream> using namespace std; void main() { int m,n,mat[20][20]; ifstream myReadFile; myReadFile.open("in.txt"); myReadFile>>m>>n; for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++) { myReadFile>>mat[i][j]; } } for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++) { cout<<mat[i][j]<<" "; } cout<<endl; } int sign=0,param=-1; for(int i=2;i<=n+m;i++) { for(int j=1;j<=m;j=j++) { for(int k=1;k<=n;k++) { if(j+k==i)cout<<mat[k-sign][j+sign]<<" "; if(i==((n*m/2)+param))sign=n-m; //nu am reusit sa determin modalitatea prin care se calculeaza parametrul corect pentru o citire corecta // 4 X 3 este -1 // 3 X 4 este -1 // 5 X 4 este -4 // 3 x 2 este +1 } } cout<<endl; } myReadFile.close(); } /*valoari in.txt 3 4 1 2 3 4 21 5 6 7 8 31 9 10 11 12 41 51 61 71 81 91 101 102 103 104 105 */ |
#3
Posted 01 July 2015 - 18:54
Uite, un cod frumos. Sper să-l înțelegi! Modelează exact ideea sugerată de MarianG.
void selectedRead (const int **p, int linii, int coloane){ for (int c=0,l=0 ; c+l<=linii+coloane-2 ; c<coloane-1 ? c++ : l++){ int copyC=c; int copyL=l; while (copyC >=0 && copyL <= linii-1){ cout << p[copyL][copyC] << ' '; copyC--; copyL++; } } } Edited by Rhesus, 01 July 2015 - 18:55. |
#4
Posted 10 July 2015 - 12:43
Rhesus, on 01 iulie 2015 - 18:54, said:
Uite, un cod frumos. Sper să-l înțelegi! Modelează exact ideea sugerată de MarianG. void selectedRead (const int **p, int linii, int coloane){ for (int c=0,l=0 ; c+l<=linii+coloane-2 ; c<coloane-1 ? c++ : l++){ int copyC=c; int copyL=l; while (copyC >=0 && copyL <= linii-1){ cout << p[copyL][copyC] << ' '; copyC--; copyL++; } } } Multumesc Rhesus si MarianG, cu ocazia asta am inteles si operatia ternara (exp1 ? exp2 : exp3) Am reusit sa inteleg si sa folosesc algoritmul tau. Nu am reusit sa transmit matricea prin referinta. Am incercat cu &mat, fara succes insa, drept pentru care am modificat parametrul din subprogramul tau din "const int **p" in int p[20][20]. Intrebare: de ce folosesti var1<=var2-1 cand poti folosi var1<var2 ? |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users