ciao a tutti amici !
avrei bisogno di voi,praticamente devo fare un proframma per la scuola e l'ho finito solo che un ciclo while non si ferma mai,con questo non intendo dire che va in loop ma proprio ricomincia sempre dall'inizio.
vi posto il codice (non badate al programma ma è una cretinata
)
codice:
int numPersone, temp, quanteCalorie = 0, da3a5 = 20, da6a8 = 30, da8a12 = 50, età=0; double FettaMax, Kg, caloriepanettone, caloriefettamax, grammi; bool inputOKkg, inputPersone, ok = true, piccolafetta = true, imputEtà, imputcalorie; #region Peso do//Ciclo con convalida per l'inserimento del peso del panettone (OK!) { Console.Write("Inserire il peso del panettone->"); inputOKkg = double.TryParse(Console.ReadLine(), out Kg); if ((!inputOKkg) || (Kg <= 0)) Console.WriteLine("Errore input, Riprova!"); caloriepanettone = (350 * Kg) / 0.100; Console.WriteLine("le calorie del panettone sono:" + caloriepanettone); } while ((Kg <= 0) || (!inputOKkg)); #endregion #region N°Persone do//Ciclo con convalida per l'inserimento del numero di persone (OK!) { Console.Write("Inserire numero persone->"); inputPersone = int.TryParse(Console.ReadLine(), out numPersone); if ((!inputPersone) || (numPersone <= 0)) Console.WriteLine("Errore input, Riprova!"); } while ((numPersone <= 0) || (!inputPersone)); FettaMax = Kg / numPersone; FettaMax = Math.Round((double)FettaMax, 3); caloriefettamax = (350 * FettaMax) / 0.100; Console.Write("La fetta massima è di: " + FettaMax + "kg" + " che corrisponde a " + caloriefettamax + "calorie"); #endregion #region Array /*dichiarazione array calorie e persone che verranno utilizzati successivamente*/ temp = Convert.ToInt32(caloriepanettone); int[] persone = new int[numPersone];//Dichiarazione array per l'inserimento dell'età delle persone(ho fatto un po di casino con le variabili tra numPersone, numeriPersone e persone; vedi se ti viene qualcosa in mente per farle piu chiare) int[] calorie = new int[temp]; #endregion #region //ciclo che fa in modo di capire se si tratta di un caso particola oppure no/* if (caloriefettamax <= 70 || caloriefettamax > 70 && caloriefettamax <= 105 || caloriefettamax > 105 && caloriefettamax <= 175) piccolafetta = true; else ok=true; #endregion #region ciclo per i casi normali while (ok=true) { /*ciclo per inserimento età e calcolo delle fette in base all'età e alle calorie sopra ai 12 anni*/ for (int numeriPersone = 0; numeriPersone < numPersone; numeriPersone++) { #region convalida /*convalida per l'inserimento dell'età */ do { Console.WriteLine("\n" + "Inserisci l'età della persona numero: " + (numeriPersone + 1)); imputEtà = int.TryParse(Console.ReadLine(), out persone[numeriPersone]); if ((!imputEtà)||(persone[numeriPersone]<=0)) Console.WriteLine("Errore input, Riprova!"); } while ((!imputEtà)||(persone[numeriPersone]<=0)); #endregion if (persone[numeriPersone] < 3) { Console.WriteLine("la persona numero: " + (numeriPersone + 1) + " non può mangiare il dolce"); } if (persone[numeriPersone] >= 3 && persone[numeriPersone] <= 5) { Console.WriteLine("la persona numero: " + (numeriPersone + 1) + " si aggiudica una fetta di" + da3a5 + "grammi"); } if (persone[numeriPersone] >= 6 && persone[numeriPersone] <= 8) { Console.WriteLine("la persona numero: " + (numeriPersone + 1) + " si aggiudica una fetta di" + da6a8 + "grammi"); } if (persone[numeriPersone] > 8 && persone[numeriPersone] <= 12) { Console.WriteLine("la persona numero: " + (numeriPersone + 1) + " si aggiudica una fetta di" + da8a12 + "grammi"); } if (persone[numeriPersone] > 12) { #region convalida /*ciclo per la convalida delle calorie che una persona può mangiare*/ do { Console.WriteLine("inserisci le calorie che può assumere la persona numero:" + (numeriPersone + 1)); imputcalorie = int.TryParse(Console.ReadLine(), out calorie[quanteCalorie]); if ((!imputcalorie) || (calorie[quanteCalorie] <= 0)) Console.WriteLine("Errore input, Riprova!"); } while ((!imputcalorie) || (calorie[quanteCalorie] <= 0)); #endregion //calcolo della fetta in base alle calorie che può assumere una persona if (calorie[quanteCalorie] >= caloriefettamax) { Console.WriteLine("la persona numero: " + (numeriPersone + 1) + " si aggiudica la fetta massima di " + FettaMax + "kg"); } if (calorie[quanteCalorie] < caloriefettamax) { grammi = (calorie[quanteCalorie] * 100) / 350; Console.WriteLine(grammi); } } if (numeriPersone==numPersone) ok = false; } } #endregion #region ciclo per casi eccezionali /*ciclo per i casi eccezionali */ while (piccolafetta==true) { for (int numeriPersone = 0; numeriPersone < numPersone; numeriPersone++)//Ciclo per inserimento età(al quale non riesco a fare la convalida) { #region convalida /*convalida input età*/ do { Console.WriteLine("\n" + "Inserisci l'età della persona numero: " + (numeriPersone + 1)); imputEtà = int.TryParse(Console.ReadLine(), out persone[numeriPersone]); if ((!imputEtà) || (persone[numeriPersone] <= 0)) Console.WriteLine("Errore input, Riprova!"); } while ((!imputEtà) || (persone[numeriPersone] <= 0)); #endregion #region convalida /*convalida input calorie*/ do { Console.WriteLine("inserisci le calorie che può assumere la persona numero:" + (numeriPersone + 1)); imputcalorie = int.TryParse(Console.ReadLine(), out calorie[quanteCalorie]); if ((!imputcalorie) || (calorie[quanteCalorie] <= 0)) Console.WriteLine("Errore input, Riprova!"); } while ((!imputcalorie) || (calorie[quanteCalorie] <= 0)); #endregion /*Se p.es. la porzione massima per tutti è di 28 grammi, allora sia quelli da 6 ad 8 anni, sia quelli fra 9 e 12 anni avranno fette di 28 g.*/ if (caloriefettamax <= 70) Console.WriteLine("la persona numero: " + (numeriPersone + 1) + " si aggiudica una fetta di" + FettaMax); if (persone[numeriPersone] >= 6 && caloriefettamax > 70 && caloriefettamax <= 105) Console.WriteLine("la persona numero: " + (numeriPersone + 1) + " si aggiudica una fetta di" + FettaMax); if (persone[numeriPersone] > 8 && caloriefettamax > 105 && caloriefettamax <= 175) Console.WriteLine("la persona numero: " + (numeriPersone + 1) + " si aggiudica una fetta di" + FettaMax); } } #endregion Console.WriteLine("\n"+"sono rimasti " + Kg + " kg di panettone");//questo valore è da sistemare in quanto ti da il peso iniziale del panettone Console.ReadLine(); } } }