Тема: введення/виведення з файлу

1.) ось створив програму, повинна працювати, але не знаю як записати в txt файл ось ці дані (прикріплені в зображенні)  щоб програма правильно їх зчитала, саме завдання звучить так: "Вхідні величини представити у вигляді зовнішнього текстового файлу, вивести їх з файлу у змінні, а потім - вивести на екран у форматі". масив прикріплений в вигляді зображення.

program sdfsdf;
const k=5;
var 
n:array[1..k] of real;
m:integer;
a:real;
b,c,d:string[4];
i:integer; 
f:text;
begin
 assign(f,'lab.txt');
 reset(f);
 readln(f,n,m,a);
 for i:=1 to k do 
 read(f,n[i]);
 readln(f:text,b,c,d);
 close(f);
writeln('rezylt in file:');
write('n=');
for i:=1 to k do write(n[i]:2); 
writeln('m=',w:2,' a=',a:3);
writeln('WHILE=',b,' REPEAT=',c,' for=',d);
readln;
end.  

2.) у мене ще є програма, чисто теоретично вона працює, але так же як і у першій не знаю як записати масив в txt файл. саме завдання звучить так : "ввести масив даних з текстового файлу, вивести його в природному вигляді, вивести результат (знайти різницю між максимальним та мінімальним значенням) та записати в текстовий файл.

program sd;
const m=3;
type
mas=array[1..m,1..m] of integer;
var i,j:integer;
r:integer;
amax,amin:integer; 
a:mas;
fi,fo:text;
begin 
 assign(fi,'lab2.txt');
 reset(fi);
 assign(fo,'lab2.txt');
 rewrite(fo);
 for i:=1 to m do 
 for j:=1 to m do 
 read(fi,a[i,j]);
 close(fi);
 amax:=a[1.1]; amin:=a[1.1];
 for i:=1 to m do
 for j:=1 to m do 
 begin 
  if amax<a[i,j] then amax:=a[i,j];
  if  amin>a[i,j] then amin:=a[i,j];
  end;
 r:=amax-amin;
writeln(fo,'rezult R=',r:4);
close(fo);
readln;
end.
Post's attachments

Снимок.JPG 24.97 kb, 344 downloads since 2014-04-27 

2

Re: введення/виведення з файлу

0. Робіть відступи по 2 пробіли.
1. Текст завдання трохи "по-дебільному написаний", але в будь-якому разі readln читає один рядок (з файлу чи клавіатури), а потім розкладає його по змінних (хвіст рядка при цьому ігнорується). Можна сказати, що

readln(f,a,b,c);

еквівалентно

read(f,a);
read(f,b);
readln(f,c);

Ну от. А як прочитати щось із файлу - залежить від того, як ви його туди записали...

Подякували: lichmanmaksim1

3 Востаннє редагувалося Odin88 (27.04.2014 21:48:31)

Re: введення/виведення з файлу

Перше завдання:

type
  TArray = array[1..5] of real;
var
  f : text;
  n : TArray;
  m : integer;
  a : real;
  b : string[5];
  C : string[6];
  d : string[3];
  { будемо записувати сюди пропуски між string,можна опустити якщо в файлі все
  задати разом злито : 2.5 3.6 -2.8 -1.9 4.1 21 0.00109whilerepeatfor}
  pass : char;
begin
   assign(f,'input.txt');
  reset(f);
  read(f,n[1],n[2],n[3],n[4],n[5],m,a,pass,b,pass,C,pass,d);
  close(f);
  write(n[1]:0:1,#9,n[2]:0:1,#9,n[3]:0:1,#9,n[4]:0:1,#9,n[5]:0:1);
  writeln(m,#9,a:0:5,#9,b,#9,C,#9,d);
  readln;
  readln
end.

Input file(text) : 2.5 3.6 -2.8 -1.9 4.1 21 0.00109 while repeat for

Доречі не знаю чи правильно записав змінну a ,якась вона велика %)


Друге завдання :

const
 n = 3;
type
  TArray = array[1..3,1..3] of integer;
function differenceMaxMin(A : TArray): Integer;
var
  max,min : integer;
  i,j : integer;
begin
  max := A[1,1];
  min := A[1,1];
  for i := 1 to n do
    for j := 1 to n do
    begin
      if (A[i,j] > max) then max := A[i,j];
      if (A[i,j] < min) then min := A[i,j];
    end;
  result := max-min;
end;
var
  A : TArray;
  i,j : integer;
  f,output : text;
begin
  assign(f,'input.txt');
  reset(f);
  writeln('Our array:');
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      read(f,a[i,j]);
      write(a[i,j],#9);
    end;
    writeln;
    writeln;
  end;
  close(f);
  writeln('Difference between max and min =',differenceMaxMin(A));
  assign(output,'output.txt');
  rewrite(output);
  write(output,differenceMaxMin(A));
  close(output);
  readln;
  readln
end.

Input file(text) : числа записуємо в такому вигляді як вони є,перші три числа в першому рядку, другі три в другому і так по індукції.

Подякували: lichmanmaksim1

4 Востаннє редагувалося lichmanmaksim (28.04.2014 20:58:51)

Re: введення/виведення з файлу

ця програма повинна в масиві замінити від'ємні елементи номером стовпця в якому вони знаходяться.  я ось пробував видалити хоча б від'ємні елементи але чомусь не прицює.



type
  mas = array[1..2,1..5] of integer;
var
  i,j,n : integer;
  a : mas;
  f,f1 : text;
begin
  assign(f,'lab2.txt');
  reset(f);
  writeln('Масив чисел з документу:');
  for i := 1 to 2 do
  begin
    for j := 1 to 5 do
    begin
      read(f,a[i,j]);
      write(a[i,j],#9);
    end;
    writeln;
    writeln;
  end;
  close(f);
if a[i,j]<0 then
 for i := 1 to 2-1 do
   for j := 1 to 5-1 do
   a[i,j]:=a[i+1,j+1];
   n:=n-1;
 
  for i := 1 to 2 do
    for j := 1 to 5 do
    write(a[i,j],#9);
end.
Post's attachments

Снимо.JPG 10.17 kb, 320 downloads since 2014-04-28 

5

Re: введення/виведення з файлу

0. Почитайте правила форуму, зокрема, п.3.6.
1. Не давайте програмам безглуздих назв. Якщо не знаєте, що написати - не пишіть клаузу program взагалі. Ви тільки захаращуєте код і все.
2. Видалити елементи з масиву - складніша задача за заміну їх чимось.

6

Re: введення/виведення з файлу

дякую) я вже сам розібрався)