Newsgroup: it.comp.lang.c
Titolo: Aiuto

C'è qualcuno disposto ad aiutami per completare un esercizio di C?
Se si vi prego di scrivermi a: caioxy@yahoo.
Grazie in anticipo

 Grazie in anticipo
Quale? Cosa riguarda?
Cosa intendi per aiutare?
Perche' non chiedi direttamente una delle cose di cui hai bisogno?
Tommy

 
Devo fare un esercizio forse troppo difficile per un principiante anche 
se pieno di voglia di imparare :-)
Ho fatto parte del codice, ma non riesco a completarlo per cui cerco 
qualcuno che me lo completi :-).....se possibile.
Posso anche metterlo nel NG ma non vorrei abusare.
Fammi sapere

 Posso anche metterlo nel NG ma non vorrei abusare.
Questa poi ...
Ciao Max
-- 
+-----------------------------------------------------------+
| Secondo alcuni autorevoli testi di tecnica Aeronautica,   |
| il calabrone non può volare, a causa della forma e del    |
| peso del proprio corpo in rapporto alla superficie alare. |
| Ma il calabrone non lo sa e perciò continua a volare.     |
|					     Igor Sikorsky  |
+-----------------------------------------------------------+

 Posso anche metterlo nel NG ma non vorrei abusare.
No, ma almeno dire di che cosa si tratta..... sarebbe furbo!
Tommy

Dato il seguente Codice "Consumo Benzina"
===========================================================================
/* Consumo Benzina */
#include <stdio.h>
 
