Вводы и выводы бывают нескольких "видов". Есть простой, к примеру, и с переводом строки. Они различаются тем, как мы будем читать. read(тут должна быть переменная, которую вы считываете). Тут считывается что-то, и затем можно дальше продолжать работать. А readln(тут должна быть переменная, которую вы считываете) уже после считывания переходит на следующую строку. Можно так же подключить файл. Это происходит посредством команд. assign(название текстовой переменной, затем через запятую тут должно быть название файла или путь к нему в кавычках). Затем надо сделать reset(название переменной, с которй связан был ввод); Это простые примеры. Теперь вывод. Тут в принципе, то же самое. write(переменная или текст в кавычках) просто выводит после места, где мы на вводе\выводе остановились, пишет то, что нужно. А есть writeln(). он делает то же самое, затем переходит на следующую строку. Обьясним в примерах. Различие write и writeln Есть два куска программы. a:=10; b:=20; write(a); write(b); И второй. a:=10; b:=20; writeln(a); writeln(b); Они различаются лишь четырьмя буквами, но вывод первой будет 1020 А второй 10 20 Что бы, кстати, при первом цифры не слипались, можно воспользоваться текстом. Изменим строчку write(a); на строчку write(a,' '); и тогда вывод будет таким 10 20 Файловый вывод подключается так же. Однако есть различие. Там надо использовать вместо reset - rewrite и все. Ну и естественно, не путаем две переменные ввода и вывода. Вот простые примеры
Const N = 7; // количество наименований товаров Var A:array[1..N,1..3] of integer; i,k,S:integer; Begin For i:= 1 to N do Read(A[i,1],A[i,2],A[i,3]); k:=0; For i:= N downto 1 do if A[i,2] = 0 then k:=i; if k > 0 then Begin Write('00 - ',A[k,1]*A[k,3]); S:=0; For i:= k+1 to N do if A[i,2] = 0 then Begin Write('+',A[i,1]*A[i,3]); S:=S+A[i,1]*A[i,3]; End; if S <> 0 then Write('=',S+A[k,1]*A[k,3]); WriteLn; End; k:=0; For i:= N downto 1 do if A[i,2] = 1 then k:=i; if k > 0 then Begin Write('01 - ',A[k,1]*A[k,3]); S:=0; For i:= k+1 to N do if A[i,2] = 1 then Begin Write('+',A[i,1]*A[i,3]); S:=S+A[i,1]*A[i,3]; End; if S <> 0 then Write('=',S+A[k,1]*A[k,3]); WriteLn; End; k:=0; For i:= N downto 1 do if A[i,2] = 10 then k:=i; if k > 0 then Begin Write('10 - ',A[k,1]*A[k,3]); S:=0; For i:= k+1 to N do if A[i,2] = 10 then Begin Write('+',A[i,1]*A[i,3]); S:=S+A[i,1]*A[i,3]; End; if S <> 0 then Write('=',S+A[k,1]*A[k,3]); WriteLn; End; k:=0; For i:= N downto 1 do if A[i,2] = 11 then k:=i; if k > 0 then Begin Write('11 - ',A[k,1]*A[k,3]); S:=0; For i:= k+1 to N do if A[i,2] = 11 then Begin Write('+',A[i,1]*A[i,3]); S:=S+A[i,1]*A[i,3]; End; if S <> 0 then Write('=',S+A[k,1]*A[k,3]); WriteLn; End; End.
Есть два куска программы.
a:=10;
b:=20;
write(a);
write(b);
И второй.
a:=10;
b:=20;
writeln(a);
writeln(b);
Они различаются лишь четырьмя буквами, но вывод первой будет
1020
А второй
10
20
Что бы, кстати, при первом цифры не слипались, можно воспользоваться текстом. Изменим строчку
write(a); на строчку write(a,' '); и тогда вывод будет таким
10 20
Файловый вывод подключается так же. Однако есть различие. Там надо использовать вместо reset - rewrite и все. Ну и естественно, не путаем две переменные ввода и вывода. Вот простые примеры
N = 7; // количество наименований товаров
Var
A:array[1..N,1..3] of integer;
i,k,S:integer;
Begin
For i:= 1 to N do
Read(A[i,1],A[i,2],A[i,3]);
k:=0;
For i:= N downto 1 do
if A[i,2] = 0 then k:=i;
if k > 0 then
Begin
Write('00 - ',A[k,1]*A[k,3]);
S:=0;
For i:= k+1 to N do
if A[i,2] = 0 then
Begin
Write('+',A[i,1]*A[i,3]);
S:=S+A[i,1]*A[i,3];
End;
if S <> 0 then Write('=',S+A[k,1]*A[k,3]);
WriteLn;
End;
k:=0;
For i:= N downto 1 do
if A[i,2] = 1 then k:=i;
if k > 0 then
Begin
Write('01 - ',A[k,1]*A[k,3]);
S:=0;
For i:= k+1 to N do
if A[i,2] = 1 then
Begin
Write('+',A[i,1]*A[i,3]);
S:=S+A[i,1]*A[i,3];
End;
if S <> 0 then Write('=',S+A[k,1]*A[k,3]);
WriteLn;
End;
k:=0;
For i:= N downto 1 do
if A[i,2] = 10 then k:=i;
if k > 0 then
Begin
Write('10 - ',A[k,1]*A[k,3]);
S:=0;
For i:= k+1 to N do
if A[i,2] = 10 then
Begin
Write('+',A[i,1]*A[i,3]);
S:=S+A[i,1]*A[i,3];
End;
if S <> 0 then Write('=',S+A[k,1]*A[k,3]);
WriteLn;
End;
k:=0;
For i:= N downto 1 do
if A[i,2] = 11 then k:=i;
if k > 0 then
Begin
Write('11 - ',A[k,1]*A[k,3]);
S:=0;
For i:= k+1 to N do
if A[i,2] = 11 then
Begin
Write('+',A[i,1]*A[i,3]);
S:=S+A[i,1]*A[i,3];
End;
if S <> 0 then Write('=',S+A[k,1]*A[k,3]);
WriteLn;
End;
End.
Пример работы программы:
17 1 2
3 0 5
7 1 4
8 11 9
95 0 3
31 10 44
5 1 6
00 - 15+285=300
01 - 34+28+30=92
10 - 1364
11 - 72