PDA

Visualizza la versione completa : [C] Richiesta codice applicazione “elementare”


Cesar
21-05-2005, 00:17
Salve a tutti!
Ho assolutamente bisogno di una piccola “applicazione” scritta in C.
Per me e veramente importante, perciò vi ringrazio per la disponibilità!

--------------
Il testo del “esercizio” e il seguente:

Realizzare un programma in C che preveda l’inserimento e la visualizzazione delle temperature giornaliere di una settimana in una località, e le memorizzi in un opportuno array. Il programma deve calcolare e restituire a schermo:

* Le temperature massima e minima, indicando per ognuna l’indice corrispondente al giorno della settimana in cui sono state rilevate (1 per lunedì, 2 per martedì, ecc.);

* Il valore medio delle temperature settimanali;

* il numero di volte in cui è stato rilevato il valore massimo;

* Il numero di volte in cui è stato rilevato il valore minimo;

* il numero di valori maggiori o uguali alla media.

Infine si chiede di ordinare l’array delle temperature in ordine crescente, utilizzando un algoritmo a scelta, e di visualizzare a schermo l’array risultante dopo l’ordinamento.

-------------

Vorrei precisare che il sorgente deve essere più semplice possibile e commento più possibile!
Perciò, vi ringrazierei se fosse più “elementare” che potete.

Vi ringrazio per l’ennesima volta !!! :smack:

maiosyet_2
21-05-2005, 01:14
Puoi partire da questa base:



#include <stdio.h>

main() {

float temp[7], media;


printf ("Inserisci la temperatura di Lunedi\n");
scanf ("%f", &temp[0] );

printf ("Inserisci la temperatura di Martedi\n");
scanf ("%f", &temp[1] );

printf ("Inserisci la temperatura di Mercoledi\n");
scanf ("%f", &temp[2] );

printf ("Inserisci la temperatura di Giovedi\n");
scanf ("%f", &temp[3] );

printf ("Inserisci la temperatura di Venerdi\n");
scanf ("%f", &temp[4] );

printf ("Inserisci la temperatura di Sabato\n");
scanf ("%f", &temp[5] );

printf ("Inserisci la temperatura di Domenica\n");
scanf ("%f", &temp[6] );

printf("Report temperature:\n");

printf("Lun: %f\n", temp[0] );
printf("Mar: %f\n", temp[1] );
printf("Mer: %f\n", temp[2] );
printf("Gio: %f\n", temp[3] );
printf("Ven: %f\n", temp[4] );
printf("Sab: %f\n", temp[5] );
printf("Dom: %f\n", temp[6] );

media = (temp[0]+temp[1]+temp[2]+temp[3]+temp[4]+temp[5]+temp[6])/7;
printf ("La media e' stata di %f gradi\n", media);

return 0;
}


A quest'ora non mi viene in mente un buon modo per confrontare i valori alla ricerca del maggiore e del minore e farlo con una serie di if-else è troppo palloso :fagiano:

Quando hai trovato i due valori ci fai un paio di controlli e lo finisci in un attimo.

maiosyet_2
21-05-2005, 01:21
Ah, questo schifo:



printf("Lun: %f\n", temp[0] );
printf("Mar: %f\n", temp[1] );
printf("Mer: %f\n", temp[2] );
printf("Gio: %f\n", temp[3] );
printf("Ven: %f\n", temp[4] );
printf("Sab: %f\n", temp[5] );
printf("Dom: %f\n", temp[6] );


Forse era più bello messo così:



for (i=0; i<6; i++)
{
printf("%f\n", temp[i] );
}


Solo che non ti vien scritto prima il giorno della settimana... boh, fai come vuoi :fagiano:

Cesar
21-05-2005, 01:28
Originariamente inviato da maiosyet_2


Quando hai trovato i due valori ci fai un paio di controlli e lo finisci in un attimo.

Per me il C e arabo !! :D

