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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2012, 19:24   #1
zammmash
 
Регистрация: 11.04.2012
Сообщений: 4
Сообщение Задача в паскале одномерный массив

Сформировать линейный массив из 30 случайных чисел в интервале от -16 до 16. Найти среднее арифметическое положительных элементов. Все элементы, кратные 3 заменить удвоенным значением этих элементов и скопировать в новый массив. В новом массиве найти номер и значение минимального элемента. Все результаты вывести на экран.
zammmash вне форума Ответить с цитированием
Старый 11.04.2012, 19:32   #2
pupilMartyr
Пользователь
 
Аватар для pupilMartyr
 
Регистрация: 02.05.2011
Сообщений: 45
Восклицание

а ты сам вообще пробовал что-либо делать?!.
pupilMartyr вне форума Ответить с цитированием
Старый 11.04.2012, 19:42   #3
zammmash
 
Регистрация: 11.04.2012
Сообщений: 4
По умолчанию

я вообще в тупике
zammmash вне форума Ответить с цитированием
Старый 11.04.2012, 19:46   #4
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Цитата:
Сообщение от zammmash Посмотреть сообщение
я вообще в тупике
В чем сложности?
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 11.04.2012, 19:48   #5
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

Код:
{
Сформировать линейный массив из 30 случайных чисел в интервале от -16 до 16.
1.Найти среднее арифметическое положительных элементов.
2.Все элементы, кратные 3 заменить удвоенным значением этих элементов и скопировать в новый массив.
3. В новом массиве найти номер и значение минимального элемента. Все результаты вывести на экран
}
uses crt;
const MaxNcount=1000; // размер массива
type
  TarrayInt=array [1..MaxNcount] of integer;


var a,b:TArrayInt; // массив элементов
    Acount:integer; // размер массива А
    Bcount:integer;  // размер массива B

//1) заполнение массива случайными числами из заданного интервала;
procedure CreateArray(var a:TArrayInt;Ncount:integer);
var i:integer;
begin
randomize;// инициализация
  for i:=1 to ncount-1 do  a[i]:=-16+random(16+16);
end;

Function ShowArray(const a:TArrayInt;Ncount:integer):string;
var s:string;
    i:integer;
begin
s:='';
 for i:=1 to ncount-1 do
 if s='' then s:=s+inttostr(a[i])
 else
  s:=s+','+inttostr(a[i]);
  result:=s;
end;
//1.Найти среднее арифметическое положительных элементов.
Function GetAVGElementWhereElementPlus(var a:TArrayInt;Ncount:integer):real;
var x,s,s1:integer;
begin
result:=0;
s:=0; // считаем сумму
s1:=0; // считаем кол-во элементов
     for x:=1 to Acount do
      if a[x]>0 then begin
         s:=s+a[x];
         s1:=s1+1;
      end;
      if s1>0 then
      result:=s/s1;
end;

//2.Все элементы, кратные 3 заменить удвоенным значением этих элементов и скопировать в новый массив.
procedure CreateNewMassivWhereElementMod3(a:TArrayInt;acount:integer;var b:TArrayInt; var bcount:integer);
var x:integer;
begin
bcount:=1;
    for x:=1 to Acount do begin
     if (a[x] mod 3)=0 then begin // Все элементы, кратные 3
       bcount:=bcount+1;
       a[x]:=a[x]*2; //заменить удвоенным значением этих элементов
       b[bcount-1]:=a[x]; // и скопировать в новый массив.
     end;
    end;
end;
//3. В новом массиве найти номер и значение минимального элемента. Все результаты вывести на экран

Function GetFirstIndexMinElementFromArray(a:TArrayInt;acount:integer):integer;
var x:integer;
begin
 result:=1;
  for x:=1 to Acount do begin
    if a[result]>a[x] then result:=x;
  end;
end;

Function ListIndexsMinElement(a:TArrayInt;acount:integer):string;
var x:integer;
    minValue:integer;
begin
  minValue:=a[GetFirstIndexMinElementFromArray(a,acount)];
  result:='';
  for X:=1 to acount do
    if a[x]=minValue then result:=result+inttostr(x)+#13+#10;
end;

var MinIndex:integer;

begin
clrscr;
 acount:=30;
