Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    c# non mi si ferma più un ciclo while aiuto !

    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();          }      }  }
    Cristian

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Usa il tag [CODE] per formattare il codice, altrimenti non si capisce nulla.

    Inoltre, verifica la condizione usata per il ciclo e controlla come viene valorizzata la variabile relativa, facendo debugging passo per passo del programma, e dai un minimo di indicazioni su qual è lo scopo del codice che hai scritto.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    il problema si presenta al ciclo while dove ho messo molto spazio,quello dove c'è while(ok=true)
    Cristian

  4. #4
    ho messo il codice nel tag code ma ora è in una riga unica e si capisce ancora meno -.-'
    chiedo pietà qualcuno mi aiuti
    lo scopo è questo:In una tavola, si deve procedere ad una distribuzione equa del panettone, rispettando
    le esigenze di dieta delle persone e l'età dei più piccoli.
    Cristian

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il codice è illeggibile ... ma se scrivi (come se fosse BASIC)

    while (ok=true)

    non fai altro che assegnare continuamente il valore true ad ok.

    In C# il confronto lo scrivi con

    while (ok==true)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    come faccio al mettere il codice con la giusta formattazione?
    Cristian

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da cristianpff
    come faccio al mettere il codice con la giusta formattazione?
    Io faccio copia-incolla e funziona ... semmai non so come fare per riuscire a fare quello che hai fatto tu ...

    In ogni caso, hai provato la correzione che ti ho suggerito?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    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;


    }

    }
    Cristian

  9. #9
    Originariamente inviato da oregon
    Io faccio copia-incolla e funziona ... semmai non so come fare per riuscire a fare quello che hai fatto tu ...

    In ogni caso, hai provato la correzione che ti ho suggerito?
    allora ho provato ma il problema secondo me è un altro comunque scusatemi ma sono nuovo di questo forum e ancora non so usarlo bene.
    se faccio copia incolla viene fuori così ho provato a rifarlo
    Cristian

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da cristianpff
    allora ho provato ma il problema secondo me è un altro
    In base a cosa dici questo?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.