Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    dev c++; vedere se la matrice è diagonale;

    Ciao a tutti,
    stavo scrivendo un programma riguardo le matrici su dev c++; ho fatto l'inserimento e stampa a video della matrice, vedere se è quadrata, ora non riesco a capire come poter scrivere se la matrice è diagonale (cioè quando gli elementi sulla diagonale sono pari a uno e gli altri uguale a zero)

    il mio programma è così

    #include <iostream>
    #include <cstdlib>


    using namespace std;


    /* run this program using the console pauser or add your own getch, system("pause") or input loop */

    int main(int argc, char** argv) {


    const int MAXR=40;
    const int MAXC=40;


    double matrice[MAXR][MAXC];
    int r;
    int c;
    int somma;
    int diagonale;


    cout << "matrice " << endl;


    cout << "inserire il numero delle righe " << endl;
    cin >> r;

    cout << "inserire il numero delle colonne" << endl;
    cin >> c;

    //ingresso della matrice

    for (int i=0;i<r;i++)
    for (int j=0; j<c; j++) {

    cout << "inserire l'elemento di posizione: [" << i << "][" << j << "]" << endl;
    cin >> matrice[i][j];
    }




    cout << endl;
    cout << endl;


    cout << "STAMPO LA MATRICE" << endl;
    for (int i=0;i<r;i++){
    for (int j=0; j<c; j++)


    cout << matrice[i][j] << ' ' ;
    cout << endl;
    }


    cout << endl;
    cout << endl;




    if (c==r){

    cout << "LA MATRICE E' QUADRATA!" << endl;

    }
    else {
    cout << "la matrice non e' quadrata!!" << endl;
    }

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da breathof Visualizza il messaggio
    (cioè quando gli elementi sulla diagonale sono pari a uno e gli altri uguale a zero)
    La definizione di diagonale è molto meno restrittiva, quella è un'identità.
    Comunque in una matrice identità:
    codice:
               /
               | 1 se i=j
    M[i, j] = <
               | 0 altrimenti
               \
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    non ho capito, in che senso è un identità? come faccio a scrivere se ogni elemento della matrice è uguale a zero, e se gli elementi sulla diagonale sono uno?

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    https://it.wikipedia.org/wiki/Matrice_diagonale
    https://it.wikipedia.org/wiki/Matrice_identit%C3%A0
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    codice:
               /
               | 1 se i=j
    M[i, j] = <
               | 0 altrimenti
               \
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Ah giusto, allora intendevo la matrice identità, e come faccio a scriverlo in codice c++?

  6. #6
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Due loop innestati su i e j, quando i==j in M[i][j] ci deve essere 1, quando i!=j in M[i][j] ci deve essere 0. Ovvero quello che ho scritto i 2 post precedenti.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quote Originariamente inviata da breathof Visualizza il messaggio
    Ah giusto, allora intendevo la matrice identità, e come faccio a scriverlo in codice c++?
    Non chiedere che ti venga scritto il codice, provaci tu, sono poche righe e i suggerimenti li hai avuti.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    ci ho provato, utilizzando il ciclo while e quindi la variabile booleana, mi potete dire se ho fatto bene? perchè mi esce sempre uno, anche quando è falso.



    bool diag;
    diag=true;
    cout << "diagonale " ;
    int j=0;
    int i=0;


    while (i<r && diag) {

    while (j<r && diag) {
    if (i==j){
    if (M[i][j]!=1){
    diag=false;
    }

    } else if (M[i][j]!=0){
    diag=false;
    }
    j++;
    }
    i++;
    }
    cout << "risultato : " <<diag<< endl;

  9. #9
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da breathof Visualizza il messaggio
    ci ho provato, utilizzando il ciclo while e quindi la variabile booleana, mi potete dire se ho fatto bene? perchè mi esce sempre uno, anche quando è falso.



    bool diag;
    diag=true;
    cout << "diagonale " ;
    int j=0;
    int i=0;


    while (i<r && diag) {

    while (j<r && diag) {
    if (i==j){
    if (M[i][j]!=1){
    diag=false;
    }

    } else if (M[i][j]!=0){
    diag=false;
    }
    j++;
    }
    i++;
    }
    cout << "risultato : " <<diag<< endl;
    Dopo la prima iterazione j sarà sempre uguale a r, quindi non entrerai mai nel ciclo interno
    P.s. usa i tag code
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  10. #10
    ti ringrazio tantissimo, non ho molta praticità, da un mesetto lo sto utilizzando, mi potresti dire dove correggere ??

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.