Sapreste aiutarmi con questo programma?
Si dichiari la matrice quadrata di ordine N , essendo N una costante il cui valore è 6. Procedendo per righe ed utilizzando il costrutto if-else-if, si inizializzino le componenti della matrice :
mat [j] = $ (i+j)/(2i+1)$ se i >j
$ (j-2i)/(3j-1)$ se i=j
$ ( ((i+j)*(i+j))/(i-j) ) +1 $ se i
Si calcoli poi il valore massimo il valore minimo rispettivamente degli elementi di 1D e di 2D, intendendo con 1d e 2d la prima e la seconda diagonale. Dopo aver ordinato gli elementi 1d e 2d in senso crescente e in senso decrescente, con un costrutto a selezione singola, verificare che il valore dell'ultima componente di 1d è max e che il valore dell'ultima componente di 2d è min. Documentare l'esito con un messaggio sull scherzo.
vi ringrazio.....potreste suggerirmi i passaggi?
mat [j] = $ (i+j)/(2i+1)$ se i >j
$ (j-2i)/(3j-1)$ se i=j
$ ( ((i+j)*(i+j))/(i-j) ) +1 $ se i
Si calcoli poi il valore massimo il valore minimo rispettivamente degli elementi di 1D e di 2D, intendendo con 1d e 2d la prima e la seconda diagonale. Dopo aver ordinato gli elementi 1d e 2d in senso crescente e in senso decrescente, con un costrutto a selezione singola, verificare che il valore dell'ultima componente di 1d è max e che il valore dell'ultima componente di 2d è min. Documentare l'esito con un messaggio sull scherzo.
vi ringrazio.....potreste suggerirmi i passaggi?

