Salt la conținut

SUBIECTE NOI
« 1 / 5 »
RSS
Manager transport marfa. Pareri. ...

BIOS F.24 pentru HP Pavilion g7-2...

Meta Quest 3 512 gb

Father's Day
 Clipboard files copy/paste, filen...

Boardgame-uri despre cuvinte

Care-i treaba cu Reddit-ul? (nu m...

Diferente diferentiale
 Finala Eurovision 2024

De ce nu protestati?

Etanșare intre cada perete b...

Back-up box Fronius ?
 Router de la Digi nu face fata la...

Magnolii

Achizitie LG OLED evo 55C31LA - e...

Aplicatii PV Huawei Sun
 

Modificare program c++

- - - - -
  • Vă rugăm să vă autentificați pentru a răspunde
6 răspunsuri în acest subiect

#1
-PTM-Andrey

-PTM-Andrey

    New Member

  • Grup: Junior Members
  • Mesaje: 17
  • Înscris: 29.01.2016
Salut. Se da urmatoarea cerinta:

Se dă o matrice m cu N linii și N coloane. Să se afișeze fiecare paralelă la diagonala principală. Paralele vor fi parcurse de la stânga la dreapta. Elementele de pe fiecare paralelă vor fi parcurse de jos în sus.

Date de intrare
De pe prima linie se citesc la tastatură numărul N. De pe următoarele N linii se citesc N numere naturale care reprezintă elementele matricei.

Date de ieșire
Programul va afișa pe ecran un șir de numere, separate prin spații, reprezentând elementele matricei parcurse în ordinea din enunț.

Restricții și precizări
1 ≤ N ≤ 50
1 ≤ m[j] ≤ 100

Exemplu:

Pentru n=4 și matricea:
1   2   3   4
5   6   7   8
9  10 11 12
13 14 15 16


Se va afisa: 13 14 9 15 10 5 16 11 6 1 12 7 2 8 3 4

Mie imi afiseaza astfel: 13 9 14 5 10 15 1 6 11 16 2 7 12 3 8 4

#include <iostream>

using namespace std;

int  main()
{
int m[20][20], n, i, j, x;
cin>>n;

for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>m[i][j];

cout<<"Liniile paralele cu diagonala principala, jos-sus && stanga-dreapta sunt: "<<endl;

for(x=-n+1; x<0; x++)
{
for(i=0; i<x+n; i++)
   cout<<m[i-x][i]<<" ";
}

for(x=0; x<n; x++)
{
for(i=x; i<n; i++)
   cout<<m[i-x][i]<<" ";
}
return 0;
}

Deci problema este urmatoarea: Cum pot face sa se afiseze de la stanga la dreapta paralelele diagonalei ? ( Vezi exemplu )

Editat de -PTM-Andrey, 04 iulie 2018 - 10:54.


#2
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Mesaje: 27.268
  • Înscris: 10.08.2006
Scrie perechile de (i,j) explicit pentru matricile de dimensiune 1x1, 2x2, 3x3, 4x4, 5x5, si extrage formulele matematice.

#3
karax

karax

    Guru Member

  • Grup: Senior Members
  • Mesaje: 21.841
  • Înscris: 14.10.2017
Aici solutia nu e cumva ordinea in care sunt asezate in cele doua "cout"-uri?

#4
-PTM-Andrey

-PTM-Andrey

    New Member

  • Grup: Junior Members
  • Mesaje: 17
  • Înscris: 29.01.2016

 karax, on 04 iulie 2018 - 12:01, said:

Aici solutia nu e cumva ordinea in care sunt asezate in cele doua "cout"-uri?

Asa m-am gandit si eu initial pana cand am incercat aproape toate variantele ( mai putin cea buna, aparent )


EDIT: Problem solved

for(d=-n+1; d<0; d++)
{
for(i=d+n; i>0; i--)
   cout<<m[i-1-d][i-1]<<" ";
}
  
for(d=0; d<n; d++)
{
for(i=n; i>d; i--)
   cout<<m[i-1-d][i-1]<<" ";
}

Editat de -PTM-Andrey, 04 iulie 2018 - 12:20.


#5
karax

karax

    Guru Member

  • Grup: Senior Members
  • Mesaje: 21.841
  • Înscris: 14.10.2017
Atunci decalajul este trecut in for-uri. Ca altundeva nu are unde.

Sau in int m[20][20] ....desi nu vad ce ar fi gresit...

#6
-PTM-Andrey

-PTM-Andrey

    New Member

  • Grup: Junior Members
  • Mesaje: 17
  • Înscris: 29.01.2016
Problema rezolvata. Multumesc mult karax.

Aparent trebuiau luate al doilea for de la fiecare parcurgere in ordine inversa ...

Puteti da t/c. Scuzati pentru post aiurea, daca este considerat asa...

#7
karax

karax

    Guru Member

  • Grup: Senior Members
  • Mesaje: 21.841
  • Înscris: 14.10.2017
Wow mersi...e prima data cand imi spune cineva ca am dat un sfat bun in materie de programare... ma duc sa sarbatoresc...

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

Utilizatori activi: 1

0 membri, 1 vizitatori, 0 utilizatori anonimi

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate