Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 20.12.2012, 11:55   #1 (permalink)
hamchuk250894
Member
 
Регистрация: 09.12.2012
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Паскаль, файлы

Посмотрите пожалуйста верно ли написана программа для таких вот заданий: Задание №1
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Определить первое по порядку отрицательное и последнее положительное числа и их позиции в файле (нумерация данных в файле начинается с нуля). Предусмотреть случай, когда таких чисел в файле нет. Оставить в файле только числа, находящиеся между ними.
Program Variant_8;
var n, i, x, y: integer;
a:array[0..20] of integer;

begin

WriteLn('Laboratornaya rabota #8_1');
WriteLn('Variant #8');
WriteLn('IS-12-2');
WriteLn('Hamchuk Evgeniy');
WriteLn;

writeln('Input of numbers, the end input - 0');
assign(output, 'C:\users\STEAM\output.txt'); rewrite(output);

n := -1;
x := -1;
y := -1;
while(true) do
begin
read(i);
if i = 0 then
break;
write(i, ' ');
n := n + 1;
end;

close(output);
assign(input, 'C:\users\STEAM\output.txt’); reset(input);
for i := 0 to n do
begin
read(a[i]);
if (a[i] < 0) and (x < 0) then
x := i;
if a[i] > 0 then
y := i;
end;

close(input);
assign(output, 'C:\users\STEAM\output.txt’); rewrite(output);
if x = -1 then
writeln('There are no negative numbers')
else if y = -1 then
writeln(' There are no positive numbers')
else
for i := x + 1 to y - 1 do
write(a[i], ' ');
end.
Задание №2
Создать текстовый файл, в который построчно записать прямоугольный массив massivnm, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размеры массива n и m задать константами. Границы диапазона v_min и v_max задать с консоли. Вывести на экран строку с минимальной суммой элементов и столбец с максимальной суммой элементов. При чтении из файла считать размеры массива неизвестными. Определить их при чтении файла.
Program Variant_8;
var n, m, i, j, v_min, v_max, min, max: integer;
s : array [1..20] of integer;
a:array[1..20, 1..20] of integer;

begin

WriteLn('Laboratornaya rabota #8_2');
WriteLn('Variant #8');
WriteLn('IS-12-2');
WriteLn('Hamchuk Evgeniy');
WriteLn;

writeln('Inter v_min и v_max');
readln(v_min, v_max);

assign(output, 'C:\users\STEAM\output.txt'); rewrite(output);
writeln('4 5');
for i := 1 to 4 do
begin
for j := 1 to 5 do
write(random(v_max - v_min+1)+ v_min, ' ');
writeln;
end;

close(output);
assign(input, 'C:\users\STEAM\output.txt'); reset(input);

readln(n, m);
min := 1;
max := 1;
for i := 1 to n do
begin
s[i] := 0;
for j := 1 to m do
begin
read(a[i, j]);
s[i] := s[i] + a[i, j];
end;
if s[i] < s[min] then
min := i;
end;
close(input);

for j := 1 to m do
begin
s[j] := 0;
for i := 1 to n do
s[j] := s[j] + a[i, j];
if s[j] > s[max] then
max := j;
end;

assign(output, 'C:\users\STEAM\answer.txt'); rewrite(output);
writeln('Stroka s min summoy elementov - ', min);
writeln('Stolbec s max summoy elementov - ', max);
close(output);
end.
Миниатюры
aacuiyiiue.jpg   aacuiyiiue2.jpg  
hamchuk250894 вне форума   Ответить с цитированием

Старый 20.12.2012, 11:55
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Прочитайте, и я уверен, что ситуация станет ясней

Файлы в Паскаль
Типизированные файлы, Паскаль

Старый 20.12.2012, 16:39   #2 (permalink)
hamchuk250894
Member
 
Регистрация: 09.12.2012
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Буду очень благодарен если поможете исправить ошибки, если они есть.
hamchuk250894 вне форума   Ответить с цитированием
Старый 20.12.2012, 16:51   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от hamchuk250894 Посмотреть сообщение
Буду очень благодарен если поможете исправить ошибки, если они есть.
Подробно посмотрю, когда будет время. А пока сразу претензия: в первом задании требуется работать с типизированными числовыми файлами, а не с текстовыми. Исправьте.
И еще вопрос: какой у Вас Паскаль? Потому что с файлами input, output, создаваемыми по умолчанию, я встречался только в ископаемом ANSI-Паскале и полагал, что подобная чушь давно и прочно забыта. Просветите, пожалуйста.
Vladimir_S вне форума   Ответить с цитированием
Старый 20.12.2012, 17:02   #4 (permalink)
hamchuk250894
Member
 
Регистрация: 09.12.2012
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Я делаю через Pascal ABC.net, исправьте пожалуйста как время будет, потому что я не могу понять как там сделать.
hamchuk250894 вне форума   Ответить с цитированием
Старый 20.12.2012, 17:06   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от hamchuk250894 Посмотреть сообщение
Я делаю через Pascal ABC.net
Понятно. Молчу, молчу, молчу. Всё-таки тут дамы...
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 20.12.2012, 17:08   #6 (permalink)
hamchuk250894
Member
 
Регистрация: 09.12.2012
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Я просто пока новичок в программировании, а нам толком ничего не объясняют. Я над этой работой долго думал и уже ничего в голову не приходит.
hamchuk250894 вне форума   Ответить с цитированием
Старый 20.12.2012, 17:24   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от hamchuk250894 Посмотреть сообщение
Я просто пока новичок в программировании,
Да это я не в Ваш адрес, а по поводу АВС. Терпеть ненавижу, как говорил герой одного советского фильма. Ладно, посмотрю, как время выберу.
Vladimir_S вне форума   Ответить с цитированием
Старый 20.12.2012, 17:27   #8 (permalink)
hamchuk250894
Member
 
Регистрация: 09.12.2012
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Хорошо. Заранее спасибо.
hamchuk250894 вне форума   Ответить с цитированием
Старый 20.12.2012, 20:45   #9 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Посмотрите вариант первой задачи. Я сделал без массива, но с двумя файлами. Имена файлов и пути поправьте, как Вам надо. И не удивляйтесь, если, открыв в текстовом редакторе созданные программой файлы, Вы вместо чисел увидите непонятный набор символов. Так и должно быть, это свойство типизированных файлов. В отличие от текстовых.
Код:
Program Variant_8;
var
 i,i1,i2,x: integer;
 f,f1:file of integer;

Begin

 WriteLn('Laboratornaya rabota #8_1');
 WriteLn('Variant #8');
 WriteLn('IS-12-2');
 WriteLn('Hamchuk Evgeniy');
 WriteLn;

 Assign(f,'D:\xxx');
 Rewrite(f);
 Writeln('Input of numbers, the end input - 0');

 i:=0;
 Repeat
  write('Element N',i,': ');
  readln(x);
  if x<>0 then write(f,x);
  Inc(i);
 Until x=0;
 Writeln;
 Close(f);

 Reset(f);
 Repeat
  read(f,x);
  write(x:4);
 Until EoF(f);
 Writeln;
 Writeln;

 i:=-1;
 i1:=-1;
 i2:=-1;

 Reset(f);
 Repeat
  Inc(i);
  Read(f,x);
  If x<0 then i1:=i;
 Until (x<0) or EoF(f);

 i:=-1;

 Reset(f);
 Repeat
  Inc(i);
  Read(f,x);
  If x>0 then i2:=i;
 Until EoF(f);

 If i1=-1 then
  Writeln('File contains no negative elements') else
 If i2=-1 then
  Writeln('File contains no positive elements') else
 If Abs(i2-i1)=1 then
  Writeln('There are no elements between first negatine and last positive') else
 begin
  if i1>i2 then
   begin
    x:=i1;
    i1:=i2;
    i2:=x;
   end;
  Reset(f);
  Assign(f1,'D:\yyy');
  Rewrite(f1);
  i:=-1;
  repeat
   inc(i);
   read(f,x);
   if (i>i1) and (i<i2) then write(f1,x);
  until EoF(f);
  Close(f);
  Close(f1);
  Reset(f1);
  repeat
   read(f1,x);
   write(x:4);
  until EoF(f1);
  Close(f1);
 end;
 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Старый 21.12.2012, 13:52   #10 (permalink)
hamchuk250894
Member
 
Регистрация: 09.12.2012
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Владимир, у меня вылетает такая вот ошибка. И в файле написана только одна строка. Так и должно быть или что то не так?
Миниатюры
aacuiyiiue.jpg  
hamchuk250894 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 21:17.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.