4.3 Циклді пайдаланып есепті шешу мысалы
Осы бөлімде тағы бір есептің шешімін қарастырамыз, ол for циклімен қатар while циклін де қолдануды қажет етеді. Осы есепті шешкеннен кейін, басқа мысалдарда есептің толық шешімін егжей-тегжейлі қарастырмайтын боламыз, бірақ әр түрлі үзінділердің алгоритмдерін оқуды жалғастырамыз, мысалы, сұрыптау, т.б.
4.4-есеп. Үш жүз гектарлы бақшадан картоп өнімін жинау қажет болсын. Жеке тәжірибеге сүйенсек, 840 шұңқыр қазу керек. Бір шұңқырда 0-ден 5 түйнекке дейін (кездейсоқ сан) болуы мүмкін. Түйнектердің көлеміне қарай шелекте оның 70-тен 100 дейін саны болады (кездейсоқ сан). Бір қапқа төрт шелек картоп салынады. Картоп өнімін жинауға бос қаптардың қаншасын алу керек?
Есепті шешу алгоритмі шынайы алгоритмге - картопты қазу кезіндегі адамдардың әрекетіне сәйкес келеді. Біріншіден,барлық картоп (барлық 840 шұңқыр) қазып алынады және кептіру үшін бір үйіндіге жиналады. Ал содан кейін, үйіндідегі картоп біткенге дейін (while циклі) оны шелекке толтырады және қапқа төгеді.
Есепті шешу алгоритмін толығырақ сипаттайық. Бірінші кезеңде for циклін 840 циклдік операцияларға қосу керек (шұңқырлар саны бойынша), оның ішінде екі әрекетті орындаймыз: бір шұңқырда түйнектердің кездейсоқ санын құрамыз және бақшада қазып алынған түйнектердің жалпы санын жинақтаймыз.
Осылай, for циклінің аяғында белгілі бір айнымалыда, мысалы c, біз қазып алынған түйнектердің жалпы санын анықтаймыз.
Шелектердегі өнімді есептеу үшін «әзірше» шартты циклін (үйіндіде картоп таусылғанға дейін) қолдану керек. Цикл ішінде шелектегі түйіндердің кездейсоқ санын құру керек және осы санға түйіндердің жалпы санын азайтуды орындау мен жиналған шелектер санауышын көбейтіп отыру керек.
Осылайша шартты цикл аяқталғаннан кейін жиналған картоп салынған шелектер санын анықтаймыз. Қаптар санын есептеу үшін жиналған шелектер санын төртке бөліп, жауапты дөңгелектеу керек.
Есептелген қаптар саны есептің шешімі болады.
Бағдарлама коды мынандай:
using System;
namespace ConsoleFor_While
{
class Program
{
static void Main()
{
int i, c, b, m;
c = 0;
//int i, j, k, a, max, min;
//max = -100; min = 100; j = 0; k = 0;
Random rnd = new Random();
for (i = 1; i <= 840; i++)
c = c + rnd.Next() % 6;
Console.WriteLine("Barligi {0} kartoptin tyinegi zhinaldi", c);
b = 0;
while (c > 0)
{
c = c - (rnd.Next() % 31 + 70);
b++;
}
if (b % 4 == 0)
m = (int)(b / 4);
else m = (int)(b / 4) + 1;
Console.WriteLine("Barligi {0} shelek zhinaldi", b);
Console.WriteLine("{0} kap kerek", m);
Console.WriteLine("Enter pernesin basiniz");
Console.ReadLine();
}
}
}
Бағдарлама жұмысы:
Barligi 2039 kartoptin tyinegi zhinaldi
Barligi 24 shelek zhinaldi
6 kap kerek
Enter pernesin basiniz
Достарыңызбен бөлісу: |