Accedi per seguire   
Seguaci 0
spiug

[c] Convertitore Miglia/km, Calcola Anno Bisestile ...

16 messaggi in questa discussione

Bene...da oggi in poi ogni tanto posterò i miei esercizi settimanali che mi affibbiano all'università...

con questo NON voglio dire che mi aspetto che me li facciate voi, ma che se ho problemi correggiate i miei errori :)

Io sono agli albori con questo linguaggio, perciò ogni tanto avrò bisogno di una manina.

Esercizio1:

Scrivere un programma che date una variabile miglia di tipo int e una variabile km di tipo double chieda all’utente di inserire un numero di miglia, memorizzi tale valore nella variabile miglia, converta le miglia in km, memorizzi il valore risultante nella variabile km e stampi il risultato. (Usare l’operatore di casting esplicito; si noti che 1 miglio corrisponde a 1.609 km).

Ecco come io l'ho tradotto in c:

#include <stdio.h>

int mg;
double km;

int main() {
printf ("Dammi le miglia\n");
scanf (" %d",&mg);
km=mg*1.609;
printf ("Le miglia che mi hai dato convertite in Kilometri sono: \n");
printf ("%f\n",km);
}

Ora mi chiedo...lo compilo e non ci sono errori...ma quando lo faccio partire una volta date le miglia esce subito...

sarà mica perchè terminano i comandi e quindi si chiude perchè non ha altro da fare (non consentendomi di veder il risultato)??

Se si come si fà ad ovviare a questo problema?? Metterlo in pausa??

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Esercizio 2:

Scrivere un programma che richieda in ingresso un numero intero maggiore di zero che corrisponde ad un anno (es. 2002) e determini se l’anno inserito corrisponde ad un anno bisestile. Si ricordi che un anno è bisestile se è divisibile per 4 ma non per 100, oppure è divisibile per 400. Per esempio, 1900 e 2010 non sono anni bisestili, mentre 1996 e 2000 lo sono. Il programma deve stampare “l’anno ... è bisestile” oppure “l’anno ... non è bisestile”.

Come l'ho svolto:

#include "stdio.h";

int anno;


int main() {

do
{printf ("Dammi l'anno da analizzare\n");
scanf (" %d",&anno);}
while (anno<0);

if (((anno % 4 == 0) && (anno % 100 != 0)) || (anno % 400 == 0))
{printf ("l'anno %d è bisestile\n",anno);}
else 
{printf ("l'anno %d NON è bisestile\n",anno);};	
}

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
sarà mica perchè terminano i comandi e quindi si chiude perchè non ha altro da fare (non consentendomi di veder il risultato)??

Se si come si fà ad ovviare a questo problema?? Metterlo in pausa??

Esatto :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Esercizio 3:

Scrivere un programma che richieda in ingresso tre numeri interi e ne determini il maggiore e il minore.

Come l'ho risolto:

#include <stdio.h>

int a,b,c;


int main() {

printf ("Dammi 3 numeri di seguito\n");
scanf (" %d",&a);
scanf (" %d",&b);
scanf (" %d",&c);


if (a>b)
{
 if (a>c)	
	printf ("il maggiore è il numero %d\n",a);
 else
	printf ("il maggiore è il numero %d\n",c);
 if (b>c)	
	printf ("il minore è il numero %d\n",c);
 else
	printf ("il minore è il numero %d\n",b);
}
else
{
 if (b>c)
	printf ("il maggiore è il numero %d\n",b);
 else
	printf ("il maggiore è il numero %d\n",c);
 if (a>c)	
	printf ("il minore è il numero %d\n",c);
 else
	printf ("il minore è il numero %d\n",a);
}
}


...ma mi dà errore verso il centro prima dell'ELSE....ci saranno problemi di parentesi?? :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Esatto :)

E quindi...come faccio a vedere cosa stampa?!

Lo faccio looppare a vuoto??

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Accidenti quante parantesi hai messo....comunque così funziona senza errori di sintassi....

#include <stdio.h>

int a,b,c;


