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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2008, 22:41   #1
kiko
Пользователь
 
Аватар для kiko
 
Регистрация: 19.11.2008
Сообщений: 24
Восклицание помогите с задачей

В одномерном массиве, состоящем из 20 (размерность массива задается именованной константой) вещественных элементов, вычислить:

1) вывести все элементы, встречающиеся в массиве более одного раза.
2) произведение и количество элементов массива, расположенных между максимальным и минимальным элементами.
3) заменить все отрицательные элементы средним арифметическим значением элементов массива.
4) упорядочить элементы массива по возрастанию.

Программа должна содержать меню, позволяющее пользователю выбрать нужное действие. Каждый логически законченный фрагмент должен быть оформлен в виде процедуры. Основная программа должна содержать вызовы процедур.
нет ничего не возможного ...
kiko вне форума Ответить с цитированием
Старый 19.11.2008, 23:04   #2
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

4 задание:

Const n=10;
var Mas:array[1..n] of real;
c:real;
i,j:integer;
begin
for i:= 1 to n do
writeln(Mas[i]);


for i:=n downto 2 do {метод пузырька}
for j:=1 to i-1 do
if Mas[j]>Mas[j+1] then
begin
c:=Mas[j];
Mas[j]:=Mas[j+1];
Mas[j+1]:=c
end;

end.

Последний раз редактировалось Викдон; 19.11.2008 в 23:06.
Викдон вне форума Ответить с цитированием
Старый 19.11.2008, 23:17   #3
kiko
Пользователь
 
Аватар для kiko
 
Регистрация: 19.11.2008
Сообщений: 24
По умолчанию

спасибо
нет ничего не возможного ...
kiko вне форума Ответить с цитированием
Старый 19.11.2008, 23:20   #4
kiko
Пользователь
 
Аватар для kiko
 
Регистрация: 19.11.2008
Сообщений: 24
По умолчанию вот мои старания... работает но не правильно :confused:

program A3;
uses crt;
var
a:array [1..20] of integer;
b:array [1..20] of integer;
s,s4:real;
i,k,i1,k1,v,na4,koH:integer;
begin
clrscr;
writeln ('BBEDUTE koJl-BO eJleMeHToB MaccuBa');
readln (n);
writeln;
writeln;
v:=0;
s:=0;
s4:=0;
for i:=1 to n do begin
a[i]:=random(50)-25; writeln (a[i]:3); end;
writeln;
for i:=1 to n do begin
if (i div 2)=0 then
s4:=s4+a[i];
end;
writeln ('CyMMA eJleMeHToB c 4eTHbIMu HoMepaMu', s4:8:4);
writeln;
writeln;
for i:=1 to n do
if a[i]<0 then begin
na4:=i;
break;
end;
for i:=n downto 1 do
if a[i]=0 then begin
koH:=i;
break;
end;
if i1<k1 then begin
for i1:=na4 to koH do
for k1:=koH to na4 do
k1:=na4;
i1:=koH;
s:=s+e[i];
v:=v+1;
end;
for k:=1 to n-1 do
for i:=1 to n-i do
if a[i]>a [i+1] then begin
l:=a[i];
a[i]:=a[i+1];
a[i+1]:=l;
end;
for i:=1 to n do writeln (a[i]:3);
writeln;
k:=0;
for i:=1 to n do
if a[i]>=0 then begin
k:=k+1;
b[k]:=a[i];
end;
for i:=1 to n do
if a[i]<0 then begin
k:=k+1;
b[k]:=a[i];
end;
writeln('^^^^^^^^^^^^^^^^^^^^^^^^') ;
for i:=1 to n do writeln (b[i]:3);
writeln;
writeln ('CyMMa eJleMeHToB',s:8:4);
writeln ('koJl-Bo eJleMeHToB',v:8:4);
end;
end.
нет ничего не возможного ...
kiko вне форума Ответить с цитированием
Старый 19.11.2008, 23:41   #5
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

это вроде как не правильно(первое бросилось в глаза)
for k:=1 to n-1 do
for i:=1 to n-i do
if a[i]>a [i+1] then begin
l:=a[i];
a[i]:=a[i+1];
a[i+1]:=l;
end;

надо:
for i:=n downto 2 do {метод пузырька}
for j:=1 to i-1 do
if Mas[j]>Mas[j+1] then
begin
c:=Mas[j];
Mas[j]:=Mas[j+1];
Mas[j+1]:=c
end;
Викдон вне форума Ответить с цитированием
Старый 19.11.2008, 23:44   #6
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

for k:=1 to n-1 do
for i:=1 to n-i do
ты каждый раз будешь бегать до препоследнего элемента)) но это не влияет на работу))
Викдон вне форума Ответить с цитированием
Старый 20.11.2008, 05:22   #7
Fantoms01
 
Регистрация: 20.11.2008
Сообщений: 5
По умолчанию

