
22.04.2008, 22:07
|
|
Познающий
Регистрация: 01.03.2008
Сообщений: 99
С нами:
9577084
Репутация:
51
|
|
2)
Код:
program vtoraia;
const n=10;
var x,t:integer; a,b:array [1..n] of integer;
begin
t:=1;
for x:=1 to n do
a[x]:=random (100);
for x:=1 to n do
if a[x]<>0 then begin b[t]=a[x]; t:=t+1; end;
for x:=1 to t do
writeln (b[x],' ');
readln
end.
|
|
|

22.04.2008, 22:16
|
|
Новичок
Регистрация: 14.03.2008
Сообщений: 28
С нами:
9556987
Репутация:
2
|
|
спасибо конечно, но хотелось бы через процедуры и функции, там сложнее ><
|
|
|

22.04.2008, 22:59
|
|
Banned
Регистрация: 06.01.2008
Сообщений: 904
С нами:
9655526
Репутация:
1821
|
|
Сообщение от WinTREI
спасибо конечно, но хотелось бы через процедуры и функции, там сложнее ><
Ничего сложного там нет
program vtoraia;
const n=10;
var x,t:integer; a,b:array [1..n] of integer;
begin
t:=1;
for x:=1 to n do
a[x]:=random (100);
for x:=1 to n do
if a[x]<>0 then begin b[t]=a[x]; t:=t+1; end;
for x:=1 to t do
writeln (b[x],' ');
readln
end.
Вот по его примеру составил функцию:
Код:
program MasSiv;
Function Massiv(a:array of integer;n:integer):string;{Это и есть наша функция:)}
var x,t:integer;
b:array [1..500] of integer;
begin
t:=1;
for x:=1 to n do
a[x]:=random (20);
for x:=1 to n do
if a[x]<>0 then
begin
b[t]:=a[x];
inc(t);{тоже самое что и t:=t+1}
end;
for x:=1 to n do
write (a[x],' ');{Выводим исходный массив(для сравнения)}
Writeln;
Writeln;
for x:=1 to t-1 do
write (b[x],' ');{Выводим полученный массив}
readln;
end;
const n=20;{n элементов в массиве}
var
a:array [1..n] of integer;
begin
Massiv(a,n);{Используем нашу функцию:)}
end.
Последний раз редактировалось De-visible; 22.04.2008 в 23:15..
|
|
|

22.04.2008, 22:31
|
|
Banned
Регистрация: 06.01.2008
Сообщений: 904
С нами:
9655526
Репутация:
1821
|
|
Сообщение от lll6
2)
Код:
program vtoraia;
const n=10;
var x,t:integer; a,b:array [1..n] of integer;
begin
t:=1;
for x:=1 to n do
a[x]:=random (100);
for x:=1 to n do
if a[x]<>0 then begin b[t]=a[x]; t:=t+1; end;
for x:=1 to t do
writeln (b[x],' ');
readln
end.
У тебя ошибка:
Код:
if a[x]<>0 then begin b[t]=a[x]; t:=t+1; end;
Точнее:
Код:
then begin b[t]=a[x]
Там не "=" там ":="
Еще посмотри на свой код:
Код:
begin
t:=1;
for x:=1 to n do
a[x]:=random (100);
for x:=1 to n do
if a[x]<>0 then begin b[t]=a[x]; t:=t+1; end;
for x:=1 to t do
writeln (b[x],' ');
readln
end.
Точнее:
ЗАЧЕМ ТЫ ПИШЕШЬ ТАК:
Код:
if a[x]<>0 then begin b[t]=a[x]; t:=t+1; end;
Этот цикл( for x:=1 to t do
writeln (b[x],' ');)
Длится не до t, а до t-1;
Последний раз редактировалось De-visible; 22.04.2008 в 23:22..
|
|
|

