Passa al tema normale
Discussioni su argomenti di Informatica

Regole del forum

Consulta il nostro regolamento e la guida per scrivere le formule
Rispondi al messaggio

[C] Programma norma a infinito.

09/05/2018, 11:11

Buongiorno, sto creando un programma che data una matrice in input ne calcoli la norma a infinito.
Vi posto il mio programma ma penso che ci sia qualcosa che non va con la funzione...
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define maxrighe 100
#define maxcolonne 100

void normaainfinito (int a[][], int r, int c) {
int i, j;
double max = 0.0;

for (i=0; i<r; i++) {
double sum = 0.0;
for (j=0; j<c; j++){
sum = sum + fabs(a[i][j]);
}
if (sum > max ) {
max = sum;
}
}
printf ("La norma a infinito e' %f\n", max);
}



int main () {
int matrice[maxrighe][maxcolonne];
int i,j;
int righe;
int colonne;
void normaainfinito (int a[][], int r, int c);



printf ("Inserisci il numero di righe!\n");
scanf ("%i", &righe);
printf ("Inserisci il numero di colonne!\n");
scanf ("%i", &colonne);

if (righe < 0 || colonne < 0) {
printf ("Errore: Inserire numeri positivi\n");
}

else {
printf ("Inserire gli elementi della matrice\n");

for (i=0; i<righe; i++) {
for (j=0; j<colonne; j++) {
scanf ("%i", &matrice[i][j]);
}
}

printf ("La matrice inserita e' : \n");
for (i=0; i<righe; i++) {
for (j=0; j<colonne; j++) {
printf ("%2i ", matrice[i][j]);
}
printf ("\n");
}


normaainfinito(matrice, righe, colonne);
}

return 0;
}

Re: [C] Programma norma a infinito.

09/05/2018, 13:33

Alcune osservazioni:

- per postare il codice qui sul forum esiste la funzionalità Code;
- scrivi codice indentato, risulterà più chiaro e leggibile sia a te che agli altri;
- cosa rappresenta la seguente riga di codice nel main?
Codice:
void normaainfinito (int a[][], int r, int c);

- una volta che controlli che i valori di righe e colonne inseriti siano positivi, tanto vale anche controllare che non siano maggiori di maxrighe e maxcolonne rispettivamente.

Vi posto il mio programma ma penso che ci sia qualcosa che non va con la funzione...


Magari potresti anche spiegare quale problema hai avuto... il codice non compila? il codice compila, ma il risultato non è quello che ti aspettavi?
In questo caso presumo che il problema sia che il codice non compila. Il motivo è che devi specificare le dimensioni della matrice a (argomento della funzione normaainfinito) che dovranno essere maxrighe e maxcolonne. In realtà basterebbe solo la seconda dimensione della matrice (ossia il numero di colonne).

Re: [C] Programma norma a infinito.

09/05/2018, 14:17

Allora il programma mi dava errore perché come hai detto tu non specificavo le dimensioni della matrice a..ho corretto scrivendo a[100][100]

Re: [C] Programma norma a infinito.

09/05/2018, 15:24

Con programma in questo contesto ci si riferisce di solito all'eseguibile creato a partire dal codice e non all'IDE.
Quindi dire "il programma mi dava errore", quando invece è il compilatore a segnalare un errore nel codice, può risultare ambiguo.
Inoltre ti può essere utile sapere che il compilatore non si limita a dire c'è un errore, ma specifica anche le righe di codice incriminate e fornisce una breve descrizione dell'errore.

Una curiosità, se hai definito maxrighe e maxcolonne perchè poi scrivi a[100][100] ?!
Rispondi al messaggio


Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000— Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.