Jump to content
KonNDor

Problema C++ matrice // Afisare gresita vector

Recommended Posts

  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;
}
 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 by KonNDor
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...