void main () {
 
	int nI; //definisco la variabile
	int Km;
	int Litri;
	float PrezzoAlLitro;
	nI=1; //inizializzo le variabili
 
	while (nI != 0) {
		printf("\n\n\n\n");
 
printf("+--------------------------------------------------------------------+\n");
		printf("| 0. Per uscire dal programma 
        |\n");
		printf("| 1. Dati Km e Litri calcola i Km con 1 litro 
        |\n");
		printf("| 2. Dati Km e Litri calcola il consumo litri/100Km in 
percentuale   |\n");
		printf("| 3. Dati Prezzo al litro, Km e consumo medio, calcola il 
costo      |\n");
 
printf("+--------------------------------------------------------------------+\n"); 
 
		printf("\n\nPrego, fai la tua scelta: ");
		scanf ("%d", &nI);
		switch( nI ) //istruzione che valuta il valore di nI
		{
			case 0: //nel caso nI= 0 uscita dal programma
				break;
			case 1: //nel caso nI= 1 si calcolano i Km con 1 litro
				printf("\nInserire il numero di Km percorsi: ");
				scanf ("%d", &Km);
				printf("\nInserire il numero di Litri consumati: ");
				scanf ("%d", &Litri);
				printf ("\nRisutlato:\n\tL'automobile fa %f km con un litro\n", 
((float)Km / (float)Litri));
				break;
 
			case 2 : // nel caso nI = 2
				printf("\nInserire il numero di Km percorsi: ");
				scanf ("%d", &Km);
				printf("\nInserire il numero di Litri consumati: ");
				scanf ("%d", &Litri);
				printf ("\nRisutlato:\n\tL'automobile consuma %f litro per ogni 
100km\n", ((float)Litri / (float)Km) * 100);
				break;
			case 3 :
				printf("\nInserire il Prezzo per 1 litro di carburante in Euro: ");
				scanf ("%f", &PrezzoAlLitro);
				printf("\nInserire il numero di Km percorsi: ");
				scanf ("%d", &Km);
				printf("\nInserire il numero di Litri consumati: ");
				scanf ("%d", &Litri);
				printf ("\nRisutlato:\n\tL'automobile costa %f Euro per ogni km\n", 
((float)Litri / (float)Km) * PrezzoAlLitro);
				break;
			default : //in tutti gli altri casi esegui da qua
				printf ("Valore di nI non contemplato\n");
				break;
 
		}
	}
}
=================================================================================
ECCO IL PROBLEMA
Data la possibilità di fare ad esempio la scelta 1 dal menu, deve venir 
visualizzato un nuovo menu con altre scelte di calcoli possibili e, 
scegliendo una opzione verranno chiesti i dati per i calcoli..
Ad esempio:
Menu principale:
0.	Uscita dal programma
1.	Calcoli dei consumi
2.	Calcoli dei  costi
3.	Calcoli dei costi di gestione
Menu 1, calcolo dei consumi:
0.	Torna al menu principale
1.	calcola consumo medio
2.	calcola consumo per km
3.	calcola km con un litro.
Menu 2, calcolo dei  costi:
0.	Torna al menu principale
1.	calcola consto per km dati prezzo, litri, km percorsi
2.	 calcola costo del pieno dati prezzo km percorsi e consumo medio
E così via…
Suggerimenti:
Nello switch non fare i calcoli ma chiamare le funzioni che fanno i calcoli.
Per i sottomenu basta usare nI come prima.  Per il sottomenu 1 basta 
aggiungere 10 a nI, per il sottomenu 2 aggiungi 20, eccetera.
Esempio dello switch
0 esce
1 attiva sottomenu 1
2 attiva sottomenu 2
10 torna al menu principale
11 attiva funzione 1 del 1° menu
20 torna al menu principale
21 attiva funzione 1 del 2° menu
Io finora ho buttato giù la seguente bozza che devo completare
* E'meglio creare una una funzione tipo clrscr() (CHE NON E' COMPRESA 
NEL VSTUDIO) dentro ogni funzione chiamata dallo switch. Questa funzione 
fa il clear del video così si legge l'output.
Suggerisco di usare la funzione clrscr() dentro il ciclo while della main */
while (nI != 0)
  {
    // aggiungerei qui
       clrscr();
      printf("\n\n\n\n");
      printf("
+--------------------------------------------------------------------+\n");
      printf("| 0. Per uscire dal programma |\n");
      printf("| 1. Dati Km e Litri calcola i Km con 1 litro |\n");
      printf("| 2. Dati Km e Litri calcola il consumo litri/100Km in
percentuale   |\n");
      printf("| 3. Dati Prezzo al litro, Km e consumo medio, calcola il 
costo
     |\n");
      printf("
+--------------------------------------------------------------------+\n");
      printf("\n\nPrego, fai la tua scelta: ");
      scanf ("%d", &nI);
      switch ...
}
/* Scrivere per ogni case la sua procedurina sempre per
leggibilità Le variabili possono a questo punto essere viste solo dalle 
singole procedurine (non essere più globali) */
     switch( nI ) //istruzione che valuta il valore di nI
     {
                case 0: //nel caso nI= 0 uscita dal programma
			break;
                case 1:
                   execCase1Proc();
                break;
                case 2 :
                   execCase2Proc();
                break;
                case 3 :
                   execCase3Proc();
                break;
                default : //in tutti gli altri casi esegui da qua
             printf ("Valore di nI non contemplato\n");
                break;
             }
void execCase1Proc(void);
{
      int Km;
      int Litri;
      clrscr();
      printf("\nInserire il numero di Km percorsi: ");
      scanf ("%d", &Km);
      printf("\nInserire il numero di Litri consumati: ");
      scanf ("%d", &Litri);
      printf ("\nRisutlato:\n\tL'automobile fa %f km con un litro\n",
((float)Km / (float)Litri));
  }
/*idem per  per le altre funzioni
dopo avere scritto l'ultima printf di ogni procedurina inserire un
meccanisco che ferma l'esecuzione del programma per consentire 
all'operatore di vedere la risposta */
void execCase1Proc(void);
{
      int Km;
      int Litri;
     // variabile di appoggio
     char c;
      clrscr(); // fa il clear del video
       //  qui vanno le tue istruzioni
      printf("\nInserire il numero di Km percorsi: ");
      scanf ("%d", &Km);
      printf("\nInserire il numero di Litri consumati: ");
      scanf ("%d", &Litri);
      printf ("\nRisutlato:\n\tL'automobile fa %f km con un litro\n",
((float)Km / (float)Litri));
      // queste istruzioni fermano l'esecuzione fino a che non si digita 
// un carattere
     printf ("\npremi un carattere per continuare");
     c = getch();
   }
/*la stessa cosa la metterei nel default dello switch della main sennò 
non si capisce perchè il programma non fa nulla quando si sbaglia a 
digitare la scelta
con questo meccanismo di clear del video potrei anche scrivere 
sottomenu' in apposite procedure */

 aggiungere 10 a nI, per il sottomenu 2 aggiungi 20, eccetera.
 > /*idem per  per le altre funzioni
 > dopo avere scritto l'ultima printf di ogni procedurina inserire un
 > meccanisco che ferma l'esecuzione del programma per consentire
 > all'operatore di vedere la risposta */
non crederai mica che qualcuno ti finisca il codice del programma, vero?
al max qui ti si puo' dare una mano per cose specifiche che non capisci..
cerca di fare domande precise e non scrivere messaggi troppo lunghi..
ciao

 
Si sto cercando qualcuno disposto a competarmi il codice. Non lo volevo 
scrivere nel NG, ma cercavo qualcuno che mi contattasse in privato.
Grazie e Ciao