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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2009, 17:14   #1
Rise
Пользователь
 
Регистрация: 05.01.2009
Сообщений: 20
По умолчанию 3 задачи на одномерные массивы

Помогите пожалуйста решить 3 задачки на одномерные массивы.
И если не трудно подробно пояснить словами как заполнить массив буквами с помощью генератора случайных чисел.

Вот попытка сделать 2-ю задачу. Остановился на том, что при вставке мин. элемента - элемент после макс. заменяется, а необходимо его сдвинуть. С индексами там совсем запутался.
Код:
Program Ex2;
uses crt;
var
   a:array[1..100] of integer;
   max,min,nmax,nmin,n,i,c:integer;
begin
clrscr;
   randomize;
   write ('Введите количество элементов');
   readln (n);
   for i:=1 to n do

       a[i]:=random (100);
       writeln ('Исходный массив');
       for i:=1 to n do
           write (a[i]:4);
   max:=a[1]; nmax:=1;
   min:=a[1]; nmin:=1;
   for i:=1 to n do
       begin
         if a[i]>max then
                     begin
                       max:=a[i];
                       nmax:=i;
                     end;
         if a[i]<min then
                     begin
                       min:=a[i];
                       nmin:=i;
                     end;
       end;
   for i:=1 to n do
                begin
                c:=a[nmax+1];
                a[nmax+1]:=a[nmin];
                end;
writeln;
writeln ('Новый массив');
for i:=1 to n do
    write (a[i]:4);
readkey;
end.
Изображения
Тип файла: jpg 1 020.jpg (40.2 Кб, 133 просмотров)
Rise вне форума Ответить с цитированием
Старый 06.01.2009, 17:31   #2
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
По умолчанию 1)

uses crt;
var m,m2:array [1..100] of integer;
i,r,j:integer;
begin
clrscr;
writeln('Введите размер массива:');
readln(r);
randomize;
for i:=1 to r do
m[i]:=random(100);{Заполнение массива злучайными значениями}
for i:= 1 to r do
if not odd(i) then{Проверка числа на четность}
begin
inc(j);
m2[j]:=m[i];{Заполнение элементов второго массива четными значениями}
write(m2[j],' ');
end;
readln
end.

Последний раз редактировалось pomoshnic; 06.01.2009 в 20:51.
pomoshnic вне форума Ответить с цитированием
Старый 06.01.2009, 18:07   #3
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
Счастье 3) (С тебя отзыв))

Код:
var a:array[1..100] of char;
c:char;
p,n,r,i,j:byte;
begin
write('Введите размер массива: ');
readln(n);
randomize;
for i:= 1 to n do
begin
r:=random(25); r:=r+97;
a[i]:=chr(r);
r:=random(2);
if r=0 then a[i]:=upcase(a[i]);
write(a[i],' ');
end;
writeln;
readln;

p:=n div 2;
for i:=1 to p do
begin
c:=a[i];
a[i]:=a[i+p];
a[i+p]:=c;
end;

for i:=1 to n do write(a[i],' ');
writeln;
readln;

for j:=1 to n do
for i:= 1 to n do
{if i<>j then}
if upcase(a[i]) < upcase(a[j]) then
begin
c:=a[i];
a[i]:=a[j];
a[j]:=c;
end;
for i:=1 to n do
write(a[i],' ');
readln;
end.

Последний раз редактировалось pomoshnic; 06.01.2009 в 19:20.
pomoshnic вне форума Ответить с цитированием
Старый 06.01.2009, 19:53   #4
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

а разве в первой задаче не имеется в виду элементы с нечетными номерами, тобишь нечетные индексы массива?
capta1n вне форума Ответить с цитированием
Старый 06.01.2009, 20:17   #5
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Мой вариант с динамической памятью 1 задачи:
Код:
program mas;
const
 n = 11;
var
 A : array [1..n] of ^integer;
 B : array [1..trunc(n/2)] of ^integer;
 i,k : byte;