caccy87
21-05-2005, 12:33
Per cercare la temp minima e massima della settimana fai cosi`:

min=99999;
max=0;
for (i=0;i<DIM;i++)
{
if (temp[i]<min)
{
min=temp[i];
}
if (temp[i]>max)
{
max=temp[i];
}

ora ti spiego come funziona.
Nel ciclo for usi una variabile i come contatore e dim e` una costante (#define DIM 7 all` inizio el prgoramma dopo gli include) che ha come numero i giorni della settimana.
Nel ciclo for confrotni la temperatura di ogni giorno, individuando la minima e la massima.Se vuoi sapere a che guorno corrispondono ti salvi la posizione dove i minimo e` e stampi il nome del giorno(contenuto in un altro array) utilizzando come indice la variabile.
es:

min=99999;
max=0;
for (i=0;i<DIM;i++)
{
if (temp[i]<min)
{
min=temp[i];
k=i;
}
if (temp[i]>max)
{
max=temp[i];
p=i;
}
printf ("la temperatura minima della settimana si e` verificata nel giorno %s", giorni[k]);
printf ("La temp. massima della sett. si e` verificata nel giorno %s", giorni[p]);

Spero di essermi spiegato in modo semi comprensibile, cmq se e` un compito per scuola e` meglio che ti fai la tua bozza da solo la prox volta, senno` non impari piu`. :D

Fammi sapere se hai dei problemi, ciaooooo

caccy87
21-05-2005, 12:40
for (i=0; i<6; i++)
{
printf("%f\n", temp[i] );
}


Solo che non ti vien scritto prima il giorno della settimana... boh, fai come vuoi :fagiano:

vero, ma se lui stampasse nel for cosi:


for (i=0; i<6; i++)
{
printf ("%s:", giorni[i]);
printf("%f\n", temp[i] );
}


si sarebbe risolto il problema.
Giorni[i] e` un array che contiene i giorni della settimana, la stampa verrebbe cosi`:

lundei`: 20
martedi`: 15..............

e cosi` via,

nel codice di prima che ho postato, dove trova il max e il min aggiungi per il min:

l++;

per il max:

d++;

in modo da trovare anche quante volte si trova la temperatura uguale nella settimana, capito?

Se poi il tuo prof vuole vedere tutti i gg in cui si e` verificata quella temperatura dovrsti cercare un modo furbo per salvare l`indice dei fari gg. Se te lo chiedera` ci pensero`, ho un` idea in mente, ma magari esistono modi meno incasinati....
fammi sapere
ciao!!!!

Cesar
22-05-2005, 04:06
Scusate se non mi sono fatto più vivo !!:cry:


Allora, ora che mi ricordo si deve usare un algoritmo tipo Simple short o double short (o roba simile :fagiano: ).

Per il resto non so che dire… il testo completo e quello che ho già scritto… :stordita:

Cesar
24-05-2005, 13:29
up :cry:

byaur
24-05-2005, 20:25
Originariamente inviato da Cesar
Scusate se non mi sono fatto più vivo !!:cry:


Allora, ora che mi ricordo si deve usare un algoritmo tipo Simple short o double short (o roba simile :fagiano: ).

Per il resto non so che dire… il testo completo e quello che ho già scritto… :stordita:
algoritmi di ordinamento tipo simple short o double short non esistono...
forse era bubble sort, insertion sort, quick sort, merge sort...
ce ne sono altrettanti però intanto è un'indizio...

ma l'ordinamento non lo dovevi fare a piacere... :D

:ciauz:

Cesar
25-05-2005, 16:20
Originariamente inviato da byaur
algoritmi di ordinamento tipo simple short o double short non esistono...
forse era bubble sort, insertion sort, quick sort, merge sort...
ce ne sono altrettanti però intanto è un'indizio...


:ciauz:

sisisi! bubble sort ! :D




ma l'ordinamento non lo dovevi fare a piacere... :D

già... mi sono spiegato male io.. avevo dimenticato di specificare che era a scelta tra questi due! :stordita:

Loading