PDA

View Full Version : [c] ragazzi potete vedere se le ho implementate bene queste due funzioni ??


cimmiv
03-02-2014, 15:49
Funzione 1
/* Sviluppare una function C che, dati come parametri di input un array 2D di int, il numero delle righe e il numero delle colonne, determina e restituisce come parametro di output il massimo tra le somme degli elementi di ogni riga.*/

int MaxRig(int vet[][], int c, int r)
{
int max, sum;
int i, j;

for(i = 0, max = 0; i < c; i++)
max += vet[0][i];

for (i = 1, sum = 0; i < r; i++)
{
for(j = 0; j < c; j++)
sum += vet[i][j];

if(sum > max)
max = sum;
}

return max;
}


/*
Sviluppare una function C che, dati come parametri di input un array 2D di double, il numero delle righe e il numero delle colonne, determina e restituisce come parametro di output il massimo tra le somme degli elementi di ogni colonna.*/

double MaxCol(double vet[][], int c, int r)
{
double max, sum;
int i, j;

for(i = 0, max = 0; i < r; i++)
max += vet[0][i];

for (i = 1, sum = 0; i < c; i++)
{
for(j = 0; j < r; j++)
sum += vet[i][j];

if(sum > max)
max = sum;
}

return max;
}

airon
03-02-2014, 16:01
Indenta il codice per favore :)

cimmiv
03-02-2014, 16:07
La traccia chiedeva solo l'implementazione delle funzioni non ho scritto il codice ma solo la funzione

sharkkk
03-02-2014, 19:04
La traccia chiedeva solo l'implementazione delle funzioni non ho scritto il codice ma solo la funzione


ti hanno chiesto di indentare il codice perche cosi è molto poco leggibile
scrivi il tuo codice tra i tag [CODE]

Codice{
Indentato
}

L'indentatura è una delle basi della programmazione, quindi immagino che la conosci già, altrimenti cerca su google.

p.s. Per codice non si intende il sorgente..un frammento di codice potrebbe essere anche questo

...
printf("Edita il tuo codice come suggerito se vuoi un aiuto");
...

:D

bancodeipugni
03-02-2014, 19:48
dovrebbe andare bene solo non ho capito il motivo di questa inizializzazione

for(i = 0, max = 0; i < c; i++)
max += vet[0][i];

max una volta inizializzato a 0 lo trovi anche se escludi la somma riga 0 di cui sopra

poi nel secondo chiede il massimo delle somme di colonna, quindi dovresti perlomeno invertire gli indici: cosi' l'hai scritto uguale all'altro

Oceans11
03-02-2014, 21:59
dovrebbe andare bene solo non ho capito il motivo di questa inizializzazione

for(i = 0, max = 0; i < c; i++)
max += vet[0][i];

max una volta inizializzato a 0 lo trovi anche se escludi la somma riga 0 di cui sopra

No, se i numeri sono tutti negativi.

bancodeipugni
03-02-2014, 22:15
vero ;)

basta inizializzare max a -32767 ;)

Oceans11
04-02-2014, 11:40
vero ;)

basta inizializzare max a -32767 ;)

potrebbe, ma sicuramente questa inizializzazione dipende dalla piattaforma (larghezza del bus + compilatore).
Ad esempio, sul mio sistema, un signed int è definito così:

# define INT_MIN (-INT_MAX - 1)
# define INT_MAX 2147483647


A mio parere ha fatto bene ad inizializzare max in quel modo.

ps: non ne sono sicuro, ma potrebbe essere che il valore minimo nel tuo caso sia -32768. Curiosità, su quale macchina e con quale compilatore hai gli int a 16 bit?

lorenzo001
04-02-2014, 12:33
basta inizializzare max a -32767 ;)

A 16 bit comunque è -32768 ... e dubito tu lavori con un sistema i cui int siano a 16 bit.

cimmiv
04-02-2014, 14:48
poi nel secondo chiede il massimo delle somme di colonna, quindi dovresti perlomeno invertire gli indici: cosi' l'hai scritto uguale all'altro

anche per il secondo sum devo invertire gli indici ? ho modificato cosi il codice !


int MaxRig(int vet[][], int c, int r)
{
int max, sum;
int i, j;

for(i = 0, max = 0; i < c; i++)
max += vet[i][0];

for (i = 1, sum = 0; i < r; i++)
{
for(j = 0; j < c; j++)
sum += vet[i][j];

if(sum > max)
max = sum;
}

return max;
}





double MaxCol(double vet[][], int c, int r)
{
double max, sum;
int i, j;

for(i = 0, max = 0; i < r; i++)
max += vet[0][i];

for (i = 1, sum = 0; i < c; i++)
{
for(j = 0; j < r; j++)
sum += vet[j][i];

if(sum > max)
max = sum;
}

return max;
}

bancodeipugni
04-02-2014, 21:30
nel borlandc erano a 16 bit ma chiaramente mi aspettavo interventi come quelli sopra sulla cifra :D

in base a dove vuoi usare il prg regolati di conseguenza, ma sinceramente in un esercizio didattico pensavo andasse bene ancora l'equazione interi a 2 byte char a 1 ecc

no gli indici vanno invertiti nel secondo perchè di diverso a parte il float chiede le colonne

ah anche nel secondo va inizializzato max al min ;)