Dopo aver saputo che ad altri utenti interessano questi argomenti e sopratutto gli esercizi svolti, eccone un altro fresco fresco appena svolto
La soluzione l'ho svolta io, però questa volta dovrebbe essere giusta
Testo dell'esercizio
Si sviluppi un programma in linguaggio C che, ricevendo in ingresso una sequenza di lunghezza arbitraria di almeno due numeri interi (positivi o negativi) diversi da zero, terminata da uno zero, produca in uscita i primi due valori contigui nella sequenza (escluso l’ultimo zero) la cui somma ha valore assoluto minimo.
Ad esempio, ricevendo in ingresso la sequenza -7 2 -19 4 45 3 -4 9 3 0 il programma produce in uscita 3 -4
Ecco la mia soluzione:
- Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int *vett=NULL, i, sommamin=0, size=0, num, primo=0, secondo=0, somma=0;
printf("Inserisci una sequenza di numeri, i primi due devono essere diversi da zero, per terminare digita 0.\n");
do
{
printf("Inserisci il %d numero: ", size+1);
scanf("%d", &num);
if (num!=0)
{
size++;
vett=(int*)realloc(vett,(size)*(sizeof(int)));
vett[size-1]=num;
}
} while (size<2);
sommamin=vett[0]+vett[1];
primo=vett[0];
secondo=vett[1];
if (sommamin<0)
{
sommamin=sommamin*(-1);
}
do
{
printf("Inserisci il %d numero: ", size+1);
scanf("%d", &num);
size++;
vett=(int*)realloc(vett,(size)*(sizeof(int)));
vett[size-1]=num;
} while (num!=0);
for (i=2;i<size-2;i++)
{
somma=vett[i]+vett[i+1];
if (somma<0)
{
somma=somma*(-1);
}
if (somma<sommamin)
{
sommamin=somma;
primo = vett[i];
secondo = vett[i+1];
}
}
printf("\nLa somma con valore assoluto minimo vale: %d, ed è data dai numeri: %d e %d.", sommamin, primo, secondo);
return 0;
}
Solo due note sullo svolgimento: visto che non sappiamo quanti numeri saranno inseriti nel vettore, ho utilizzato la funzione realloc per riallocare dinamicamente la dimensione del vettore.
Ho utilizzato due cicli do-while per fare in modo che l'utente inserisca almeno due numeri diversi da zero. Forse qui si poteva risparmiare un ciclo ed un pezzo di codice mettendo tutto in un solo do-while, però mi è tornato più comodo utilizzare questo procedimento, così posso assegnare un valore alla somma minima da confrontare poi con le successive somme.
A presto!
Ciaoo

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)