int main() {


scanf (" %d",&a);
scanf (" %d",&b);
scanf (" %d",&c);


if (a>b)
{
 if (a>c)	
	printf ("il maggiore è il numero %d",a);
 else
	printf ("il maggiore è il numero %d",c);
 if (b>c)	
	printf ("il minore è il numero %d",c);
 else
	printf ("il minore è il numero %d",b);
}
else
{ 
 if (b>c)
	printf ("il maggiore è il numero %d",b);
 else
	printf ("il maggiore è il numero %d",c);
 if (a>c)	
	printf ("il minore è il numero %d",c);
 else
	printf ("il minore è il numero %d",a);
}
}

Il problema sta nel fatto che dopo il primo if hai due altri if nidificati che però devono stare all'interno della stessa parentesi....

Spero che hai capito....

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
E quindi...come faccio a vedere cosa stampa?!

Lo faccio looppare a vuoto??

Su alcuni ambienti di sviluppo come quello di Microsoft Visual Studio viene inserita automaticamente una riga "Press any key to continue..."

Se il tuo ambiente non lo fa....basta inserire una readln() per fare in modo che il programma si fermi finchè non premi un tasto.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ops....mi sono confuso con il pascal....

Accidenti....

Beh comunque potresti fare l'equivalente scanf.....utilizzata allo stesso modo!

Premendo invio il programma dovrebbe uscire!

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

E quindi...come faccio a vedere cosa stampa?!

Lo faccio looppare a vuoto??

Ti basta lasciare il programma in attesa di un input cosi fino a quando non viene premuto un tasto non esegue altre istruzioni e non termina. Ecco come puoi risolvere:

char pausa;
pausa = getchar();

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Oppure lo esegui dal suo ambiente naturale... Essendo un programma di console, lo esegui da console :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Oppure lo esegui dal suo ambiente naturale... Essendo un programma di console, lo esegui da console :)

Certo...volevo farlo compilare ed eseguire direttamente con Linux, ma non credo che la versione live di Knoppix contenga il compilatore...bho, vedrò :P

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

OK...GRAZIE a tutti...esercizi corretti, provati e...CONSEGNATI!!

Presto vi posterò anche l'esercitazione N°2...spero che anche voi possiate divertirvi con me ;-) :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Certo...volevo farlo compilare ed eseguire direttamente con Linux, ma non credo che la versione live di Knoppix contenga il compilatore...bho, vedrò :)

Beh, puoi eseguirlo in una finestra DOS ;-)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

ciao sono nuovo...mi sono appena iscrito perchè vi devo chiedere un enormee favore...mi è stato assegnato un esercizio da fare a casa ma nn riesco a risolverlo....se mi date una mano vi ringrazio di cuore...l'esercizio è il seguente: DATI AD ESEMPIO 100 NUMERI TROVARE IL NUMERO MAGGIORE IL NUMERO MINORE INSERITI E CALCOLARE LA MEDIA DEI NUMERI INSERITI..... :):P:P:wub::P

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

per steXxX86...carichi i valori in un vettore di 100 elementi...poi fai

double somma=0;

double media=0;

double max=-1000000.0;

double min=1000000.0;

for(i=0;i<100;i++)

{

somma=somma+vet;

if (vet>max) max=vet;

if (vet<min) min=vet;

}

media=somma/100; //cosi trovi la media

//e poi stampi i valori di max e min...sono arruginito con il c non mi ricordo la sintassi della printf eheh

ciao

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
per steXxX86...carichi i valori in un vettore di 100 elementi...poi fai

double somma=0;

double media=0;

double max=-1000000.0;

double min=1000000.0;

for(i=0;i<100;i++)

{

somma=somma+vet;

if (vet>max) max=vet;

if (vet<min) min=vet;

}

media=somma/100; //cosi trovi la media

//e poi stampi i valori di max e min...sono arruginito con il c non mi ricordo la sintassi della printf eheh

ciao

Questo se ha già a disposizione gli array (ovvero gli hai già studiati)...

Se bastano numeri interi allora al posto di duoble ovviamente puoi mettere INT.

Il programma fornito da Max è sostanzialmente corretto. ;-)

Per stamparli poi basta semplicemente scrivere:

printf ("Il minimo è %f\n",min);
printf ("Il massimo è %f\n",max);
printf ("La media è %f\n",media);

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per partecipare

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora
Accedi per seguire   
Seguaci 0