KonNDor Posted May 28, 2020 Report 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
yoyois Posted May 28, 2020 Report 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
KonNDor Posted May 28, 2020 Author Report 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