begin
  Randomize;
  for i:=1 to n do
  begin
    new (A[i]);
    A[i]^:=random(100)-50;
    write (A[i]^,'||')
  end;

  writeln;
  k:=0;
  for i:=1 to n do
   if odd(i) then dispose (A[i])
             else
             begin
               k:=k+1;
               write (A[i]^,'''');
               B[k]:=A[i]
             end;
  readln
end.
capta1n вне форума Ответить с цитированием
Старый 06.01.2009, 20:44   #6
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
Восклицание

Чтото неработает твой
Цитата:
Сообщение от capta1n Посмотреть сообщение
вариант с динамической памятью
pomoshnic вне форума Ответить с цитированием
Старый 06.01.2009, 20:55   #7
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
Смущение

Цитата:
Сообщение от capta1n Посмотреть сообщение
а разве в первой задаче не имеется в виду элементы с нечетными номерами, тобишь нечетные индексы массива?
Всё, исправил.
pomoshnic вне форума Ответить с цитированием
Старый 06.01.2009, 21:26   #8
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

У меня все работает, правда работает в Free Pascal, в турбо паскаль - да согласен - пишет что несоответствуют типы - блин потому что борланд паскаль туповат )) - тип один и тот же - указатель на целую переменную ( ^integer) - а ругается, потому что массивы разной длины - бреееееееееед ))))
ну в общем могу исправить под турбо паскаль - Free Pascal поумнее будет - компилятор-то новый ( недавно вышел )
ну в общем вот код:
Код:
program mas;
const
 n = 11;
var
 A,B : array [1..n] of ^integer;
 i,k : byte;
begin
  Randomize;
  for i:=1 to n do
  begin
    new (A[i]);
    A[i]^:=random(100)-50;
    write (A[i]^,'||')
  end;

  writeln;
  k:=0;
  for i:=1 to n do
   if odd(i) then dispose (A[i])
             else
             begin
               k:=k+1;
               write (A[i]^,'''');
               B[k]:=A[i]
             end;
  readln
end.
capta1n вне форума Ответить с цитированием
Старый 06.01.2009, 21:27   #9
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Так что не серчайте )) я не виноват ))
capta1n вне форума Ответить с цитированием
Старый 06.01.2009, 21:35   #10
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

код 2 программы: теперь проверена и на Borland Pascal 7.0 xD. Спасибо, помощник, что сказали насчет неработоспособности в BorPas, а то реально все программы, которые я пишу - все пишу под Free Pascal, который "умнее" чем Борланд, поэтому зачастую ( я это и раньше замечал ) Борланд не компилит то, что компилит Фри - спасибо, что предупредили - а то сейчас бы понаписал программ людям, а они не работают - нехорошо
Код:
program mas;
uses crt;
const
 n = 10;
var
 A : array [1..n] of integer;
 i, i1, i2 : byte;
 t, max, min : integer;
begin
  clrscr;
  Randomize;
  max:=-70;
  min:=70;
  for i:=1 to n do
  begin
    A[i]:=random(100)-50;
    if A[i]>max then
    begin
      i1:=i;
      max:=A[i1]
    end;
    if A[i]<min then
    begin
      i2:=i;
      min:=A[i2]
    end;
    write (A[i],'||')
  end;

  writeln;
  writeln (min,' ',max);

  t:=A[i2];
  i:=i2;
  if i2<i1 then
   while A[i-1]<>max do
   begin
     A[i]:=A[i+1];
     A[i+1]:=t;
     i:=i+1
   end
  else
   while A[i-1]<>max do
   begin
     A[i]:=A[i-1];
     A[i-1]:=t;
     i:=i-1
   end;
  for i:=1 to n do write (A[i],'||');
  readln
end.
capta1n вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи на C++ на одномерные массивы Many man Помощь студентам 17 29.04.2011 16:59
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12
задачи на одномерные массивы в VBA fidot Помощь студентам 1 25.12.2008 16:47