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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2009, 20:19   #1
d00ker
Пользователь
 
Регистрация: 24.12.2008
Сообщений: 65
Восклицание 2 задачи в среде Паскаль!!!

1) Дан массив на a=30 ячеек, b=70 ячеек и с=10 ячеек ! Найти максимальный и минимальный элемент в каждом массиве! (использовать функцию)!

2) Дан ряд, от 1 до 100, найти все простые числа через процедуру!

Желательно пояснение к каждому действию!
d00ker вне форума Ответить с цитированием
Старый 28.01.2009, 20:38   #2
Манжосов Денис :)
Участник клуба
 
Регистрация: 29.01.2008
Сообщений: 1,039
По умолчанию

1)
Код:
var
a: array [1..30] of integer;
i: byte;
MaxA, MinA: integer;
begin
  {Нужно заполнить массивы}
  MaxA := a[1];
  for i:=2 to 30 do
    if a[i]>MaxA then MaxA := a[i];
  MinA := a[1];
  for i:=2 to 30 do
    if a[i]<MinA then MinA := a[i];
end;
С остальными массивами можно сделать по аналогии.
Манжосов Денис :) вне форума Ответить с цитированием
Старый 28.01.2009, 20:48   #3
d00ker
Пользователь
 
Регистрация: 24.12.2008
Сообщений: 65
По умолчанию

для каждого массива отдельная функция?
d00ker вне форума Ответить с цитированием
Старый 28.01.2009, 20:49   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Первая. Для всех массивов..
Код:
uses crt;
type arr = array of integer;
sarr = ^arr;
var
a,b,c : ^arr;
i,tmp : integer;

function getmin(mas : sarr; r : integer) : integer;
  var m,k : integer;
  begin
  m := 1;
  for k := 1 to r do
   if mas^[m]>mas^[k] then m := k;
  getmin := m;
  end;
function getmax(mas : sarr; r: integer) : integer;
  var m,k : integer;
  begin
  m := 1;
  for k:=1 to r do
   if mas^[m]<mas^[k] then m := k;
  getmax := m;
  end;

begin
clrscr;
randomize;
writeln('Massiv a:');
getmem(a,30*sizeof(integer));
for i:=1 to 30 do
  begin
  a^[i] := random(50);
  write(a^[i]:3);
  end;
writeln;
writeln('Massiv b:');
getmem(b,70*sizeof(integer));
for i:=1 to 70 do
  begin
  b^[i] := random(50);
  write(b^[i]:3);
  end;
writeln;
writeln('Massiv c:');
getmem(c,10*sizeof(integer));
for i:=1 to 10 do
  begin
  c^[i] := random(50);
  write(c^[i]:3);
  end;
writeln;
writeln;
tmp := getmin(a,30);
writeln('Minimum a: element a[',tmp,']= ',a^[tmp]);
tmp := getmax(a,30);
writeln('Maximum a: element a[',tmp,']= ',a^[tmp]);
tmp := getmin(b,70);
writeln('Minimum b: element b[',tmp,']= ',b^[tmp]);
tmp := getmax(b,70);
writeln('Maximum b: element b[',tmp,']= ',b^[tmp]);
tmp := getmin(c,10);
writeln('Minimum c: element c[',tmp,']= ',c^[tmp]);
tmp := getmax(c,10);
writeln('Maximum c: element c[',tmp,']= ',c^[tmp]);
freemem(a,30*sizeof(integer));
freemem(b,70*sizeof(integer));
freemem(c,10*sizeof(integer));
readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 28.01.2009, 21:00   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вторая:
Код:
uses crt;
type arr = array[1..100] of integer;   { определяем тип "массив из 100 элементов" }
var a : arr;
k : integer;
procedure  prost(mas : arr);    { процедура для вывода простых чисел. Принимает массив }
  var i,j : integer;
  fl : boolean;    { флаг }
  begin
  for i:=1 to 100 do     { проходим по всем элементам массива }
    begin
     if (mas[i] = 1) or (mas[i] = 2) then    { если элемент =1 или 2, то он уж точно простой }
       begin
       write(mas[i]:3);     { выводим его.. }
       continue;        { и переходим к следующей итерации }
       end;
     fl := true;         { считаем, что элемент является простым числом }
     for j:=2 to trunc(i/2) do      { j от 2 до половины нашего элемента }
       if mas[i] mod j = 0 then    { если элемент делится без остатка на j, то он не простой }
         begin
         fl := false;         { говорим, что он не простой... }
         break;            { ..и выходим из цикла по j }
         end;
     if fl then write(mas[i]:3);    { если элемент простой, то выводим его }
    end;

  end;

begin
clrscr;
for k:=1 to 100 do      { заполняем массив a }
 a[k] := k;            { числами от 1 до 100 }
prost(a);        { вызываем процедуру }
readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 28.01.2009 в 21:35. Причина: добавил комменты
Sazary вне форума Ответить с цитированием
Старый 28.01.2009, 21:02   #6
Манжосов Денис :)
Участник клуба
 
Регистрация: 29.01.2008
Сообщений: 1,039
По умолчанию

Цитата:
type arr = array of integer;
Мне казалось, что среда Turbo Pascal 7.0 не поддерживает динамические массивы, или это не так?
Манжосов Денис :) вне форума Ответить с цитированием
Старый 28.01.2009, 21:05   #7
d00ker
Пользователь
 
Регистрация: 24.12.2008
Сообщений: 65
По умолчанию

