Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/88: Рейтинг темы: голосов - 88, средняя оценка - 4.97
2 / 2 / 0
Регистрация: 22.04.2012
Сообщений: 43
1

Ежегодный прирост рыбы в пруду составляет 15%

23.04.2012, 20:57. Показов 16497. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ежегодный прирост рыбы в пруду составляет 15%. Запасы рыбы оценены в А тонн. Ежегодный план отлова В тонн. Наименьший запас рыбы, ниже которого запас уже не восстанавливается, составляет С тонн. Составьте алгоритм и программу, подсчитывающую, сколько лет можно выдерживать заданный план?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2012, 20:57
Ответы с готовыми решениями:

Прирост рыбы в пруду - Составить блок схему
Ежегодный прирост рыбы в пруду составляет 15%. Запасы рыбы оценены в А тонн. Ежегодный план отлова...

Оценить количество рыбы в пруду
Я тупа в статистике(((Помогите в Exce решить!!!

Волк и Лиса раздобыли кучу рыбы. Кто получил больше рыбы и на сколько больше?
Добавлено через 21 час 43 минуты up, помогите ребят задача легкая. Обманным путем лиса и волк...

Цветы на пруду
На поверхности пруда плавает цветок, который постоянно делится и размножается. Ежедневно площадь,...

13
138 / 138 / 42
Регистрация: 02.11.2010
Сообщений: 316
23.04.2012, 21:49 2
0_о Это уже задача на оптимизацию чтоль получается? Не проще ли решить ее в экселе =))
0
2 / 2 / 0
Регистрация: 22.04.2012
Сообщений: 43
24.04.2012, 09:24  [ТС] 3
может и так...но задали в С #(((((
0
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 153
24.04.2012, 10:41 4
1. получаем значения A, B, C;
2. расчитываем прирост рыбы в год (A * 0.15);
3. сравниваем его со значением вылова в год (если прирост больше или равен ему, то план по воспроизводству может
продолжаться теоритически бесконечно переход к пункту 5, если нет то переходим к следующему пункту);
4. считаем кол-во лет через которые рыба тупо закончится в пруду(подойдет к критическому значению и перестанет
восполнятся);
5. вывод результата.
1
2 / 2 / 0
Регистрация: 22.04.2012
Сообщений: 43
24.04.2012, 10:55  [ТС] 5
а на C# как будет выглядеть?
0
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 153
24.04.2012, 11:13 6
Вот где то так =) на ошибки не тестил, но вроде логика норм.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using System;
 
