Авторские Материалы о событиях в Израиле на Ближнем Востоке и в мире

IsraMir.com - Израильская журналистика

Default color brown color green color red color blue color
Вы сейчас тут: Новости arrow Техотдел arrow Свет ученья arrow Заполни массив – по всякому
Skip to content
Заполни массив – по всякому Версия для печати Отправить на e-mail
Sunday, 26 March 2006 | Зэев Фрайман для раздела Ученье – свет
Заполнимассив–повсякомуisramir.comJavaЯ хочу предложить вам несколько вариантов известной и, в основе своей, очень простой задачи на заполнение массивов случайными числами. Сначала – ее самый простой вариант, в потом – несколько вариантов посложнее; один из них лично мне был известен давно, потому что он в самых разных интерпретациях используется, например, для моделирования всякого рода «билетов спортивных лотерей», игры в карты и прочих вариантов.
 
Другой я услышал в прошлом году от Жени – и он мне очень понравился, потому что оказалось, что в нем скрыты не только всякие там программистские приемчики, но и разные методические полезности для работы с учениками.
 
Вариант первый, простейший
Напиши программу, заполняющую массив случайными числами из введенного диапазона.
Примечание: в Java-варианте вводится также и размер массива.
 
class ex_array{
           
            public static void fill(int m[],int n,int big){
                        for (int i=0;i
                                   m[i]=(int)(big*Math.random());
                        }
            }
           
            public static void view(int m[], int n){
                        for (int i=0;i
                                   IO.writeln("m["+i+"]="+m[i]);
                        }
                        IO.writeln("======Finish=========");
            }
            public static void main (String args[]){
                        int n=IO.readInt("Enter number of cells in array=");
                        int big=IO.readInt("Enter a biggest value for filled of array=");
                        int m[]=new int[n];
                        fill(m,n,big);
                        view (m,n);
            }
}
 
Вариант посложнее
Заполнить массив случайными числами, но так, чтобы каждая следующая ячейка содержала значение большее, чем предыдущая.
Примечание: можно было бы написать просто «по возрастанию» – но я умышленно этого не делаю. Посмотрите на программу – она легко выдает такой вариант заполнения, к которому термин «по возрастанию» оказывается в предлагаемом варианте неприменим...
 
class ex_array_2{
           
            public static void fill(int m[],int n,int big){
                        int floor=0;
                        for (int i=0;i
                                   m[i]=(int)((big-floor)*Math.random()+floor);
                                   floor=m[i];
                        }
            }
           
            public static void view(int m[], int n){
                        for (int i=0;i
                                   IO.writeln("m["+i+"]="+m[i]);
                        }
                        IO.writeln("======Finish=========");
            }
            public static void main (String args[]){
                        int n=IO.readInt("Enter number of cells in array=");
                        int big=IO.readInt("Enter a biggest value for filled of array=");
                        int m[]=new int[n];
                        fill(m,n,big);
                        view (m,n);
            }
}
 
Третий вариант: только по возрастанию
А вот исправленное и дополненное издание предыдущей программы – так, чтобы гарантировать заполнение только по возрастанию, не допуская достижения «потолка» в одной из промежуточных ячеек массива.
 
class ex_array_2{
           
            public static void fill(int m[],int n,int big){
                        int floor=0;
                        for (int i=0;i
                                    int reserv=n-i;
                                   m[i]=(int)(((big-reserv-floor)*Math.random())+floor);
                                   floor=m[i];
                                   IO.writeln(floor+".."+(big-reserv));
                        }
            }
           
            public static void view(int m[], int n){
                        for (int i=0;i
                                   IO.writeln("m["+i+"]="+m[i]);
                        }
                        IO.writeln("======Finish=========");
            }
            public static void main (String args[]){
                        int n=IO.readInt("Enter number of cells in array=");
                        int big=IO.readInt("Enter a biggest value for filled of array=");
                        int m[]=new int[n];
                        fill(m,n,big);
                        view (m,n);
            }
}
 
Н-да, получилось уже многовато для одного раза. Ладно, вариант с заполнением массива случайными неповторяющимися значениями – в следующий раз.
 
 
 

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:


Автотранслитерация: выключена

Защитный код

Powered by jComments
помощь обманутым дольщикам