KonNDor Posted May 28, 2020 Report Share Posted May 28, 2020 Buna ziua. Sunt elev in clasa a Xa. Doresc pana la toamna sa ajung la un nivel avansat in C++ :-). Astfel, trebuie lucrat mult. Avem urmatoarea problema, de pe un site al carui nume nu are rost sa il precizez, pentru a nu face reclama. Cu un search pe google, puteti gasi fara probleme. Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Să se determine mulțimea formată din elementele distincte ale chenarului matricei. Eu am gandit in felul urmator. Parcurg linia de sus & jos si coloana stanga & dreapta, iar elementele sa le pun intr-un vector ( si ulterior sa afisez vectorul ). Am incercat sa pun toate elementele intr-un vector, in schimb pe consola imi afiseaza 0 0 0 0 0 0 0 etc. Rugamintea mea este sa ma ajutati si sa imi explicati de ce imi afiseaza 0. In capul meu, merge bine programul, fiecare element ii este atribuit lui a[l+1]. Va multumesc frumos pentru atentie, imi cer scuze pentru aceasta intrebare de incepator, dar nu gasesc pe net vreun raspuns. Mai jos aveti atasat codul. #include <iostream> using namespace std; int main() { int n, m, i, j, a[105][105], aux[600], l=0; cin>>n>>m; for(i=1; i<=n; i++) { for(j=1; j<=m; j++) cin>>a[j]; } for(j=1; j<=m; j++) { a[1][j]=aux[l+1]; } for(i=1; i<=n; i++) { a[m]=aux[l+1]; } for(j=m; j>=1; j--) { a[n][j]=aux[l+1]; } for(i=n; i>=1; i--) { a[1]=aux[l+1]; } for(l=1; l<=(n*2+m*2)-3; l++) cout<<aux[l]<<" "; return 0; } Quote Link to comment Share on other sites More sharing options...
yoyois Posted May 28, 2020 Report Share Posted May 28, 2020 Te ajuta ft mult daca pui niste comentarii la codul tau. Incearca sa formulezi un // adauga fiecarui element a[x][y] etc... Deja m-ai pierdut la cin>>a[j]; Daca ai o matrice a[100][100] elementele tale vor fi a[x][y] deci in concluzie vei avea cin>>a[i][j]; Ca sa parcurgi toate elementele din matrice vei avea iar 2 for loops //pt fiecare linie le la 0 la n for(i=0;i<n;i++){ //luam fiecare numar de coloana de la 0 la m for(j=0;j<m;j++) { //elementul a[i][j] e pe linia i coloana j //aux de l devine a[i][j] aux[l++] = a[i][j]; } } Probmela e ca elememnele trebuie sa fie distincte deci daca ai matricea 1 1 1 1 2 2 tu nu vei afisa 111122 ci trebuie sa afisezi doar 12 Bafta Quote Link to comment Share on other sites More sharing options...
KonNDor Posted May 28, 2020 Author Report Share Posted May 28, 2020 (edited) 1 hour ago, yoyois said: Deja m-ai pierdut la cin>>a[j]; Daca ai o matrice a[100][100] elementele tale vor fi a[x][y] deci in concluzie vei avea cin>>a[i][j]; Intr-adevar, am copiat eu gresit. In codul meu am citit si randurile [ i ] si coloanele [j]. Am reperat greseala. Eu egalam elementele matricei cu elementele noului vectorului, si nu invers. In loc de a[1][j]=aux[l+1]; trebuia sa scriu aux[l+1]=a[1][j]; Multumesc frumos, daca mai am intrebari voi incerca sa adaug comentarii la cod. Seara buna! Edited May 28, 2020 by KonNDor Quote Link to comment Share on other sites More sharing options...