Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cum pot bloca transferul de date ...

Ce reprezinta in chimie abrevieri...

Google pay ma taxeaza in timp ce ...

Kia Picanto 2022 - Problema motor?
 Durere umar AC Joint

Care este cea mai sanatoasa paine?

Zgomot ritmic ce urmeaza rotirea ...

Merita Lumix FZ82 in 2024?
 Nu pot activa Memory Integrity

Supratensiuni accidentale

Cuțit/ briceag drumetie

Cum am acces la o parte dintr-un ...
 Mother's Day

Recomandare aparat de vidat alime...

Izolatie exterioara casa parter P...

Cuvinte si expresii neclare
 

[TEMÃ] Matrice: transpusã, maxim

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

#1
Bigbandit

Bigbandit

    Junior Member

  • Grup: Members
  • Posts: 42
  • Înscris: 29.05.2011
Salutare

Am o problema in C care spune asa:

Se da o matrice patratica cu n linii si coloane, ale carei valori se citesc de la tastatura. Se cere:
1) Sa se afiseze traspusa  matricei date, si sa se stocheze valoare acesteia.
2) Sa se calculeze cel mai mare numar din matrice, de cate ori apare si pe ce pozitii.


punctul 1 l-am facut, la punctul 2 am dificultati .
cine ma poate ajuta ?

Programul meu arata cam asa:

#include<stdio.h>
int main()
{
int n,mat[10][10],m,x,i,j,k=0,max=0;
printf("Se calculeaza o matrice patratica.\n\n");
printf("\nDati n=");
scanf("%d",&n);
for(i=0;i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
{
printf("mat[%d][%d]= ",i,j);
scanf("%d",&mat[i][j]);
}
}
printf("\n+---- Matricea este: \n");
for(i=0;i<=n-1;i++)
{
printf("\n");
for(j=0;j<=n-1;j++)
{
printf("%d ",mat[i][j]);
}
}
printf("\n\n+---- Transpusa matricei este: \n");
for(j=0;j<=n-1;j++)
{
printf("\n");
for(i=0;i<=n-1;i++)
{
printf("%d ",mat[i][j]);
}
}
for(j=0;j<=n-1;j++)
for(j=0;j<=n-1;j++)
{
x=mat[i][j];
mat[i][j]=mat[j][i];
mat[j][i]=x;

}  
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
mat[i][j];
k=1;
for(i=1;i<=n;i++)
  for(j=1;j<=n;j++)
   printf("%d",mat[n][j]);
  for(i=2;i<=n-1;i++)
  for(i=2;i<=n-1;i++)
   printf("%d",mat[i][n]);
  for(i=1;i<=k+1;i++)
   { if(mat[i]>max)
   {max=mat[i];
k=1;
   }
   else
if(mat[i]==max)
  k++;
}
}
printf("max= ");
}

#2
george90

george90

    Senior Member

  • Grup: Senior Members
  • Posts: 2,013
  • Înscris: 19.08.2006
Cam lasa de dorit exprimarea unui membru din 2011.

1 - formateaza codul
2 - ce nu merge, unde sunt problemele ?

Edited by george90, 24 February 2013 - 16:46.


#3
Bigbandit

Bigbandit

    Junior Member

  • Grup: Members
  • Posts: 42
  • Înscris: 29.05.2011
Salut,

Nu inteleg ce problema sesisezi in exprimarea mea, te referi la cea verbala sau cea informatica?

Apoi codul compileaza dar ultima parte da o eroare pentru ca ultima parte a codului nu este corecta dar l-am postat ca sa arat cum am gandit problema.Pana unde afiseaza traspusa matricei codul e corect, pe urma nu reusesc sa fac sa-mi calculeze cel mai mare nr din matrice si sa-l stocheze de fiecare data cand il intalneste, si apoi la final sa afiseze toate locatiile cu numarul stocat.

Trebuie cineva sa ma ajute sa-mi spuna  daca am pornit bine cu ultima parte a codului sau trebuie sa am alta abordare.

#4
JayBird

JayBird

    IT Professional

  • Grup: Senior Members
  • Posts: 2,511
  • Înscris: 15.09.2009
E banal sa afli cel mai mare numar din matrice. La fiecare iteratie compari numarul curent cu cel precedent si daca e mai mare il stochezi in variabila MAX si resetezi contorul. Daca e egal cu MAX incrementezi contorul. Daca nu e mai mare treci mai departe.

#5
poadol

poadol

    Guru Member

  • Grup: Senior Members
  • Posts: 14,104
  • Înscris: 13.12.2010

View Postgeorge90, on 24 februarie 2013 - 16:46, said:

