[C] Array 2D double

di il
6 risposte

[C] Array 2D double

Devo scrivere una function che ha in input un array 2D di double e in output il massimo tra le somme degli elementi di ogni colonna. Ora per una questione di semplicità, almeno per me, ho iniziato a scrivere la function considerando un array di int però ora sto trovando difficoltà nel passaggio a double.
Questa è la function con array int
int max_col_array2D (int a[][100], int n, int m)
{
    int i, j, max, s;
    max=0;
    s=0;
    for (j=0; j<n; j++)
    {
        for (i=0; i<m; i++)
            s = s + a[i][j];
        if (s > max)
            max = s;
        s = 0;
    }
    return max;
}
E questa dovrebbe essere la function con array double però poi quando la inserisco in un main non mi viene
double max_col_array2D (double a[][100], int n, int m)
{
    int i, j;
    double max=0.0, s=0.0;
    for (j=0; j<n; j++)
    {
        for (i=0; i<m; i++)
            s = s + a[i][j];
        if (s > max)
            max = s;
        s = 0.0;
    }
    return max;
}
Posto anche il main nel caso ci sia qualcosa di sbagliato proprio qui
int main()
{
    int i, j, n, m;
    double a[100][100], massimo;
    printf ("inserire il numero di righe (<=100): ");
    scanf ("%d", &n);
    printf ("inserire il numero di colonne (<=100): ");
    scanf ("%d", &m);
    printf ("inserire i valori dell'array: \n");
    for (i=0; i<n; i++)
        for (j=0; j<m; j++)
            scanf ("%f", &a[i][j]);
    massimo = max_col_array2D (a, n, m);
    printf ("l'array e': \n");
    visualizza_a2D (a, n, m);
    printf ("il massimo tra le somme degli elementi di ogni colonna e':\n %f", massimo);
    return 0;
}
void visualizza_a2D (double a[][100], int n, int m)
{
    int i, j;
    for (i=0; i<n; i++)
    {
        for (j=0; j<m; j++)
            printf ("%4f", a[i][j]);
        printf ("\n");
    }
}

6 Risposte

  • Re: [C] Array 2D double

    Nelle funzioni di calcolo del max hai scambiato i cicli i e j
  • Re: [C] Array 2D double

    Perchè devo calcolare il massimo delle colonne non delle righe.. oppure non c'entra questo?
  • Re: [C] Array 2D double

    Non c'entra
  • Re: [C] Array 2D double

    Ho cambiato ma non penso sia questo il problema. quando eseguo il programma inserisco i valori dell'array però quando me li stampa con la function visualizza mi escono tutti zeri
  • Re: [C] Array 2D double

    Nella scanf devi usare

    "%lf"

    E la funzione sarà
    
    	int i, j;
    	double max = 0.0, s;
    	for (j = 0; j<m; j++)
    	{
    		s = 0.0;
    
    		for (i = 0; i<n; i++)
    			s = s + a[i][j];
    
    		if (s > max)
    			max = s;
    	}
    	return max;
    
    Occhio a j<m e i<n
  • Re: [C] Array 2D double

    Ok così mi trovo grazie
Devi accedere o registrarti per scrivere nel forum
6 risposte