Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cum sterg mails din Promotions

Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Donez medicamente renale ptr pisica
 Ce componenta e asta si ce ziceti...

Dupa 20 ani de facultate, am uita...

Mobile.de ofera imprumut de bani ...

problema test grila
 Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...

Jante noi shitbox

Trinitas TV 4K
 Dacia 1316 cu 6 usi ...

Frecventa modificata radio

Un nou pericol pt batrani

Ar trebui sa vindem imobiliarele ...
 

Paralele cu diagonala principala

- - - - -
  • Please log in to reply
3 replies to this topic

#1
player2001

player2001

    New Member

  • Grup: Junior Members
  • Posts: 6
  • Înscris: 01.11.2017
Salut ...cum as putea sa separ paralelele diagonalei principale :
#include <iostream>
using namespace std;
int  main()
{
    int mat[20][20];
    int n,i,j,d;
    cin>>n;
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    {
    cin>>mat[i][j];
    }
    for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++)cout<<mat[i][j]<<" ";
    cout<<endl;
    }
    d=n-1;
    while(d>=0)
    {
    for(i=0;i<n-d;i++)cout<<mat[i][i+d]<<" ";
    d--;
    }
    return 0;
}
asta e codul care l-am folosit ,dar mi le da una dupa alta pe aceiasi linie
Pt
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
sa-mi afiseze
4
3 8
2 7 12

#2
maccip

maccip

    46 ani

  • Grup: Senior Members
  • Posts: 33,266
  • Înscris: 06.01.2007
Iti lipseste un cout<<endl; dupa(sau inainte de) d--;

Insa, mai elegant, ecuatia unei paralele cu diagonala este i=j+d, unde.
Tie iti lipsesc cateva diagonale acolo. In total sunt 2n-1 paralele, nustiu care ti-a fost intentia.
Pentru :
d ∈ [-n+1 , n-1]
i ∈ [0 , n-1]
j ∈ [0 , n-1]
Avem pentru d ∈ [-n+1 , n-1], fixat:
i ∈ [d, d+n-1] ∩ [0 , n-1]
sau, altfel zis
pentru d>=0
i ∈ [d, n-1]
iar pentru d<0
i ∈ [0, d+n-1]

si j=i-d

Deci, eu as face asa(daca e sa le afisez pe toate 2n-1 paralelele):
for(d=-n+1; d<0; d++) //d<0
{
   for(i=0; i<d+n; i++)
	   cout<<mat[i][i-d]<<" ";
   cout<<endl;
}
// aici deja avem d=0, dar... hai sa fie mai clar.
for(d=0; d<n; d++) //d>=0
{
   for(i=d; i<n; i++)
	   cout<<mat[i][i-d]<<" ";
   cout<<endl;
}

//Daca le vrei in ordine inversa, scrii forurile for(d=n-1;d>=0;d--) respectiv for(d=0;d>-n;d--), avand grija care din ele e pentru d>=0 respectiv d<0


Poti utiliza si operatorul ? : pentru a putea folosi un singur for.
Scrii ceva de genul:
for(d=-n+1; d<n;d++)
{
   for(i=(d>=0 ? d : 0); i<(d>=0 ? n : d+n); d++)
		cout<<mat[i][i-d]<<" ";
   cout<<endl;
}



#3
player2001

player2001

    New Member

  • Grup: Junior Members
  • Posts: 6
  • Înscris: 01.11.2017

View Postmaccip, on 14 noiembrie 2017 - 00:01, said:

Iti lipseste un cout<<endl; dupa(sau inainte de) d--;

Insa, mai elegant, ecuatia unei paralele cu diagonala este i=j+d, unde.
Tie iti lipsesc cateva diagonale acolo. In total sunt 2n-1 paralele, nustiu care ti-a fost intentia.
Pentru :
d ∈ [-n+1 , n-1]
i ∈ [0 , n-1]
j ∈ [0 , n-1]
Avem pentru d ∈ [-n+1 , n-1], fixat:
i ∈ [d, d+n-1] ∩ [0 , n-1]
sau, altfel zis
pentru d>=0
i ∈ [d, n-1]
iar pentru d<0
i ∈ [0, d+n-1]

si j=i-d

Deci, eu as face asa(daca e sa le afisez pe toate 2n-1 paralelele):
for(d=-n+1; d<0; d++) //d<0
{
for(i=0; i<d+n; i++)
cout<<mat[i][i-d]<<" ";
cout<<endl;
}
// aici deja avem d=0, dar... hai sa fie mai clar.
for(d=0; d<n; d++) //d>=0
{
for(i=d; i<n; i++)
	 cout<<mat[i][i-d]<<" ";
cout<<endl;
}

//Daca le vrei in ordine inversa, scrii forurile for(d=n-1;d>=0;d--) respectiv for(d=0;d>-n;d--), avand grija care din ele e pentru d>=0 respectiv d<0


Poti utiliza si operatorul ? : pentru a putea folosi un singur for.
Scrii ceva de genul:
for(d=-n+1; d<n;d++)
{
for(i=(d>=0 ? d : 0); i<(d>=0 ? n : d+n); d++)
cout<<mat[i][i-d]<<" ";
cout<<endl;
}



Mersi ! Imi trebuia toate diagonalele.... nu mi-a dat seama ca endl trebuia pus dupa d--;eu am incercat sa-l pun dupa mat[i][i+d]

#4
versacic

versacic

    Junior Member

  • Grup: Members
  • Posts: 197
  • Înscris: 28.10.2017
Mie nu-mi merge programul

Imi da vreo 2-3 erori in MingGW

Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

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