// Сформировать линейный массив из 30 случайных чисел в интервале от -16 до 16.
 CreateArray(a,acount);
 Writeln('Исходный массив ');
 Writeln(ShowArray(a,acount));
 // 1.Найти среднее арифметическое положительных элементов.
 Writeln('среднее арифметическое положительных элементов', GetAVGElementWhereElementPlus(a,acount):8:3);
 
 // 2.Все элементы, кратные 3 заменить удвоенным значением этих элементов и скопировать в новый массив.
 CreateNewMassivWhereElementMod3(a,acount,b,bcount);
 Writeln('Новый массив');
 Writeln(ShowArray(b,bcount));
//3. В новом массиве найти номер и значение минимального элемента. Все результаты вывести на экран
  MinIndex:=GetFirstIndexMinElementFromArray(b,bcount);
  Writeln(' номер минимального элемента ',MinIndex);
  Writeln(' значение минимального элемента ',b[MinIndex]);
//  Writeln(ListIndexsMinElement(b,bcount)); // если минимальных номеров несколько
end.
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype
denisbrain вне форума Ответить с цитированием
Старый 11.04.2012, 19:48   #6
zammmash
 
Регистрация: 11.04.2012
Сообщений: 4
По умолчанию

Вот мы пишем
uses crt;
const; // размер массива
type
TarrayInt=array [1..] of integer;

что дальше то..
zammmash вне форума Ответить с цитированием
Старый 11.04.2012, 20:03   #7
pupilMartyr
Пользователь
 
Аватар для pupilMartyr
 
Регистрация: 02.05.2011
Сообщений: 45
По умолчанию

Код:
i,j,sum,count: integer;
j:=1; sum:= 1; count:=0; min:= 32;

...

// формирование массива
for i:=1 to 30 do a[i]:= random(16);

// вывод сформированного массива
writeln("Сформированный массив: ");
for i:=1 to 30 do write(a[i]);
writeln("");

// поиск ср.ар. и формирование нового массива
for i:=1 to 30 do
begin
    if a[i]>0 then
    begin
        sum:= sum + a[i];
        inc(count);
    end;
    if (a[i] mod 3 = 0) then
    begin
        b[j]:= 2*a[i];
        inc(j);
    end;
end;

// вывод ср.ар.
writeln("Ср.ар. = ", (sum/count));
writeln("");

// вывод нового массива
writeln("Новый массив: ");
for i:=1 to j-1 do write(b[i]);
writeln("");

// поиск минимального в новом массиве
for i:=1 to j-1 do
    if b[i] < min then
    begin
        min:= b[i];
        index:= i;
    end;
end;

// вывод минимального и его номера из нового массива
writeln("Минимальный элемент: ", min);
writeln("... и его номер: ", index);

...
Это на 90% твой выход из тупика. Только генерировать массив будет числами от 0 до 16 (ибо я не помню как от -16, потому как на паскале не пишу 100 лет уже). Теперь СДЕЛАЙ ХОТЬ ЧТО-НИБУДЬ САМ!

И зачем в такой задаче еще процедуры использовать? В столько строчек, сколько выше написано можно курсач сделать))

Последний раз редактировалось pupilMartyr; 11.04.2012 в 20:14.
pupilMartyr вне форума Ответить с цитированием
Старый 11.04.2012, 20:11   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Диапазон от -16 до 16: random(33)-16 (т.к. random выдает числа 0<=random(n)<n).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 11.04.2012, 20:26   #9
pupilMartyr
Пользователь
 
Аватар для pupilMartyr
 
Регистрация: 02.05.2011
Сообщений: 45
Хорошо

Цитата:
Сообщение от BDA Посмотреть сообщение
Диапазон от -16 до 16: random(33)-16 (т.к. random выдает числа 0<=random(n)<n).
Вот, даже я узнаю что-то новое)
pupilMartyr вне форума Ответить с цитированием
Старый 11.04.2012, 21:03   #10
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

Цитата:
Сообщение от pupilMartyr Посмотреть сообщение
Вот, даже я узнаю что-то новое)
т.е.
Код:
-16+random(16+16+1);
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype
denisbrain вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В паскале , одномерный массив Alexxxxxx Помощь студентам 5 23.10.2011 19:41
одномерный массив на паскале druger Помощь студентам 1 09.10.2011 12:24
Одномерный массив в паскале winnie* Помощь студентам 4 04.10.2010 12:54
одномерный массив в паскале swedalena Помощь студентам 1 01.06.2010 22:45
Одномерный массив в Паскале Masha_ Помощь студентам 0 07.11.2009 20:06