Risposte
Dov'é che hai dubbi? Non mi sembra che la prima parte possa creare dei problemi....
In quale linguaggio lo devi scrivere?
In quale linguaggio lo devi scrivere?
"vict85":
Dov'é che hai dubbi? Non mi sembra che la prima parte possa creare dei problemi....
In quale linguaggio lo devi scrivere?
il linguaggio è il C++. Il mio problema sorge a partire dalla seconda parte, con le rispettive diagonali e con la determinazione del max e min.....relativi al passaggio finale da documentare. sapresti aiutarmi? tra breve avrò esame e malgrado abbia studiato dagli appunti e chiesto al docente...ancora non riesco bene con questo tipo di esercizio:(
Puoi usare questo ciclo per rappresentare la diagonale 1
prova tu ad estendere il codice per la $2^a$ diagonale
int i; int j; for(i=0,j=0;i<6,j<6;i++,j++) { printf("%d %d",i,j); }
prova tu ad estendere il codice per la $2^a$ diagonale
"Tony125":
Puoi usare questo ciclo per rappresentare la diagonale 1
int i; int j; for(i=0,j=0;i<6,j<6;i++,j++) { printf("%d %d",i,j); }
prova tu ad estendere il codice per la $2^a$ diagonale
proverò subito..... grazie mille
define N 4
#include
int main (void)
{
/* sezione dichiarativa....................................*/
int i , j ;
double mat[N][N] , min , max ;
/* si inizializza la matrice da tastiera per righe........*/
printf ( " Esecuzione \n" ) ;
printf ( " lettura matrice per righe \n" ) ;
for (i=0 ; i<=N-1 ; i++) {
for (j=0 ; j<=N-1 ; j++){
if (i > j) {
mat [j] = (double)(i+j)/(2*i+1) ;
}
else if (i=j) {
mat [j] = (double)( j -2*i)/(3*j -1) ;
}
else ( i
mat [j] = (double) (i+j)*(i+j)/(i-j) + 1 ;
}
printf ( "digita mat[%d][%d] " , i , j) ;
scanf ("%d", &mat [j]) ;
}
}
ho bisogno ancora d'aiuto. commetto errori e cosa più grave non so riconoscerli.
Finora quel che ho scritto è quanto ho riportato di sopra. Per favore, potreste aiutarmi? è davvero fondamentale e urgente capire nel più breve tempo possibile perchè ho verifica e malgrado mi sia applicato con tutte le mie forze durante questi mesi, ho capito di non aver raggiunto un buon livello di preparazione.
so che è tanto chiedervi ma se passo passo poteste voi illustrarmi anche la seconda parte.....ve ne sarei immensamente grato. Non vorrei approfittarmente, stiate pur certo che per me mi sto applicando e nel mentre documentando su quanto possa essermi di giovamento per l'apprendimento di nuove "funzioni" risolutive....grazie, alex
bad.alex
#include
int main (void)
{
/* sezione dichiarativa....................................*/
int i , j ;
double mat[N][N] , min , max ;
/* si inizializza la matrice da tastiera per righe........*/
printf ( " Esecuzione \n" ) ;
printf ( " lettura matrice per righe \n" ) ;
for (i=0 ; i<=N-1 ; i++) {
for (j=0 ; j<=N-1 ; j++){
if (i > j) {
mat [j] = (double)(i+j)/(2*i+1) ;
}
else if (i=j) {
mat [j] = (double)( j -2*i)/(3*j -1) ;
}
else ( i
}
printf ( "digita mat[%d][%d] " , i , j) ;
scanf ("%d", &mat [j]) ;
}
}
ho bisogno ancora d'aiuto. commetto errori e cosa più grave non so riconoscerli.
Finora quel che ho scritto è quanto ho riportato di sopra. Per favore, potreste aiutarmi? è davvero fondamentale e urgente capire nel più breve tempo possibile perchè ho verifica e malgrado mi sia applicato con tutte le mie forze durante questi mesi, ho capito di non aver raggiunto un buon livello di preparazione.
so che è tanto chiedervi ma se passo passo poteste voi illustrarmi anche la seconda parte.....ve ne sarei immensamente grato. Non vorrei approfittarmente, stiate pur certo che per me mi sto applicando e nel mentre documentando su quanto possa essermi di giovamento per l'apprendimento di nuove "funzioni" risolutive....grazie, alex
bad.alex
ancora non riesco a svolgere il programma. A partire dal valore max e il valore min degli elementi della diagonale...come posso fare? dovrebbero essere trattati come vettori eppure hanno un doppio for e non essendo della matrice intera ma soltanto della diagonale....ahimè.....per favore...anche una bozza...una spiegazione ancora più semplice apportando esempio se fosse possibile....vi ringrazio immensamente....alex disperato!!!
#include <iostream> #include <cstdlib> #define N 6
Stai usando C++ giusto? Allora usa le librerie C++
Metti sempre in alto le librerie.
int main () { int i , j; double mat[N][N], min_1, min_2, max_1, max_2; std::cout<<"Esecuzione"<<std::endl; std::cout<<"lettura matrice per righe<<std::endl; for (i=0; i<N; ++i) { for (j=0; j<N ; ++j) { if (i > j) mat[i][j] = (double)(i+j)/(2*i+1); else if (i=j) mat[i][j] = (double)( j -2*i)/(3*j -1); else mat[i][j] = (double)(i+j)*(i+j)/(i-j) + 1; } } // Se non vuoi ordinare c'é questo... min_1 = 10000; max_1 = -10000; for (i=0; i<N; ++i) { if(mat[i][i] < min_1) min_1 = mat[i][i]; if(mat[i][i] > max_1) max_1 = mat[i][i]; } min_2 = 10000; max_2 = -10000; for (i=0; i<N; ++i) { if(mat[i][N-i] < min_1) min_1 = mat[i][N-i]; if(mat[i][N-i] > max_1) max_1 = mat[i][N-i]; } std::cout<<"Il minimo e il massimo della prima diagonale sono rispettivamente: "<<min_1<<max_1<<std::endl; std::cout<<"Il minimo e il massimo della seconda diagonale sono rispettivamente: "<<min_2<<max_2<<std::endl; return EXIT_SUCCESS; }
Non serve ordinare le diagonali per trovare massimo e minimo... L'ordinamento sarebbe stato necessario per la mediana ma non ritengo sia opportuno in questo caso...
Se preprio vuoi ordinare puoi usare un semplice array e una funzione fatta in casa oppure anche vector e la funzione sort di
"vict85":#include <iostream> #include <cstdlib> #define N 6
Stai usando C++ giusto? Allora usa le librerie C++
Metti sempre in alto le librerie.
int main () { int i , j; double mat[N][N], min_1, min_2, max_1, max_2; std::cout<<"Esecuzione"<<std::endl; std::cout<<"lettura matrice per righe<<std::endl; for (i=0; i<N; ++i) { for (j=0; j<N ; ++j) { if (i > j) mat[i][j] = (double)(i+j)/(2*i+1); else if (i=j) mat[i][j] = (double)( j -2*i)/(3*j -1); else mat[i][j] = (double)(i+j)*(i+j)/(i-j) + 1; } } // Se non vuoi ordinare c'é questo... min_1 = 10000; max_1 = -10000; for (i=0; i<N; ++i) { if(mat[i][i] < min_1) min_1 = mat[i][i]; if(mat[i][i] > max_1) max_1 = mat[i][i]; } min_2 = 10000; max_2 = -10000; for (i=0; i<N; ++i) { if(mat[i][N-i] < min_1) min_1 = mat[i][N-i]; if(mat[i][N-i] > max_1) max_1 = mat[i][N-i]; } std::cout<<"Il minimo e il massimo della prima diagonale sono rispettivamente: "<<min_1<<max_1<<std::endl; std::cout<<"Il minimo e il massimo della seconda diagonale sono rispettivamente: "<<min_2<<max_2<<std::endl; return EXIT_SUCCESS; }
Non serve ordinare le diagonali per trovare massimo e minimo... L'ordinamento sarebbe stato necessario per la mediana ma non ritengo sia opportuno in questo caso...
Se preprio vuoi ordinare puoi usare un semplice array e una funzione fatta in casa oppure anche vector e la funzione sort di...
ti ringrazio infinitamente. un'ultima cosa: la printf rispettivamente dove la colloco quando inizializzo la matrice con i valori nel costrutto if else if?
"bad.alex":
ancora non riesco a svolgere il programma. A partire dal valore max e il valore min degli elementi della diagonale...come posso fare? dovrebbero essere trattati come vettori eppure hanno un doppio for e non essendo della matrice intera ma soltanto della diagonale....ahimè.....per favore...anche una bozza...una spiegazione ancora più semplice apportando esempio se fosse possibile....vi ringrazio immensamente....alex disperato!!!
come faccio ad ordinare gli elementi nella prima diagonale in ordine crescente???
Ho difficoltà nella seconda parte del problema, nell'ordinamento degli elementi della diagonale in ordine crescente. Necessito del vostro aiuto....estremo!!!!
vi ringrazio, alex
vi ringrazio, alex
"bad.alex":
Si dichiari la matrice quadrata di ordine N , essendo N una costante il cui valore è 6. Procedendo per righe ed utilizzando il costrutto if-else-if, si inizializzino le componenti della matrice :
mat [j] = $ (i+j)/(2i+1)$ se i >j
$ (j-2i)/(3j-1)$ se i=j
$ ( ((i+j)*(i+j))/(i-j) ) +1 $ se i
Si calcoli poi il valore massimo il valore minimo rispettivamente degli elementi di 1D e di 2D, intendendo con 1d e 2d la prima e la seconda diagonale. Dopo aver ordinato gli elementi 1d e 2d in senso crescente e in senso decrescente, con un costrutto a selezione singola, verificare che il valore dell'ultima componente di 1d è max e che il valore dell'ultima componente di 2d è min. Documentare l'esito con un messaggio sull scherzo.
vi ringrazio.....potreste suggerirmi i passaggi?