Esercizio
Dati due vettori A e B di 20 numeri interi,scrivere la sequenza C che calcoli il massimo per ogni coppia A,B e ne visualizzi il valore se positivo.
Non riesco a scrivere la condizione,sreste illuminarmi?
Non riesco a scrivere la condizione,sreste illuminarmi?
Risposte
Se ho ben capito, bisogna confrontare ogni coppia $i$ di elementi di A e B.
Cioè dire se $A_i>B_i$ $AA i$ e se $Max(A_i,B_i)>0$ stampare questo numero.
Io risolverei così:
In questo modo, alla fine del processo hai memorizzato nel vettore c tutti i massimi e avrai stampato a video tutti i massimi positivi.
Cioè dire se $A_i>B_i$ $AA i$ e se $Max(A_i,B_i)>0$ stampare questo numero.
Io risolverei così:
for (i=0;i<=19;i++) { if (a[i]>b[i]) c[i]=a[i]; else c[i]=b[i]; if (c[i]>0) printf("%f", c[i]); }
In questo modo, alla fine del processo hai memorizzato nel vettore c tutti i massimi e avrai stampato a video tutti i massimi positivi.
Se devo scrivere una sequenza che dati 2 vettori di 10 numeri float calcoli la media per ogni coppia A,B e visualizzi la media massima?
max=0;
for(i=0;i<10;i++)
media=(A+B)/2;
{
if media>max
max=media;
printf ("%f",max);
}
max=0;
for(i=0;i<10;i++)
media=(A+B)/2;
{
if media>max
max=media;
printf ("%f",max);
}
"ENEA84":
Se devo scrivere una sequenza che dati 2 vettori di 10 numeri float calcoli la media per ogni coppia A,B e visualizzi la media massima?
max=0;
for(i=0;i<10;i++)
media=(A+B)/2;
{
if media>max
max=media;
printf ("%f",max);
}
max=0; for(i=0;i<10;i++) { media=(A[i]+B[i])/2; if media>max max=media; } printf ("%f",max);
Con il printf fuori e una graffa prima..
La parte relativa alla media è corretta, il resto è sbagliato.
Trascurando ";" e le parentesi mancanti:
Bisogna invertire il segno.
Inoltre, la printf deve stare al di fuori del ciclo for.
Trascurando ";" e le parentesi mancanti:
if (media<max) max=media;
Bisogna invertire il segno.
Inoltre, la printf deve stare al di fuori del ciclo for.
Se devo invertire l'elemento A con B se il prodotto è positivo?
"cheguevilla":
La parte relativa alla media è corretta, il resto è sbagliato.
Trascurando ";" e le parentesi mancanti:
if (media<max) max=media;
Bisogna invertire il segno.
Aveva scritto giusto, cioe': if (media>max).
@Enea84
Devi invertire gli elementi A con B se A*B >= 0 ?
Se e' cosi'...
int c; if (A[i]*B[i]>=0) { c=A[i]; A[i]=B[i]; B[i]=c; }
Una precisazione: l'inizializzazione max=0 è corretta solo se i dati sono tutti positivi. Se A e B sono di tipo FLOAT,
l'inizializzazione corretta è al più piccolo valore per un float, che, se non erro, è $-3.4*10^38$
l'inizializzazione corretta è al più piccolo valore per un float, che, se non erro, è $-3.4*10^38$
Si, mi sono incasinato.
"lorven":
Una precisazione: l'inizializzazione max=0 è corretta solo se i dati sono tutti positivi. Se A e B sono di tipo FLOAT,
l'inizializzazione corretta è al più piccolo valore per un float, che, se non erro, è $-3.4*10^38$
Oppure se non ricordi quel valore e vuoi concederti il lusso di un'operazione in più, inizializzi max con la prima media...