nelamurire rezultat probleme ( matrice )
Last Updated: Jan 16 2018 01:30, Started by
tutuN_
, Jan 15 2018 20:34
·
0
#1
Posted 15 January 2018 - 20:34
Salut!Am rezolvat o problema cu matrice doar ca am o nelamurire in legatura cu rezultatele pe care mi le da programul.
cerinta: Se citeste o matrice cu m linii si n coloane cu elemente nr intregi.Afisati elementele "cadru" pornind de la primul element (a[0][0]) in sensul invers acelor de ceasornic.Interschimbati elementele primei coloane cu elementele ultimei coloane si afisati matricea dupa interschimbare. #include <iostream> using namespace std; int a[20][25],m,n,i,j; void citire(int a[20][25], int &m, int &n) { cout<<"m=";cin>>m; cout<<"n=";cin>>n; for(i=0;i<m;i++) for(j=0;j<n;j++) { cout<<"a["<<i<<"]["<<j<<"]="; cin>>a[i][j]; } } void afisare_c(int a[20][25], int m, int n) { for(i=0;i<m;i++) cout<<a[i][0]<<" "; for(j=1;j<n;j++) cout<<a[m-1][j]<<" "; for(i=m-2;i>=0;i--) cout<<a[i][n-1]<<" "; for(j=n-2;j>0;j--) cout<<a[0][j]<<" "; } void interschimb(int a[20][25], int m, int n) { int c; for(i=0;i<n;i++) { c=a[i][0]; a[i][0]=a[i][n-1]; a[i][n-1]=c; } } void afisare(int a[20][25], int m, int n) { for(i=0;i<m;i++) { for(j=0;j<n;j++) cout<<a[i][j]<<" "; cout<<endl; } } int main() { citire(a,m,n); afisare_c(a,m,n); interschimb(a,m,n); afisare(a,m,n); return 0; }Programul functioneaza oarecum doar ca la afisarea elementelor cadru mi-l afiseaza pe primul element de doua ori( o data la inceput si o data la sfarsit) si nu stiu unde gresesc.De asemenea,elementele de pe ultima linia nu mi le interschimba iar prima linie nu mi-o afiseaza deloc.Cred ca gresesc la un for, dar nu-mi dau seama la care. Am atasat o poza. Rezultatele ar trebui sa fie: 0 3 6 9 1 2 8 5 2 1 si atat.Fara ultimul 0. Si afisarea matricei: 2 1 0 5 4 3 8 7 6 2 1 9 Multumesc! Attached Files |
#2
Posted 15 January 2018 - 21:39
Eu as incepe prin a vedea cand se afiseaza end-of-line. Dar apropo, de debug ai auzit?
|
#4
Posted 15 January 2018 - 21:44
Ok, atunci pune intrebarea altfel. Uite un mini articol in care am incercat sa acopar introducerea in debugging.
Insa strict la problema ta, ti-am o intrebare care te duce direct la raspuns. Nu sari peste informatii. Asadar, cand afisezi "end of line"? Edited by Cy_Cristian, 15 January 2018 - 21:44. |
#6
Posted 15 January 2018 - 21:52
Nu te-am intrebat la modul general. Poate intrebarea nu este foarte clara. Cand afiseaza "end of line" programelul tau? Ruleaza pe hartie intai. Urmareste codul si spune-ne cand se trece la rand nou.
|
#7
Posted 15 January 2018 - 22:00
Pai dupa ce interschimb prima coloana cu ultima creez o noua functie de afisare.Parcurg liniile si coloanele si afisez elementele din matricea cu elementele interschimbate punand spatiu intre ele.Sincer sa fiu,nu stiu cand se trece la un rand nou.Eu am copiat secventa de afisare pe care ne-a predat-o profa.Ma gandesc ca dupa ce se termina linia,se trece la un rand nou..
|
#8
Posted 15 January 2018 - 22:15
Eu deduc ca la momentul actual tu nu intelegi ce face programelul respectiv. Incearca sa sapi, nu lasa valul asta sa se asterne.
Acum avem 2 directii. Daca inveti doar pentru o nota, poti sa continui sa asimilezi cunostinte in mod automat, fara sa intelegi ce anume reprezinta. Daca vrei sa inveti, incearca sa sapi si sa vezi ce anume se intampla. Se pare ca ai aruncat o privire pe articolul de debugging. Incearca sa aplici in programele pe care nu le intelegi, PS: Trecerea la un nou rand in programelul tau este data de secventa de cod. cout<<endl;Intrebare, spune exact in ce moment se apeleaza acea linie. |
#9
Posted 15 January 2018 - 22:29
Pentru fiecare linie i, afisam elementele de pe acea linie apoi trecem la un rand nou.Deci dupa ce se afiseaza ultimul element de pe linia i, atunci se trece la un rand nou.
|
#10
Posted 15 January 2018 - 22:36
Putem trage concluzia ca acum intelegi care este problema si ca topicul poate fi considerat inchis?
|
|
#11
Posted 15 January 2018 - 22:43
Spre rusinea mea,n-am inteles care este problema si nu inteleg de ce nu-mi afiseaza prima linie.In alte probleme pe care le-am facut afisarea era corecta.Problema de mai sus am rezolvat-o azi la clasa pe foaie cu profa, iar acasa am vrut sa vad daca functioneaza.
Edited by tutuN_, 15 January 2018 - 22:43. |
#12
Posted 16 January 2018 - 01:30
@OP si daca maine cineva iti cere o matrice mai mare ce faci ?
renunta la variabile globale void citire(int a[20][25], int &m, int &n) { cout<<"m=";cin>>m; cout<<"n=";cin>>n; for(i=0;i<m;i++) for(j=0;j<n;j++) { cout<<"a["<<i<<"]["<<j<<"]="; cin>>a[i][j]; } }m si n pot fi mai mari decat 20 respectiv 25, plus ca functia ar trebui sa citeasca doar matricea, nu si marimea acesteia. ce este afisare_c ? De unde incepe si unde se termina afisrea cadrului ? |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users