HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 22.04.2008, 22:07
lll6
Познающий
Регистрация: 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.
 
Ответить с цитированием

  #2  
Старый 22.04.2008, 22:16
WinTREI
Новичок
Регистрация: 14.03.2008
Сообщений: 28
С нами: 9556987

Репутация: 2
По умолчанию

спасибо конечно, но хотелось бы через процедуры и функции, там сложнее ><
 
Ответить с цитированием

  #3  
Старый 22.04.2008, 22:59
De-visible
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..
 
Ответить с цитированием

  #4  
Старый 22.04.2008, 22:31
De-visible
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..
 
Ответить с цитированием

  #5  
Старый 22.04.2008, 22:33
lll6
Познающий
Регистрация: 01.03.2008
Сообщений: 99
С нами: 9577084

Репутация: 51
По умолчанию

Цитата:
Сообщение от De-visible  
Там не "=" там ":="
Гы, точно, пропустил. Каюсь
 
Ответить с цитированием

  #6  
Старый 22.04.2008, 22:17
lll6
Познающий
Регистрация: 01.03.2008
Сообщений: 99
С нами: 9577084

Репутация: 51
По умолчанию

Как умею) Главное что бы работала
 
Ответить с цитированием

  #7  
Старый 22.04.2008, 22:22
WinTREI
Новичок
Регистрация: 14.03.2008
Сообщений: 28
С нами: 9556987

Репутация: 2
По умолчанию

Цитата:
Сообщение от lll6  
Как умею) Главное что бы работала
с меня то будут полную требывать
 
Ответить с цитированием

  #8  
Старый 23.04.2008, 07:56
krypt3r
Познавший АНТИЧАТ
Регистрация: 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..
 
Ответить с цитированием

  #9  
Старый 23.04.2008, 08:45
WinTREI
Новичок
Регистрация: 14.03.2008
Сообщений: 28
С нами: 9556987

Репутация: 2
По умолчанию

krypt3r, спасибо большое
 
Ответить с цитированием

  #10  
Старый 24.04.2008, 16:03
WinTREI
Новичок
Регистрация: 14.03.2008
Сообщений: 28
С нами: 9556987

Репутация: 2
По умолчанию

а можно переделать программы чтоб было ни через рандом, а по средствам ввода?
например сначало вывидиться *Введите кол-во элементов массива Х*, вводим кол-во, потом *Введите элементы:* вводим элементы, далее со вторым массивом так же и в конце выводится результат

з.ы. я еще не понел почему numel - 1 объясните пожалуйста)

Последний раз редактировалось WinTREI; 24.04.2008 в 16:10..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Американским студентам запретили пользоваться Skype KPOT_f!nd Мировые новости. Обсуждения. 1 28.09.2006 03:47
Любителям квестов сюда!! FoX's Болталка 10 25.01.2005 20:42



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.