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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 05.04.2012, 15:50   #11
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

вот в этом коде и ошибка, ведь вы тут пишите, что файл хранит блоки по ПЯТЬ массивов, а во второй проге уже вдруг по одному массиву
см. мой текст серого цвета ибо тут куча логических ошибок, а не программных
GreenWizard вне форума
Старый 05.04.2012, 15:54   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Женька Good Посмотреть сообщение
Задание, записать одномерный массив по формуле "round(10+random*(100-10))" в файл в одной программе и вывести его на экран с помощью другой программы.

Генерирую его вот этим программным кодом:
Код:
Program Z;
Uses Crt;
Type mas1=array [1..100] of integer;
type Xm=record
     a:mas1;
     a1:mas2;
     a2:mas2;
     a3:mas2;
     a4:mas2;
     end;
     myfile=file of Xm;
Var f1:myfile;
    i:integer;
    c1:Xm;
Begin
CLRSCR;
Randomize;
Assign(f1,'h:\OdMassiv');
rewrite(f1);
 For i:=1 to 100 do begin
  c1.a[i]:=round(10+random*(100-10));
  write(f1,c1);
 end;
 close(f1);
end.
Бред полнейший!

во-первых, зачем вам ПЯТЬ массиво внутри одной записи?!

во-вторых, зачем Вы 100 раз по 5 МАССИВОВ записываете?!?!??!!!

Код:
Program Z;
Uses Crt;
Type mas1=array [1..100] of integer;
type Xm=record
     a:mas1;
  end;
  myfile=file of Xm;
Var f1:myfile;
    i:integer;
    c1:Xm;
Begin
  CLRSCR;
  Randomize;
  Assign(f1,'h:\OdMassiv');
  rewrite(f1);
  {сначала генерим 100 элементов ОДНОЙ записи}
  For i:=1 to 100 do
    c1.a[i]:=round(10+random*(100-10));

  {потом записываем ОДИН раз}
  write(f1,c1);
  close(f1);
end.
Serge_Bliznykov вне форума
Старый 05.04.2012, 15:59   #13
Женька Good
Форумчанин
 
Регистрация: 15.03.2011
Сообщений: 126
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Бред полнейший!

во-первых, зачем вам ПЯТЬ массиво внутри одной записи?!

во-вторых, зачем Вы 100 раз по 5 МАССИВОВ записываете?!?!??!!!

Код:
Program Z;
Uses Crt;
Type mas1=array [1..100] of integer;
type Xm=record
     a:mas1;
  end;
  myfile=file of Xm;
Var f1:myfile;
    i:integer;
    c1:Xm;
Begin
  CLRSCR;
  Randomize;
  Assign(f1,'h:\OdMassiv');
  rewrite(f1);
  {сначала генерим 100 элементов ОДНОЙ записи}
  For i:=1 to 100 do
    c1.a[i]:=round(10+random*(100-10));

  {потом записываем ОДИН раз}
  write(f1,c1);
  close(f1);
end.
Ну вот теперь всё понятно, спасибо.
Женька Good вне форума
Старый 05.04.2012, 16:01   #14
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

прога-генератор:
Код:
Program Z;
Uses Crt;
Type mas1=array [1..100] of integer;
type Xm=record
     a:mas1;
     end;
     myfile=file of Xm;
Var f1:myfile;
    i,j:integer;
    c1:Xm;
Begin
CLRSCR;
Randomize;
Assign(f1,'h:\OdMassiv');
rewrite(f1);
// создаём ПЯТЬ  записей в файле
 For j:=1 to 5 do begin
 For i:=1 to 100 do 
  c1.a[i]:=round(10+random*(100-10));
  write(f1,c1);
 end;
 close(f1);
end.
чтение:
Код:
Program Y;
Uses Crt;
Type mas1=array [1..100] of integer;
type Xm=record
     a:mas1;
     end;
     myfile=file of Xm;
Var f1:myfile;
    i:integer;
    c1:Xm;