22.04.2008, 22:33
|
|
Познающий
Регистрация: 01.03.2008
Сообщений: 99
С нами:
9577084
Репутация:
51
|
|
Сообщение от De-visible
Там не "=" там ":=" 
Гы, точно, пропустил. Каюсь 
|
|
|

22.04.2008, 22:17
|
|
Познающий
Регистрация: 01.03.2008
Сообщений: 99
С нами:
9577084
Репутация:
51
|
|
Как умею) Главное что бы работала 
|
|
|

22.04.2008, 22:22
|
|
Новичок
Регистрация: 14.03.2008
Сообщений: 28
С нами:
9556987
Репутация:
2
|
|
Сообщение от lll6
Как умею) Главное что бы работала 
с меня то будут полную требывать 
|
|
|

23.04.2008, 07:56
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
С нами:
10021597
Репутация:
905
|
|
De-visible, не совсем условию соответствует
Ввод массивов выполнять в процедуре, а нахождение максимального
элемента - в функции.
Еще вариант.
Задача 1
Код:
program Zodacha_one;
const
XSize = 5;
YSize = 11;
procedure fillmassive (numel : integer; var a : array of integer);
var
i : integer;
begin
randomize;
for i := 0 to numel - 1 do
a[i] := Random (100);
end;
function getmax (numel : integer; a : array of integer) : integer;
var
i, max : integer;
begin
i := 0;
max := a[i];
while i < numel do begin
if a [i] > max then
max := a [i];
i := i + 2;
end;
getmax := max;
end;
var
x : array [1..XSize] of integer;
y : array [1..YSize] of integer;
i, max : integer;
begin
fillmassive (XSize, x);
for i := 1 to XSize do
write (x[i], ' ');
writeln;
max := getmax (XSize, x);
writeln ('Max = ', max);
fillmassive (YSize, y);
for i := 1 to YSize do
write (y[i], ' ');
writeln;
max := getmax (YSize, y);
writeln ('Max = ', max);
end.
Задача 2
Код:
program ZodachaTwo;
const
Size = 30;
type
TMassive = array [0..Size - 1] of integer;
procedure FillMassive (numel : integer; var a : TMassive);
var
i : integer;
begin
Randomize;
for i := 0 to numel - 1 do
a[i] := Random (10);
end;
function NotNullCount (numel: integer; a : TMassive) : integer;
var
i, cnt : integer;
begin
cnt := 0;
for i := 0 to numel - 1 do
if a[i] <> 0 then
cnt := cnt + 1;
NotNullCount := cnt;
end;
function DropNulls (numel : integer; a : TMassive) : TMassive;
var
i, j : integer;
t : TMassive;
begin
i := 0;
j := 0;
while i < numel do begin
if a [i] <> 0 then begin
t[j] := a [i];
j := j + 1;
end;
i := i + 1;
end;
DropNulls := t
end;
var
x, y : TMassive;
i, count : integer;
begin
FillMassive (Size, x);
for i := 0 to Size - 1 do
write (x[i], ' ');
writeln;
y := DropNulls (Size, x);
count := NotNullCount (Size, x);
for i := 0 to count - 1 do
write (y[i], ' ');
writeln;
end.
Последний раз редактировалось krypt3r; 23.04.2008 в 08:20..
|
|
|

23.04.2008, 08:45
|
|
Новичок
Регистрация: 14.03.2008
Сообщений: 28
С нами:
9556987
Репутация:
2
|
|
krypt3r, спасибо большое 
|
|
|

24.04.2008, 16:03
|
|
Новичок
Регистрация: 14.03.2008
Сообщений: 28
С нами:
9556987
Репутация:
2
|
|
а можно переделать программы чтоб было ни через рандом, а по средствам ввода?
например сначало вывидиться *Введите кол-во элементов массива Х*, вводим кол-во, потом *Введите элементы:* вводим элементы, далее со вторым массивом так же и в конце выводится результат
з.ы. я еще не понел почему numel - 1 объясните пожалуйста)
Последний раз редактировалось WinTREI; 24.04.2008 в 16:10..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|