Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2012, 19:39   #21
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Так-с, было время (был урок изо )
На изо рисовать надо было код, а не писать

Вот по этой ссылке выложил пару книг по численным методам, в том числе обещанную - с задачей Коши (Ортега, Глава вторая прямо с нее и начинается)

http://programmersforum.ru/showthrea...14#post1153114
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 18.12.2012, 20:45   #22
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

О! Во истину благая весть! Жаль только плюсичек Вам не поставить..
Фу, осилил.. Да, схожесть на лицо, ток там кода нет (Да и шо такое дифференциальные ур-ния я не знаю))
Надо будет поубивать людей Randomom и всё, наверное, будет очень даже ничего..

Последний раз редактировалось Poma][a; 18.12.2012 в 20:53.
Poma][a вне форума Ответить с цитированием
Старый 18.12.2012, 22:03   #23
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Ладно.. Вот шушуть людей по истреблял -
Код:
const
        SIZE = 30000;
var
        a : array [1..SIZE] of record
                age :  Integer;  // возраст
                sex :  Boolean;  // пол
                kids : Integer;  //  кол-во детей
        end;
        child, par, men, female, male, i, t, n, owndth, dead, count : Integer;

begin
        Randomize;
        Write ('Всего людей (м = д)'); ReadLn (men);

        for i := 1 to men div 2 do begin
                a[i].age := 20;
                a[i].sex := TRUE; // прекрасный пол
                a[i].kids := 0;
        end;

        for i := men div 2+1 to men do begin
                a[i].age := 20;
                a[i].sex := FALSE;  //сильный пол
                a[i].kids := 0
        end;

        for i := men+1 to SIZE do
                a[i].age := -1;

        n := 1;

        while men <> 0 do begin
                for i := 1 to 15 do
                        WriteLn (a[i].age, ' ', a[i].kids, ' ', a[i].sex);
                WriteLn ('Наконец ', n, '-го года  ');
                Inc (n);
                owndth := 0;
                for i := 1 to men do
                        if a[i].age > 100 then begin
                                a[i].age := -1;
                                Inc (owndth)
                        end
                        else
                                if a[i].age >= 0 then
                                        Inc (a[i].age);

{                men := 0;
                for i := 1 to SIZE do
                        if a[i].age <> -1 then
                                Inc(men);
 }               WriteLn (men);

                men := men-owndth;
                // убиваем людишек
                dead := Random (men div 100);
                for i := 1 to dead do begin
                        t := Random (men);
                        while a[t].age = -1 do
                                t := Random (men);
                        a[t].age := -1;
                end;



                WriteLn ('Умерло своей смертью ', owndth);
                WriteLn ('Всего умерло', owndth+dead);
                WriteLn ('Живых людей ', men-dead);

                male := 0;
                female := 0;
                for i := 1 to men+dead+owndth do
                        if (a[i].age >= 20) and (a[i].kids < 3) then
                                if a[i].sex then
                                        Inc (female)
                                else
                                        Inc (male);

                WriteLn ('Девушек, способных родить детей ', female);
                WriteLn ('Юношей, способных зачать детейб ', male);

                child := Random (men div 4);
                while (child  > male) or (child >  female) do
                        child := Random (men div 4);;

                WriteLn ('Детей зачато ', child);

                // запомиаем родителей
                i := 1; male := child; female := child;
                while (male > 0) or (female > 0) do begin
                        if (a[i].age >= 20) and (a[i].kids < 3) and (a[i].sex) and (female > 0) then begin
                                Dec (female);
                                Inc (a[i].kids)
                        end
                        else
                        if (a[i].age >= 20) and (a[i].kids < 3) and (not (a[i].sex)) and (male > 0) then begin
                                Dec (male);
                                Inc (a[i].kids)
                        end;
                        Inc (i)
                end;

                men := men + child;
                // заполняем детей
                i := 1;
                count := 1;
                while (i < SIZE) and (child >= count)do begin
                        if a[i].age = -1 then begin
                                a[i].age := 0;
                                a[i].sex := Boolean (Random (2));
                                a[i].kids := 0;
                                Inc (count)
                        end;
                        Inc (i)
                end;
                ReadLn

        end
end.

Последний раз редактировалось Poma][a; 19.12.2012 в 15:38.
Poma][a вне форума Ответить с цитированием
Старый 19.12.2012, 08:20   #24
Aranea tela telam
Пользователь
 
Аватар для Aranea tela telam
 
Регистрация: 11.01.2012
Сообщений: 51
По умолчанию

Мда интересная пища для размышления, фантазии и коварных планов по истреблению людей
ps Может еще и эпидемию гриппа добавить?
Я учусь на своих ошибках, но порой их слишком много

Последний раз редактировалось Aranea tela telam; 19.12.2012 в 08:23.
Aranea tela telam вне форума Ответить с цитированием
Старый 19.12.2012, 08:42   #25
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Учтите еще смену государственного строя с приходом к власти тирана и последующими репрессиями...

Господа, Вы так до геноцида докатитесь
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 19.12.2012, 15:40   #26
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Так-с... снова подправил, и в целом я доволен, стало намного эффективней, по сравнению с предыдущими версиями.. За сщет уменьшения кол-ва итераций во вложенных циклах..

Последний раз редактировалось Poma][a; 19.12.2012 в 15:42.
Poma][a вне форума Ответить с цитированием
Старый 19.12.2012, 20:58   #27
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

А можно еще учесть уровень пробок и гражданственного чувства граждан, и от этого уже рандомить время скорой помощи, и потом возможно даже кого-то реанимировать

Цитата:
и в целом я доволен
Я подумал и передумал
Нет в целом очень даже ничего (если учесть что это мой первый опыт в моделировании (по этому и не лень )), но маленькая часть мне перестала нравиться - это запоминание родителей.. Тоесть у нас : n родителей n div 2 девушек и n div 2 юношей
родилось 3 ребенка, и всех их мы запишем к 1 парню и 1 девушке.. и это не есть хорошо..
Poma][a вне форума Ответить с цитированием
Старый 19.12.2012, 21:22   #28
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Решил перемешать время родов для всех родителей?

Самое интересное в этой теме - молчание топикстартера
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 19.12.2012, 21:30   #29
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Самое интересное в этой теме - молчание топикстартера
Ой вот что пофигу-то пофигу..
Цитата:
Решил перемешать время родов для всех родителей?
Ну что-то типо того.. думаю что бы Random'ить надо будет еще химичить с детьми, а это накладно ведь детей суем куда угодно, тогда надо будет сдвигать массив, чтобы девочек к девушкам, мальчиков к юношам.. А это очень накладно..
Надо что-то другое придумать.. Ну ничего, завтра краеведение
Хотя, конечно если внутрь массива не заглядывать, то всё гуд..

А можно еще что-то типа пузырька сделать, но тогда потомство будет у всех ~ (приблизительно равно), снова не хорошо, да и пузырь эффективностью не блещет.. Вообщем надо думать..
Poma][a вне форума Ответить с цитированием
Старый 20.12.2012, 12:31   #30
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Всё доделал, всё пашет! Даже очень хорошо.. Рандомно заполняет родителей..
Код:
const
        SIZE = 30000;
var
        a : array [1..SIZE] of record
                age :  Integer;  // возраст
                sex :  Boolean;  // пол
                kids : Integer;  //  кол-во детей
        end;
        child, par, men, female, male, i, t, n, owndth, dead, count : Integer;

begin
        Randomize;
        Write ('Всего людей (м = д)'); ReadLn (men);

        for i := 1 to men div 2 do begin
                a[i].age := 20;
                a[i].sex := TRUE; // прекрасный пол
                a[i].kids := 0;
        end;

        for i := men div 2+1 to men do begin
                a[i].age := 20;
                a[i].sex := FALSE;  //сильный пол
                a[i].kids := 0
        end;

        for i := men+1 to SIZE do
                a[i].age := -1;

        n := 1;

        while men <> 0 do begin
                for i := 1 to 15 do
                        WriteLn (a[i].age, ' ', a[i].kids, ' ', a[i].sex);
                WriteLn ('Наконец ', n, '-го года  ');
                Inc (n);
                owndth := 0;
                for i := 1 to men do
                        if a[i].age > 100 then begin
                                a[i].age := -1;
                                Inc (owndth)
                        end
                        else
                                if a[i].age >= 0 then
                                        Inc (a[i].age);

{                men := 0;
                for i := 1 to SIZE do
                        if a[i].age <> -1 then
                                Inc(men);
 }               WriteLn (men);

                men := men-owndth;
                // убиваем людишек
                dead := Random (men div 100);
                for i := 1 to dead do begin
                        t := Random (men);
                        while a[t].age = -1 do
                                t := Random (men);
                        a[t].age := -1;
                end;



                WriteLn ('Умерло своей смертью ', owndth);
                WriteLn ('Всего умерло', owndth+dead);
                WriteLn ('Живых людей ', men-dead);

                male := 0;
                female := 0;
                for i := 1 to men+dead+owndth do
                        if (a[i].age >= 20) and (a[i].kids < 3) then
                                if a[i].sex then
                                        Inc (female)
                                else
                                        Inc (male);

                WriteLn ('Девушек, способных родить детей ', female);
                WriteLn ('Юношей, способных зачать детейб ', male);

                child := Random (men div 4);
                while (child  > male) or (child >  female) do
                        child := Random (men div 4);;

                WriteLn ('Детей зачато ', child);

                // запомиаем родителей
                i := 1; male := child; female := child;
                while (male > 0) or (female > 0) do begin
                        t := Random (men);
                        if (a[t].age >= 20) and (a[t].kids < 3) and (a[t].sex) and (female > 0) then begin
                                Dec (female);
                                Inc (a[t].kids)
                        end
                        else
                        if (a[t].age >= 20) and (a[t].kids < 3) and (not (a[t].sex)) and (male > 0) then begin
                                Dec (male);
                                Inc (a[t].kids)
                        end;
                        Inc (i)
                end;

                men := men + child;
                WriteLn ('profit', men);
                // заполняем детей
                i := 1;
                count := 1;
                while (i < SIZE) and (child >= count)do begin
                        if a[i].age = -1 then begin
                                a[i].age := 0;
                                a[i].sex := Boolean (Random (2));
                                a[i].kids := 0;
                                Inc (count)
                        end;
                        Inc (i)
                end;
                ReadLn

        end
end.
Poma][a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на Паскале noone Помощь студентам 4 12.01.2012 15:58
задача на паскале noone Помощь студентам 1 17.12.2011 12:33
задача на паскале Campanita Помощь студентам 5 30.10.2010 12:31
Задача в Паскале WitaliG Помощь студентам 12 27.10.2010 15:59
задача в паскале __k1ll3r__ Помощь студентам 3 27.12.2007 05:41