namespace прирост_рыбы
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Введите кол-во запаса рыбы: ");
            double zapas = double.Parse(Console.ReadLine());
 
            Console.WriteLine("Введите ежегодный план отлова: ");
            double plan = double.Parse(Console.ReadLine());
 
            Console.WriteLine("Введите наименьшее кол-во рыбы: ");
            double krit = double.Parse(Console.ReadLine());
 
            double rost_fish;
            int kolv = 0;
 
            if (zapas > krit)
            {
                rost_fish = zapas * 0.15;
 
 
                if (rost_fish < plan)
                {
 
                    for (int i = 0; krit<zapas; i++)
                    {
                        rost_fish = zapas * 0.15;
                        zapas = zapas - plan;
                        kolv++;
                    }
                    for (int i = 0; plan < zapas; i++)
                    {
                        zapas = zapas - plan;
                        kolv++;
                    }
                    Console.WriteLine("План можно выдерживать {0} лет.", kolv);
 
                }
                else
                    Console.WriteLine("План по производству рыбы может продолжаться бесконечно.");
 
            }
            else
            {
                for(int i = 0;plan<zapas;i++)
                {
                    zapas= zapas-plan;
                    kolv++;
                }
                Console.WriteLine("План можно выдерживать {0} лет.", kolv);
            }
 
            Console.ReadLine();
                        
        }
    }
}
Добавлено через 3 минуты
в алгоритме ток между первым и вторым пунктом надо еще условие одно сделать проверить, чтобы запас рыбы изначально был больше критического значения, тогда мы просто считаем сколько лет надо на то, чтобы рыба иссякла.
1
2 / 2 / 0
Регистрация: 22.04.2012
Сообщений: 43
24.04.2012, 11:30  [ТС] 7
Огромное спасибо...
0
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 153
24.04.2012, 11:39 8
А вообще могу посоветовать скачать видяшки, называются "основы языка c# и платформы .net". Там парнишка очень просто и понятно объясняет,с примерами =)
0
2 / 2 / 0
Регистрация: 22.04.2012
Сообщений: 43
24.04.2012, 11:41  [ТС] 9
обязательно воспользуюсь советом))))
0
218 / 212 / 63
Регистрация: 17.04.2012
Сообщений: 382
24.04.2012, 12:22 10
Strelok45, мне кажетъся вы никогда не учитываете прирост. Я не прав??

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click_1(object sender, EventArgs e)
        {
            if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
            {
                MessageBox.Show("Не заполнены все поля", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
 
            // рыба в данный момент
            double A = Convert.ToDouble(textBox1.Text);
 
            // вылов
            double B = Convert.ToDouble(textBox2.Text);
 
            // граничный остаток
            double C = Convert.ToDouble(textBox3.Text);
 
            // количество пополнения в год
            double accretion = Convert.ToDouble(0.15);
 
            // общая рыба с пополнением
            double AllAccretion = A + A * accretion;
 
            //рыба с пополнением - вылов
            double AllFishMinusCatchOfFish = AllAccretion - B;
 
            //если вся рыба(с приростом) будет меньше отлова, то года не пройдет как рыбы останется допустимоее количество
            if (AllFishMinusCatchOfFish <= C)
            {
                label4.Text = "Вылов рыбы будет продолжаться не больше года";
                return;
            }
 
            // если прирост будет больше вылова - то никакого убывания не будет, только прирост
            if (accretion >= B)
            {
                label4.Text = "Вылов рыбы никогда не привысит прирост";
                return;
            }
 
            // переменная (щетчик) годов
            int years = 0;
            for (int i = 0; AllAccretion - B > C; i++)
            {
                // вся рыба в год( с приростом)
                AllAccretion = AllAccretion - B;
                years++;
            }
 
            label4.Text = ("Запасов рыбы бля вылова хватит на '" + years + "' лет.").ToString();
            return;
        }
 
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            // запрет ввода букв
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9,.,\b]");
        }
 
        private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9,.,\b]");
        }
 
        private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9,.,\b]");
        }
    }
}
Вложения
Тип файла: rar fishs.rar (39.4 Кб, 28 просмотров)
2
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 153
24.04.2012, 12:48 11
точно=) надо хранение прироста еще ввести. А еще можно контроль ошибок ввода значений добавить=)
0
218 / 212 / 63
Регистрация: 17.04.2012
Сообщений: 382
24.04.2012, 15:53 12
немного переделал, а то сам не правильно написал. Замени код в обработчике баттон

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
            {
                MessageBox.Show("Не заполнены все поля", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
 
            double A = Convert.ToDouble(textBox1.Text);
            double B = Convert.ToDouble(textBox2.Text);
            double C = Convert.ToDouble(textBox3.Text);
            double accretion = Convert.ToDouble(0.15);
            double AllAccretion = A + A * accretion;
            double AllFishMinusCatchOfFish = AllAccretion - B;
 
            if (AllFishMinusCatchOfFish <= C)
            { label4.Text = "Вылов рыбы будет продолжаться не больше года";  return;  }
 
            if (accretion >= B)
            { label4.Text = "Вылов рыбы никогда не привысит прирост"; return; }
 
            if (AllAccretion - B > A)
            { label4.Text = "Количество рыбы будет только увеличеватъся"; return; }
 
            int years = 0;
            do
            {
                A = A + A * accretion - B;
                years++;
            }
            while (A > C);
 
 
            // (years - 1) потому, что на последний год лимит может привысить допустимую норму. Рыбы может хватить на 8 лет и 4 месяца, программа пишет 9 лет. Но на самом деле после 9 лет у тебя в реке не то, что может не быть рыбы вообще, а по результатам будет отрецательное число. так как щетчик уже увеличился. на вылов рыбы будет (years - 1) полных лет.
            label4.Text = ("Запасов рыбы для вылова хватит на '" + (years - 1) + "' лет.").ToString();
Добавлено через 1 минуту
Ksumih,

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click_1(object sender, EventArgs e)
        {
            if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
            {
                MessageBox.Show("Не заполнены все поля", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
 
            double A = Convert.ToDouble(textBox1.Text);
            double B = Convert.ToDouble(textBox2.Text);
            double C = Convert.ToDouble(textBox3.Text);
            double accretion = Convert.ToDouble(0.15);
            double AllAccretion = A + A * accretion;
            double AllFishMinusCatchOfFish = AllAccretion - B;
 
            if (AllFishMinusCatchOfFish <= C)
            { label4.Text = "Вылов рыбы будет продолжаться не больше года";  return;  }
 
            if (accretion >= B)
            { label4.Text = "Вылов рыбы никогда не привысит прирост"; return; }
 
            if (AllAccretion - B > A)
            { label4.Text = "Количество рыбы будет только увеличеватъся"; return; }
 
            int years = 0;
            do
            {
                A = A + A * accretion - B;
                years++;
            }
            while (A > C);
 
 
            // (years - 1) потому, что на последний год лимит может привысить допустимую норму. Рыбы может хватить на 8 лет и 4 месяца, программа пишет 9 лет. Но на самом деле после 9 лет у тебя в реке не то, что может не быть рыбы вообще, а по результатам будет отрецательное число. так как щетчик уже увеличился. на вылов рыбы будет (years - 1) полных лет.
            label4.Text = ("Запасов рыбы для вылова хватит на '" + (years - 1) + "' лет.").ToString();
        }
 
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            // запрет ввода букв в текстбокс
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9,.,\b]");
        }
 
        private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9,.,\b]");
        }
 
        private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9,.,\b]");
        }
      
 
    }
}
0
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 153
25.04.2012, 09:36 13
а я свой изменил, теперь должно быть правильнее =)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
using System;
 
