PDA

Visualizza la versione completa : [C++] max-min diagonali matrice quadrata help


rozzo21
17-10-2012, 19:32
Salve ragazzi,sono nuovo del forum e vi scrivo per un aiuto sulla scrittura di un programmino in c++.

in particolare devo fare in modo da assegnare una matrice quadrata,inserendo gli elementi della matrice in input,dopodichè devo fare in modo che in output mi produca il max e il min sia della diagonale principale che della diagonale secondaria . Potreste aiutarmi ? vi posto la prima parte dell'esercizio



#include <iostream>
#include <stdlib.h>

using namespace std;
int main() {
int n,mat[10][10],vet[10];


cout<<"\n Inserisci le dimensioni dell matrice:";
cin>>n;
while(n<1||n>10){
cout<<"\n Hai inserito valori errati...reinserisci i valori corretti:";
cout<<"\n Inserisci le dimensioni dell matrice:";
cin>>n;}

//Dichiaro la matrice
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<"Elemento di posto"<<i+1<<"-"<<j+1<<"=";
cin>>mat[i][j];}
cout<<endl<<endl;}

//Stampo a video la matrice
cout<<"\n La matrice inserita e':"<<endl;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<mat[i][j]<<" ";}
cout<<endl<<endl;}



Come devo continuare ? grazie anticipatamente

oregon
17-10-2012, 19:37
Prima di tutto dovresti postare il codice usando i tag CODE in modo da renderlo leggibile ed indicare nel titolo il linguaggio.

Per il problema, imposta un primo ciclo che scandisca tutti gli elementi della diagonale principale (che hai indici i,j uguali tra loro); per trovare il max e il min tra questi elementi basta conservare il max e il min in due variabili apposite e confrontarle con tutti gli elementi in questione ...

Lo stesso per la diagonale secondaria che avrà gli elementi con indici i,n-j-1

MItaly
17-10-2012, 19:39
Come da regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887), il codice va formattato nei tag
... (altrimenti perde l'indentazione), e il linguaggio di riferimento va indicato anche nel titolo (sotto forma di "tag").
Ora ho corretto io, in futuro ricordatene. :ciauz:

rozzo21
17-10-2012, 19:49
Scusatemi per gli errori commessi,ovviamente avrei dovuto leggere il regolamento prima di postare :dhò:

comunque oregon potresti farmi un esempio pratico ??

oregon
17-10-2012, 19:52
Originariamente inviato da rozzo21
comunque oregon potresti farmi un esempio pratico ??

Non ti ho fatto appositamente un esempio perché sarebbe bene che tu provassi a scrivere il codice in base ai suggerimenti.

rozzo21
17-10-2012, 19:56
lo immaginavo..

allora per "imposta un ciclo che scandisca tutti gli elementi della diagonale principale" cosa intendi ? cioè come faccio a farlo .. devo usare ciclo for e ciclo if ? non ci capisco quasi niente di programmazione..ho imparato da poco a far stampare in output una matrice con varie condizioni (chessò elementi minori di x,pari dispari etc) e a fare operazioni semplici come ad esempio trovare il max e il min dell'intera matrice,invertire le diagonali,fare la trasposta,eseguire la media di tutti gli elementi o delle righe pari/dispari,e altre cose così ma questo esercizio mi ha spiazzato
calcola anche questo :D

oregon
17-10-2012, 19:59
Originariamente inviato da rozzo21
allora per "imposta un ciclo che scandisca tutti gli elementi della diagonale principale" cosa intendi ?

Mi pare chiaro ... comunque il ciclo lo realizzi con un for dato che con la if non si fanno dei cicli (ciclo if è un concetto sbagliato ...).


non ci capisco quasi niente di programmazione..

Ma purtroppo qui non si fanno i compiti ...


trovare il max e il min dell'intera matrice.

Questo problema è simile ... parti da quel tipo di codice ...

rozzo21
17-10-2012, 20:13
Non si tratta di fare compiti.
Se non avessi alcun problema di certo non mi rivolgerei ad un forum pieno di "esperti".
ho sostenuto l'esame di informatica e mi è uscita questa cosa del max e del min,e non sapendola fare,nè tantomeno sapendo dove poter andare a vedere,mi è venuto in mente di scrivere qui.
per la cronaca il mio esame di informatica è un esame del caspio,sto ad ingegneria e saper programmare nella vita non mi servirà a nulla (spero dato che non sono capace),nè tantomeno ho intenzione nè di padroneggiare come un hacker la materia nè di imparare alla perfezione il linguaggio macchina.



Se vuoi aiutarmi il tuo aiuto è più che ben accetto,se non vuoi aiutarmi almeno non prendermi per i fondelli.

Comunque il codice per trovare il max e min dell'intera matrice che uso io è



//DETERMINo VALORE MAX E VALORE MIN E RISPETTIVE POSIZIONI (INDICI)
int max=0,min=0,rigamax=0,rigamin=0,colmax=0,colmin=0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if((i==0)||(j==0)){
max=mat[0][0];
min=mat[0][0];
}
if(max<mat[i][j]){
max=mat[i][j];
rigamax=i;
colmax=j;
}
if(min>mat[i][j]){
min=mat[i][j];
rigamin=i;
colmin=j;}
}
}
cout<<"\n Elemento max della matrice e':"<<max;
cout<<"\n Riga"<<rigamax+1<<"colonna"<<colmax+1;
cout<<"\n\nEleemnto min della matrice e':"<<min;
cout<<"\n Riga"<<rigamin+1<<"colonna"<<colmin+1;
cout<<endl<<endl;


ma non so come maneggiarlo

oregon
17-10-2012, 20:15
Originariamente inviato da rozzo21
Se vuoi aiutarmi il tuo aiuto è più che ben accetto,se non vuoi aiutarmi almeno non prendermi per i fondelli.


Qui non si usa prendere per i fondelli nessuno. Saluti

rozzo21
17-10-2012, 20:27
Come siamo permalosi.
Questi forum dovrebbero avere lo scopo di aiutare chi è meno pratico nel modo più congeniale.
Cioè se da ignorante mi vieni a chiedere l'applicazione pratica del teorema di betti e io ti rispondo F1xV2=F2xV1 tu capisci qualcosa ? oppure se mi chiedi cos'è un gradiente e ti rispondo è semplice è la derivata parziale rispetto a tutte le componenti... per dirtene un paio eh...

comunque se proprio ti pesa questa cosa aspetterò qualcuno a cui vada più a genio dare una mano,saluti

Loading