а можно как нибудь обойтись без типов? я еще этого не изучал! :-[
d00ker вне форума Ответить с цитированием
Старый 28.01.2009, 21:10   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Манжосов Денис
Цитата:
Мне казалось, что среда Turbo Pascal 7.0 не поддерживает динамические массивы, или это не так?
Поддерживает.. Правда, я писал в free pascal, поэтому кое-что нужно изменить.
Листинг для Turbo pascal 7
Код:
uses crt;
type arr = array[0..0] of integer;
sarr = ^arr;
var
a,b,c : sarr;
i,tmp : integer;

function getmin(mas : sarr; r : integer) : integer;
  var m,k : integer;
  begin
  m := 1;
  for k := 1 to r do
   if mas^[m]>mas^[k] then m := k;
  getmin := m;
  end;

function getmax(mas : sarr; r: integer) : integer;
  var m,k : integer;
  begin
  m := 1;
  for k:=1 to r do
   if mas^[m]<mas^[k] then m := k;
  getmax := m;
  end;

begin
clrscr;
randomize;
writeln('Massiv a:');
getmem(a,30*sizeof(integer));
for i:=1 to 30 do
  begin
  a^[i] := random(50);
  write(a^[i]:3);
  end;
writeln;
writeln('Massiv b:');
getmem(b,70*sizeof(integer));
for i:=1 to 70 do
  begin
  b^[i] := random(50);
  write(b^[i]:3);
  end;
writeln;
writeln('Massiv c:');
getmem(c,10*sizeof(integer));
for i:=1 to 10 do
  begin
  c^[i] := random(50);
  write(c^[i]:3);
  end;
writeln;
writeln;
tmp := getmin(a,30);
writeln('Minimum a: element a[',tmp,']= ',a^[tmp]);
tmp := getmax(a,30);
writeln('Maximum a: element a[',tmp,']= ',a^[tmp]);
tmp := getmin(b,70);
writeln('Minimum b: element b[',tmp,']= ',b^[tmp]);
tmp := getmax(b,70);
writeln('Maximum b: element b[',tmp,']= ',b^[tmp]);
tmp := getmin(c,10);
writeln('Minimum c: element c[',tmp,']= ',c^[tmp]);
tmp := getmax(c,10);
writeln('Maximum c: element c[',tmp,']= ',c^[tmp]);
freemem(a,30*sizeof(integer));
freemem(b,70*sizeof(integer));
freemem(c,10*sizeof(integer));
readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 28.01.2009, 21:14   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

d00ker
Цитата:
а можно как нибудь обойтись без типов? я еще этого не изучал! :-[
Если передавать массив процедуре, то нельзя. Зато можно обойтись без динамических массивов (уж если вы про типы говорите, то динамика вам врядли нужна)

Первая без динамических массивов.
Код:
uses crt;
type arr = array[1..100] of integer;  { определяем тип "массив из 100 элементов" }
var
a,b,c : arr;
i,tmp : integer;

function getmin(mas : arr; r : integer) : integer; { функция для нахождения минимума }
  var m,k : integer;
  begin
  m := 1;   { считаем, что первый элемент - минимум }
  for k := 1 to r do       { проходим по элементам массива }
   if mas[m]>mas[k] then m := k;     { если текущий элемент меньше минимума, то делаем его минимумом }
  getmin := m;   { возвращаем индекс минимума }
  end;

function getmax(mas : arr; r: integer) : integer;  { для нахождения максимума. Все аналогично }
  var m,k : integer;
  begin
  m := 1;
  for k:=1 to r do
   if mas[m]<mas[k] then m := k;
  getmax := m;
  end;

begin
clrscr;    { чистим экран }
randomize;   { инициализируем генератор случайных чисел }
writeln('Massiv a:');
for i:=1 to 30 do       { заполняем элементы массива а... }
  begin
  a[i] := random(50);  { ..случайными числами от 0 до 49 }
  write(a[i]:3);   { и тут же их выводим }
  end;
writeln;
writeln('Massiv b:');  { аналогично для b }
for i:=1 to 70 do
  begin
  b[i] := random(50);
  write(b[i]:3);
  end;
writeln;
writeln('Massiv c:');   { и для c }
for i:=1 to 10 do
  begin
  c[i] := random(50);
  write(c[i]:3);
  end;
writeln;
writeln;
tmp := getmin(a,30);   { получаем в tmp индекс минимума массива a }
writeln('Minimum a: element a[',tmp,']= ',a[tmp]); { и выводим этот элемент }
tmp := getmax(a,30);     { аналогично для максимума массива a }
writeln('Maximum a: element a[',tmp,']= ',a[tmp]);
tmp := getmin(b,70);
writeln('Minimum b: element b[',tmp,']= ',b[tmp]);
tmp := getmax(b,70);
writeln('Maximum b: element b[',tmp,']= ',b[tmp]);
tmp := getmin(c,10);
writeln('Minimum c: element c[',tmp,']= ',c[tmp]);
tmp := getmax(c,10);
writeln('Maximum c: element c[',tmp,']= ',c[tmp]);

readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 28.01.2009 в 21:32. Причина: добавил комменты
Sazary вне форума Ответить с цитированием
Старый 28.01.2009, 21:25   #10
d00ker
Пользователь
 
Регистрация: 24.12.2008
Сообщений: 65
По умолчанию

а можно пояснить каждое действие??
d00ker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2 задачи на Паскаль MIRRA Паскаль, Turbo Pascal, PascalABC.NET 8 11.11.2008 09:28
Паскаль задачи Зунтук Фриланс 10 14.03.2008 17:28
Паскаль. задачи Bagsi Помощь студентам 3 26.10.2007 20:30
4 задачи, Паскаль VirtuozZz Помощь студентам 9 26.04.2007 22:41