Парни нужна помощь а то у меня зачет а прогу не могу сделать!
Задание такое! Введите данные в массив о числа туристов. Если известны их Фамилия, Пол, Возраст, найти самого старшего и вывести его на экран, и вывести на экран всех туристов возраст которых больше среднего. Масив необходимо записать в Фаил. И сделать меню из пунктов
1) Добавление туристов в фаил
2) Нахождение самого старшего
3) Туристы возраст которых выше среднего

Вот мои наброски но почемуто прога не работает

program poxod;
type
tyrist=record
fam:string[20];
pol:string[10];
vozr:integer;
end;

var
pox: array[1..40] of tyrist;
c:tyrist;
b: char;



var fil: file of tyrist;
filename: string[12];
tur:tyrist;
a: char;
i,n,m: integer;



procedure newfile;
begin
write ('vvedite name fila:');
readln (filename);
assign (fil, filename);
rewrite (fil);
end;

procedure openfile;
begin
write ('vvedite name file:');
readln (filename);
assign (fil, filename);
reset (fil);

end;

procedure vvod;
var
b: char;
i,n,m,d:integer;
k:real;
begin
newfile;

writeln('skolko vsego tyristov');
readln(n);
writeln('vv dannue po kazhdomy tyristy');
for i:=1 to n do
with pox[i] do begin
write('vv familiu',i,'tyrista');
readln(fam);
write('vv pol',i,'tyrista');
readln(pol);
writeln('vv vozrast',i,'tyrista');
readln(vozr);
readln;
end;
write(fil,tur);
writeln('turistov v faile ',filesize(fil));
end;



procedure star;

begin
for i:=1 to n-1 do Begin
for m:=i to n do
if pox[i]. vozr>pox[m].vozr then begin
c:=pox[i];
pox[i]:=pox[m];
pox[m]:=c;
readln;
end;
end;
end;

procedure sred;
var d,c:integer;
k:real;
begin
writeln(pox[n].fam:20,pox[n].pol:10,pox[n].vozr:3);
d:=0;
for i:=1 to n do
d:=pox[i].vozr+d;
k:=d/n;
writeln('srednii vozrast',k:2:2);
for i:=1 to n do
if pox[i].vozr>k then writeln(pox[i].fam:20,pox[i].pol:10,pox[i].vozr:3);
readln;
end;

procedure menu2;

var d:char;
begin
writeln ('1.vvod famili');
writeln ('2.poisk samogo starhego');
writeln ('3.poisk srednego vozrasta');

writeln ('vvedite nomer trebuemogo deistvia, i najmite ENTER');
readln(a);
case a of
'1': begin
vvod;
close(fil);
menu2;
end;

'2': begin
openfile;
star;
menu2;
end;

'3': begin
openfile;
sred;
menu2;
end;

else writeln ('nekorrektny vvod! perezapustite programmu!');
end;
end;




begin

writeln ('1.rabota s bazoi');
writeln ('2.Vihod');

writeln ('vvedite nomer trebuemogo deistvia, i najmite ENTER');
readln(b);
case b of
'1': begin
menu2;
end;

else writeln ('nekorrektny vvod! perezapustite programmu!');
end;
end.

Помогите плиз а то экзамены скоро и эта хрень весит!
Fantoms01 вне форума Ответить с цитированием
Старый 25.11.2008, 12:43   #8
Fantoms01
 
Регистрация: 20.11.2008
Сообщений: 5
По умолчанию

народ но помагите кто может!
Fantoms01 вне форума Ответить с цитированием
Старый 25.11.2008, 14:06   #9
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию Вторая часть

Код:
uses crt;
const n=20;
var a:array[1..n] of real;
    mult,min,max:real;
    i,l,r:integer;

begin
clrscr;
for i:=1 to n do
 begin
  a[i]:=random(10)+1;
  write(a[i]:5:1);
 end;
max:=a[1];min:=a[1];l:=1;r:=1;
 for i:=2 to n do
  if a[i]>max then begin
                    max:=a[i];
                    l:=i;
                   end
     else if a[i]<min then begin
                            min:=a[i];
                            r:=i;
                           end;
if l>r then begin
            i:=r;
            r:=l;
            l:=i;
            end;
writeln;
mult:=1;
for i:=l+1 to r-1 do
 mult:=mult*a[i];
writeln(r-l-1);
writeln(mult:4:1);
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 25.11.2008, 14:10   #10
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию Третья часть

Код:
uses crt;
const n=20;
var a:array[1..n] of real;
    mo:real;
    i:integer;

begin
clrscr;
for i:=1 to n do
 begin
  a[i]:=random(10)+1;
  write(a[i]:5:1);
 end;
mo:=0;
 for i:=1 to n do
  mo:=mo+a[i];
mo:=mo/n;
for i:=1 to n do
 if a[i]<0 then a[i]:=mo;
writeln;
for i:=1 to n do
write(a[i]:5:1);
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с задачей StakanpORTvejna Паскаль, Turbo Pascal, PascalABC.NET 1 11.10.2008 19:19
Помогите с задачей Лёха Паскаль, Turbo Pascal, PascalABC.NET 7 08.02.2008 20:08