namespace прирост_рыбы
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Введите кол-во запаса рыбы: ");  //данные A
            double zapas = double.Parse(Console.ReadLine());
 
            Console.WriteLine("Введите ежегодный план отлова: ");  //данные B
            double plan = double.Parse(Console.ReadLine());
 
            Console.WriteLine("Введите наименьшее кол-во рыбы: ");  //данные C
            double krit = double.Parse(Console.ReadLine());
 
            double rost_fish;
            int kolv = 0;
 
            if (zapas > krit)
            {
                rost_fish = zapas * 0.15;
 
 
                if (rost_fish < plan)
                {
                    double fish=rost_fish;  
 
                    for (int i = 0; krit<fish; i++)
                    {
                        zapas = fish - plan;
                        fish = fish * 0.15; 
                        
                        kolv++;
                    }
                    for (int i = 0; plan < zapas; i++)
                    {
                        zapas = zapas - plan;
                        kolv++;
                    }
                    Console.WriteLine("План можно выдерживать {0} лет.", kolv);
 
                }
                else
                    Console.WriteLine("План по производству рыбы может продолжаться бесконечно.");
 
            }
            else
            {
                for(int i = 0;plan<zapas;i++)
                {
                    zapas= zapas-plan;
                    kolv++;
                }
                Console.WriteLine("План можно выдерживать {0} лет.", kolv);
            }
 
            Console.ReadLine();
                        
        }
    }
}
1
218 / 212 / 63
Регистрация: 17.04.2012
Сообщений: 382
25.04.2012, 11:41 14
Вынужден опять вас огорчить. Программа работает не правильно.
Введите А = 1000, В = 200, С = 1. Программа даст ответ, что план можно выдерживать 3 года. Но это бред.
Могу доказать.

год1. 1000 + 1000*0,15 - 200 = 950 (осталось рыбы в реке после первого года);
год2. 950 + 950*0,15 - 200 = 892 (осталось рыбы в реке после 2 лет)
год3. 892 + 892*0,15 - 200 = 825 (осталось рыбы в реке после 3 лет)
год4 825 + 825*0,15 - 200 = 748 ((осталось рыбы в реке после 4 лет)

и т.д. до 8 лет. так что переписывайте снова))
2
25.04.2012, 11:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2012, 11:41
Помогаю со студенческими работами здесь

Загрузка ЦП всегда составляет 51%? Загрузка диска С составляет 100 ГБ из 100ГБ?
Доброго времени суток.Вот такая вот задачка? Загрузка ЦП всегда составляет 51%? Загрузка диска С...

Ежегодный апдейт записей.
БД Школа. Каждый ученик относится к определённому классу. Однако, если в сентябре этого года он...

Ежегодный опрос посетителей 2016 г. Chrome
При нажатии на ссылки открываются сторонние страницы, присутствует баннерная реклама на страничках...

Создать ежегодный график по завозу эл.приборов
Ребята, добрый день! У меня вот такая проблемка, над которой уже бьюсь не один день... Каждый год...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru