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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2007, 19:42   #1
Jodu
Пользователь
 
Регистрация: 30.10.2007
Сообщений: 30
По умолчанию массив

делал задание с массивом,часть задания сделал,вторая часть вообще не идет.

помогите пожалуйста.
а)исправить:
1.неправильно считает порядковые номера грузов массой>10тонн
б)сделать:
2.сформировать новый массив B[n] из грузов массой меньшей или раной 10 тонн.
3. Определить максимальную массу груза и его номер в массиве B.


Код:
program maccuB;
var
z:array[1..15] of real;
mg:real;
i,k,n,m:integer;
begin
for i:=1 to 15 do
begin
writeln ('vvedute maccy gryza do 30 tonn') ;
readln (z[i]) ;
end;
mg:=0;
for i:=1 to 15 do
mg:=mg+z[i] ;
writeln ('macca gryza', mg:9:2 );
m:=0;
n:=0;
for i:=1 to 15 do begin
if (z[i]>10) then begin
m:=m+1;
n:=n+1;
writeln ('nomepa gpyzov c maccou bolee 10 tonn  -  ',n);
end;
end;
writeln ('chuclo gryzov c maccou bolee 10 tonn  -  ',m);
end.

Последний раз редактировалось Alex21; 30.10.2007 в 20:20. Причина: оформляем код, с использованием тегов
Jodu вне форума Ответить с цитированием
Старый 30.10.2007, 19:51   #2
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

Код:
for i:=1 to 15 do begin
if (z[i]>10) then begin
m:=m+1;
n:=n+1;
writeln ('nomepa gpyzov c maccou bolee 10 tonn - ',n);
end;
end;
Тут у тебя должно выводить порядковый номер груза массо которого больше 10т, n у тебя считает количество таких грузов как и m, а не находит порядковый номер, в принципе n тут лишнее, код должен выглядень примерно так:
Код:
for i:=1 to 15 do begin
if (z[i]>10) then  begin
m:=m+1;
writeln ('nomepa gpyzov c maccou bolee 10 tonn - ',i);
end;
end;
Я не маюсь бездельем, я от него тащусь!
Tayfun вне форума Ответить с цитированием
Старый 30.10.2007, 20:00   #3
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

то было раз... Добовляет в ентот код второе условие
Код:
for i:=1 to 15 do begin
if (z[i]>10) then  begin
m:=m+1;
writeln ('nomepa gpyzov c maccou bolee 10 tonn - ',i);
end;
end;
Теперь делаем модиффикацию(параллельно добавляя 3 задание) и получаем:
Код:
n:=0;
for i:=1 to 15 do begin
if (z[i]>10) then  begin
m:=m+1;
writeln ('nomepa gpyzov c maccou bolee 10 tonn - ',i);
end else begin
n:=n+1;
b[n]:=z[i];
if b[n]>max then begin max:=b[n]; k:=n; end;
end;
end;
Вот у тебя есть и массив B[n], max- максимальный его эллемент и его порядковый номер (k) в массиве B[n].
Я не маюсь бездельем, я от него тащусь!
Tayfun вне форума Ответить с цитированием
Старый 30.10.2007, 20:53   #4
Jodu
Пользователь
 
Регистрация: 30.10.2007
Сообщений: 30
По умолчанию

1 часть исправлена.

2 чет пишет ошибку там где end else...
max нужно описыватЬ!?или паскаль понимает этот оператор?!
Jodu вне форума Ответить с цитированием
Старый 30.10.2007, 21:37   #5
Jodu
Пользователь
 
Регистрация: 30.10.2007
Сообщений: 30
По умолчанию

подскажите как описать тот новый массив который нужно сформировать,ведь я не знаю сколько в нем получится элементов.и что делать с max?!описывать как integer?

в этой строчке ошибка:
Код:
end else begin
n:=n+1;
b[n]:=z[i];
if b[n]>max then begin max:=b[n]; k:=n; end;
end;
end;

Последний раз редактировалось Jodu; 30.10.2007 в 21:54.
Jodu вне форума Ответить с цитированием
Старый 31.10.2007, 15:17   #6
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Вот тебе примерчик работа с Динамическим массивом.
Из первого массива A создается второй массив B, из значений меньших 10.
Код:
var
a:array[1..15] of real; //исходный массив
b:array of real; // новый массив
i,n:integer;
begin
  randomize;
  n:=0;
  for i:=1 to 15 do
  begin
    a[i]:=Random(50);
    if a[i]<10 then
    begin
    {задаем новый размер массива +1}
      SetLength(b,n+1);
      n:=n+1;
      b[n-1]:=a[i];
    end;
    writeln(a[i]:2:1);
  end;
  writeln('----------');
  for i:= 0 to n-1 do
  Writeln(b[i]:2:1);  // вывод
  readln;
end.
Свяжи это с тем, что привел Тайфун.
Alex21 вне форума Ответить с цитированием
Старый 31.10.2007, 19:15   #7
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

Проверь еще раз... У меня все прекрастно работает, а ты не пробовал в разделе описания переменных описать max и массив b-?
Я не маюсь бездельем, я от него тащусь!
Tayfun вне форума Ответить с цитированием
Старый 31.10.2007, 20:29   #8
Jodu
Пользователь
 
Регистрация: 30.10.2007
Сообщений: 30
По умолчанию

спасибо за помощь...получилось сделать по другому, через константу n=15(т.к. в новом массиве не может быть больше элементов.)

Осталось найти максимальный элемент в новом массиве и его номер.сейчас добавлю то,что тайфун написал, если не получится,напишу...)

Код:
program maccuB;
uses crt;
const n=15;
var
z:array[1..15] of real;
b:array[1..n] of real;
mg:real;
i,k,m,s,n1:integer;
begin clrscr;
for i:=1 to 15 do
begin
writeln ('vvedute maccy ',i,' gryza do 30 tonn') ;
readln (z[i]) ;
end;
writeln ('ucxodnuu maccuB');
for i:=1 to 15 do
write (' ',z[i]:5:2);
writeln;
mg:=0;
for i:=1 to 15 do
mg:=mg+z[i] ;
writeln ('macca gryza', mg:9:2 );
n1:=0;
for i:=1 to 15 do
if (z[i]>10) then begin
s:=s+1;
writeln ('nomepa gpyzov c maccou bolee 10 tonn  -  ', i);
end else begin
n1:=n1+1;
b[n1]:=z[i];
end;
writeln ('noBuu maccu B[n1] -  ');
for i:=1 to n1 do
write (' ',b[i]:5:1);
writeln;

writeln ('chuclo gryzov c maccou >10 tonn  -  ',s);

end.
Jodu вне форума Ответить с цитированием
Старый 31.10.2007, 20:40   #9
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

Уважаю что решаешь сам, если что вот рабочий код...
Код:
program maccuB;
uses crt;
var
b,z:array[1..15] of real;
max,mg:real;
i,k,n,m:integer;
begin
for i:=1 to 15 do
begin
writeln ('vvedute maccy gryza do 30 tonn') ;
readln (z[i]) ;
end;
mg:=0;
for i:=1 to 15 do
mg:=mg+z[i] ;
writeln ('macca gryza', mg:9:2 );
m:=0;
n:=0;
for i:=1 to 15 do begin
if (z[i]>10) then  begin
m:=m+1;
writeln ('nomepa gpyzov c maccou bolee 10 tonn - ',i);
end else begin
n:=n+1;
b[n]:=z[i];
if b[n]>max then begin max:=b[n]; k:=n; end;
end;
end;
writeln;
for i:=1 to n do write(b[i]:1:2,' ');
writeln;
writeln('MAKSIMALYNIY GRUZ->',max:1:2,' POZICIYA->',k);
readkey;
end.
Я не маюсь бездельем, я от него тащусь!

Последний раз редактировалось Tayfun; 31.10.2007 в 20:43.
Tayfun вне форума Ответить с цитированием
Старый 31.10.2007, 21:08   #10
Jodu
Пользователь
 
Регистрация: 30.10.2007
Сообщений: 30
По умолчанию

все работает,спасибо.


один вопросик
А что выполняет оператор readkey ?
п.с. у меня без него работает+)
Jodu вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив Айвенго PHP 2 22.02.2008 16:34
Массив.С++ bloo[d] Помощь студентам 1 13.01.2008 14:55
массив! Jodu Помощь студентам 2 11.01.2008 20:59
Массив xxxPascalxxx Помощь студентам 10 05.01.2008 16:19
Массив Snake_ua Помощь студентам 2 15.10.2007 07:04