Begin
CLRSCR;
Randomize;
Assign(f1,'h:\OdMassiv');
reset(f1);
while not eof(f1) do begin
  read(f1,c1);
 // вывод прочитаного
 For i:=1 to 100 do 
    write('|', c1.a[i], '|');
  writeln('');
 end;
 close(f1);
end.
чуть опоздал)
GreenWizard вне форума
Старый 05.04.2012, 17:05   #15
Женька Good
Форумчанин
 
Регистрация: 15.03.2011
Сообщений: 126
По умолчанию

Как я понял, то чтобы начать формировать другой массив из чисел, которые мы записали в файл, нужно использовать "Seek()"
как мне записать его?
Код:
Program R;
Uses Crt;
Type mas1=array [1..100] of integer;
type Xm=record
     a:mas1;
  end;
  myfile=file of Xm;
Var f1:myfile;
    f2:myfile;
    i:integer;
    c1:Xm;
    
Procedure RecOd(f1:myfile);
Var i:integer;
Begin
  Randomize;
  Assign(f1,'h:\OdMassiv');
  rewrite(f1);
  For i:=1 to 100 do
    c1.a[i]:=round(10+random*(100-10));
  write(f1,c1);
  close(f1);
end;

{Procedure Create1(f2:myfile);
Var i:integer;
Begin
  Assign(f1,'h:\OdMassiv');
  reset(f1); }

Procedure ReadF(f1:myfile);
Var i:integer;
begin
 Assign(f1,'h:\OdMassiv');
 reset(f1);
 WriteLn('',FileSize(f1));
   Seek();
  While not eof(f1) do
   begin
   Read(f1,c1);
   for i := 1 to 100 do
   write('|',i,'=',c1.a[i],'|');
   end;
  Close(f1);
end;

Begin
 CLRSCR;
 RecOd(f1);
 readf(f1);
 Readln;
end.
Женька Good вне форума
Старый 05.04.2012, 18:34   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Как я понял, то чтобы начать формировать другой массив из чисел, которые мы записали в файл, нужно использовать "Seek()"
как мне записать его?
вы лучше задание (что вы пытаетесь сделать) полностью процитируйте.
а куда seek() вставить мы потом с вами разберемся!
Serge_Bliznykov вне форума
Старый 05.04.2012, 18:37   #17
Женька Good
Форумчанин
 
Регистрация: 15.03.2011
Сообщений: 126
По умолчанию

сформировать одномерный массив и записать его в 1 файл.
записать матрицу 3х3 сформированную из чисел, взятых из 1 файла с одномерным массивом, начиная с 15 числа по порядку во 2 файл.
Женька Good вне форума
Старый 30.10.2014, 01:28   #18
FireWindX
Новичок
Джуниор
 
Регистрация: 30.10.2014
Сообщений: 1
По умолчанию При компиляции пишет "Выход за пределы изменения индекса", ошибка в выделенной строке

var
x0,y0: real;
x,y,d: array[1..10] of real;
i: longint;
begin
readln(x0,y0);
for i:=1 to 10 do readln(x[i],y[i]);
for i:=1 to 10 do
d[i]:=sqrt(sqr(x[i]-x[0])+sqr(y[i]-y[0]));
if (d[i]<=30) then writeln ('Yes')
else writeln ('No');
end.
FireWindX вне форума
Старый 30.10.2014, 07:24   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Создай свою тему. Не лезь в чужую.

P.S. А ошибка потому что ты пишешь x[0], в то время как сама размерность массива начинается с единицы, и первый элемент надо писать так: x[1]
I'm learning to live...
Stilet вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выход за пределы массива NFXrus Помощь студентам 10 09.12.2011 23:13
выход за пределы массива(с++) Lazy maximka Помощь студентам 2 13.11.2011 16:11
ListBox, выход текста за пределы видимости _-Re@l-_ Общие вопросы Delphi 3 31.08.2011 14:51
C++ выход за пределы строки (char) Alex11223 Помощь студентам 4 20.04.2011 20:27
C++ - выход за пределы массива kefir Помощь студентам 5 12.06.2010 14:09