Cam lasa de dorit exprimarea unui membru din 2011.

1 - formateaza codul
2 - ce nu merge, unde sunt problemele ?
1. Exista un program automat de formatare a codului?
Daca da:
De ce nu-l indrumi unde poate fi gasit si eventual daca este cazul si cum se foloseste?

#6
opop

opop

    bolnav cronic :(

  • Grup: Senior Members
  • Posts: 6,570
  • Înscris: 06.01.2007
prima data cauti max

max=0
i=1,n
j=1,n
daca a[i][j]>max atunci max<-a[i][j]

apoi cauti pe ce pozitii e max
i=1,n
j=1,n
daca a[i][j]= max atunci scrie "max se gaseste pe ...
contor++

sper ca ai inteles ideea

totusi, de ce nu folosesti c++ ? sunt mai scurte comenzile de citit si scris

Edited by opop, 24 February 2013 - 18:25.


#7
JayBird

JayBird

    IT Professional

  • Grup: Senior Members
  • Posts: 2,511
  • Înscris: 15.09.2009
Foarte ineficient pseudo-codul tau. E nevoie de o singura parcurgere a matricii pentru rezolvarea ambelor probleme.

#8
opop

opop

    bolnav cronic :(

  • Grup: Senior Members
  • Posts: 6,570
  • Înscris: 06.01.2007

View PostJayBird, on 24 februarie 2013 - 18:41, said:

Foarte ineficient pseudo-codul tau. E nevoie de o singura parcurgere a matricii pentru rezolvarea ambelor probleme.
Probabil ca puteam face daca stateam sa ma gandesc mai mult de 1 minut, asta a venit repede.
Oricum, la nivel de liceu nu cred ca e o problema asta.

Edited by opop, 24 February 2013 - 18:54.


#9
Bigbandit

Bigbandit

    Junior Member

  • Grup: Members
  • Posts: 42
  • Înscris: 29.05.2011

View Postopop, on 24 februarie 2013 - 18:23, said:

prima data cauti max

max=0
i=1,n
j=1,n
daca a[i][j]>max atunci max<-a[i][j]

apoi cauti pe ce pozitii e max
i=1,n
j=1,n
daca a[i][j]= max atunci scrie "max se gaseste pe ...
contor++

sper ca ai inteles ideea

totusi, de ce nu folosesti c++ ? sunt mai scurte comenzile de citit si scris


un raspuns de genul asta asteptam,  si tin cont si de observatia lui jaybird  cred ca e suficient un cuplu de for pentru ambele.
O sa postez daca l-am rezolvat. Mersi mult!

#10
nucL3ar

nucL3ar

    Junior Member

  • Grup: Members
  • Posts: 45
  • Înscris: 23.08.2009

View Postopop, on 24 februarie 2013 - 18:23, said:

daca a[i][j]>max atunci max<-a[i][j]

Logica acestei afirmatii ma depaseste.

View Postopop, on 24 februarie 2013 - 18:23, said:

totusi, de ce nu folosesti c++ ? sunt mai scurte comenzile de citit si scris

c++ implica folosirea claselor si a programarii orientate pe obiecte.
Cum programul lui este unul scurt cu doar 2 taskuri, este mai normal de a fi scris in C sau Pascal.

De asemenea, nu inteleg ce vrei sa zici prin "sunt mai scurte comenzile de scris si citit"

Vrei sa zici ca
printf("%i %s %c", someInt, someString, someChar);
e mai greu decat
std::cout<<someInt<<someString<<someChar;
?

Poate sunt cateva caractere in plus, dar eu consider ca e mai clar primul.

Daca vrei sa scrii un numar cu doar 2 zecimale care e mai scurt?
printf("%.2f", someFloat);

sau
std::cout.precision(2);
std::cout<<someFloat;


?

Edited by nucL3ar, 24 February 2013 - 21:39.


#11
opop

opop

    bolnav cronic :(

  • Grup: Senior Members
  • Posts: 6,570
  • Înscris: 06.01.2007
Filozofezi doar de dragu de a te da destept ?
scanf("%d",&n)
cin>>n

e cam jumate, dumbass

#12
nucL3ar

nucL3ar

    Junior Member

  • Grup: Members
  • Posts: 45
  • Înscris: 23.08.2009
std::cin>>n vrei sa zici.

De asemenea, scrii pe calculator, nu pe foaie, deci nu vad problema.

Edited by nucL3ar, 24 February 2013 - 23:25.


#13
JayBird

JayBird

    IT Professional

  • Grup: Senior Members
  • Posts: 2,511
  • Înscris: 15.09.2009
std ala e total in plus acolo avand in vedere ca e implicit peste tot.

#14
msmihai

msmihai

    Senior Member

  • Grup: Senior Members
  • Posts: 5,271
  • Înscris: 02.09.2006

View PostnucL3ar, on 24 februarie 2013 - 21:35, said:

Logica acestei afirmatii ma depaseste.

Nasol. De fapt, nu e nicio afirmatie, e o linie de (pseudo)cod. Si e vorba de o atribuire care are loc atunci cand comparatia respectiva se evalueaza la true.
Vad ca programare stii (mai bine zis, stii sa cauti cearta din nimic). Te-ai incurcat la asa chestie simpla?

PS. Nu intotdeauna codul scurt este si cel mai lizibil. Daca ma uit peste un printf("%0.f0l9qblw",x) peste ceva timp, s-ar putea sa trebuiasca sa consult documentatia oficiala a printf pentru a intelege ce dumnezeu se petrece acolo. Un comentariu ajuta, ce e drept, dar un cod "bun" se citeste si se intelege fara alte lamuriri suplimentare sau referinte la cai verzi pe pereti.

Edited by msmihai, 24 February 2013 - 23:58.


#15
Bigbandit

Bigbandit

    Junior Member

  • Grup: Members
  • Posts: 42
  • Înscris: 29.05.2011
Domnilor, nu va mai certati :) , eu am inteles ideea lansata de opop. nucL3ar  a argumentat bine de ce fac programul in C si nu in C++ si de fapt programul se cere in C, eu nu vad diferenta foarte mare in scris citit intre ele, diferenta cea mare se face cand se fac programe orientate pe obiecte si atunci clar C-ul e depasit, programelul meu e banal  chiar la nivel de liceu dar am niste lacune pe care vreau sa le acopar. inca n-am terminat programul. Nu-mi afiseaza locatiile tuturor max care-i intalneste. Dar imi mai bat capu putin.

#16
OriginalCopy

OriginalCopy

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

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View PostBigbandit, on 25 februarie 2013 - 16:05, said:

Dar imi mai bat capu putin.
De acum încolo să pui prefixul [TEMĂ] în titlu, când ai o cerinţă de natură şcolărească. Şi nu "o problemă", un astfel de titlu e pentru tembeli. Toate subiectele de aici sunt "o problemă", dar un titlu trebuie să reflecte despre ce este problema.

Gândeşte şi tu înainte de a posta. A, şi avem o arie de Incepatori. N-o avem degeaba.

Dacă te-am mai găsit cu nereguli d-ăstea, te-am ars.

Succes la programare.

#17
nucL3ar

nucL3ar

    Junior Member

  • Grup: Members
  • Posts: 45
  • Înscris: 23.08.2009

View Postmsmihai, on 24 februarie 2013 - 23:56, said:

Nasol. De fapt, nu e nicio afirmatie, e o linie de (pseudo)cod. Si e vorba de o atribuire care are loc atunci cand comparatia respectiva se evalueaza la true.
Vad ca programare stii (mai bine zis, stii sa cauti cearta din nimic). Te-ai incurcat la asa chestie simpla?

Ok, o să încerc să-ți explic mai simplu, cu un exemplu.
daca a[i][j]>max atunci max<-a[i][j]


Fie un coș cu a[j] mere. În coș pot intra maxim 10 mere, dar prin anumite metode s-au forțat 12 mere. Astfel, conform afirmației lui, cum 12 mere > 10 mere => 10 mere < -12 mere. (minus doișpe mere)

Dar stai nene, cum adică -12 mere? Pleacă de aici, vrei să-mi furi banii!


#18
Cy_Cristian

Cy_Cristian

    Active Member

  • Grup: Members
  • Posts: 1,845
  • Înscris: 22.02.2009

View PostnucL3ar, on 25 februarie 2013 - 17:58, said:

Ok, o să încerc să-ți explic mai simplu, cu un exemplu.
daca a[i][j]>max atunci max<-a[i][j]


Fie un coș cu a[j] mere. În coș pot intra maxim 10 mere, dar prin anumite metode s-au forțat 12 mere. Astfel, conform afirmației lui, cum 12 mere > 10 mere => 10 mere < -12 mere. (minus doișpe mere)

Dar stai nene, cum adică -12 mere? Pleacă de aici, vrei să-mi furi banii!


"<-" In contextul dat este un operator de atribuire. La fel cum este in pascal ":=".
Confunzi notiunile, sau nu le pricepi.

Edited by Cy_Cristian, 25 February 2013 - 18:32.


Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

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