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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2009, 17:37   #1
Absent
Пользователь
 
Регистрация: 18.11.2007
Сообщений: 67
Стрелка Считывание текстового файла в паскале

Составить программу, предусматривающую чтение исходных данных с дискового файла, контрольный вывод исходных данных в окно на левой части экрана и вывод результатов в окно на правой части экрана.

Заданы: массив наименований продукции и соответствующие ему данные плановой рентабельности (RP),фактической цены реализации (C) и себестоимости (S). Посчитать фактическую рентабельность (RF) каждого вида продукции RF = (c-s)/s
и выдать информацию о продукции, для которой фактическая рентабельность превышает плановую.

как я понял в текстовом файле будет хранится информация в виде

kreslo 3 5 1 3
stol 1 2 3 4
lampa 3 4 5 1
dom 2 3 1 5
Помогите пожалуйста исправить программу. Очень нужно.
Вот что получилось у меня:


Код:
pROGRAM GF  ;
USES crt;
var

A:array[1..20,1..20] of REAL;
RP,naz,c,s:array[1..20] of reaL;
Rf:array[1..20] of real;
ft:text;
i,j,k,n:integer;

begin
assign(ft,'E:\paskal.pas');
reset(ft);

repeat N:=n+1; k:=0 ;
read(ft,Naz[n]); N:=n+1;
repeat K:=k+1; read(ft,A[n,k])
until eoln(ft);
readln(ft)
until eof(ft);
close(ft);
for i:=1 to n do
for j:=1 to 3 do
begin
if j=1 then RP[i]:=A[i,j];
if J=2 then c[i]:=A[i,j];
if J=3 then s[i]:=A[i,j];
end;
For i:=1 to n do
RF[i]:=(c[i]-s[i])/s[i];
if RF[i]>RP then writeln(NAZ[i],', ') ;
end;
readln;
end.
Absent вне форума Ответить с цитированием
Старый 30.05.2009, 18:16   #2
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Прикрепите готовый исходный текстовый файл и посмотрим.
И скажите, что не получается? Или ошибки какие...

Код:
For i:=1 to n do
begin//видимо begin потеряли
RF[i]:=(c[i]-s[i])/s[i];
if RF[i]>RP[i] then writeln(NAZ[i],', ') ;//видимо так,иначе несоответствие типов
end;
readln;
end.

Последний раз редактировалось Arkuz; 30.05.2009 в 18:20.
Arkuz вне форума Ответить с цитированием
Старый 30.05.2009, 19:53   #3
Absent
Пользователь
 
Регистрация: 18.11.2007
Сообщений: 67
По умолчанию

Спасибо за помощь.

Код:
pROGRAM GF  ;
USES crt;
var

A:array[1..20,1..20] of REAL;
RP,naz,c,s:array[1..20] of reaL;
Rf:array[1..20] of real;
ft:text;
i,j,k,n:integer;

begin
assign(ft,'E:\sistem\BE.pas');
reset(ft);n:=0;

repeat N:=n+1; k:=0 ;
read(ft,Naz[n]); N:=n+1;
repeat K:=k+1; read(ft,A[n,k])
until eoln(ft);
readln(ft)
until eof(ft);
close(ft);
for i:=1 to n do
for j:=1 to 3 do
begin
if j=1 then RP[i]:=A[i,j];
if J=2 then c[i]:=A[i,j];
if J=3 then s[i]:=A[i,j];
end;
For i:=1 to n do
begin
RF[i]:=(c[i]-s[i])/s[i];
if RF[i]>RP[i] then writeln(NAZ[i],', ') ;
end;
readln;
end.
Исправил, но программа все равно ругается видимо главные ошибки гдето в этом куске
Код:
assign(ft,'E:\sistem\BE.pas');
reset(ft);n:=0;

repeat N:=n+1; k:=0 ;
read(ft,Naz[n]); N:=n+1;
repeat K:=k+1; read(ft,A[n,k])
until eoln(ft);
readln(ft)
until eof(ft);
close(ft);
Файл обычный текстовый документ (блокнот) в котом следующее:
stol 1 2 3 4
tort 1 3 2 5
stul 3 6 8 3
lamp 1 4 7 9

Последний раз редактировалось Absent; 31.05.2009 в 13:52.
Absent вне форума Ответить с цитированием
Старый 31.05.2009, 11:34   #4
Absent
Пользователь
 
Регистрация: 18.11.2007
Сообщений: 67
По умолчанию

Помогите пожалуйста!
немного разобрался переделал пишет ошибку invalid floating point operation
Код:
pROGRAM GF  ;
USES crt;
var
Naz:array[1..20] of string[4];
A:array[1..20,1..20] of REAL;
RP,c,s:array[1..20] of integer;
Rf:array[1..20] of real;
ft:text;
i,j,k,n:integer;

begin
assign(ft,'E:\sistem\BE.pas');
reset(ft);n:=0;

repeat N:=n+1;
read(ft,Naz[n]);
read(ft,RP[n]);
read(ft,c[i]);
read(ft,s[i]);
readln(ft)
until eof(ft);
close(ft);
For i:=1 to n do
begin
RF[i]:=(c[i]-s[i])/s[i];
if RF[i]>RP[i] then writeln(NAZ[i],', ') ;
end;
readln;
end.

Последний раз редактировалось Absent; 31.05.2009 в 13:52.
Absent вне форума Ответить с цитированием
Старый 31.05.2009, 16:00   #5
Absent
Пользователь
 
Регистрация: 18.11.2007
Сообщений: 67
По умолчанию

Все прогу сделал Если кому интрестно вот:

Код:
pROGRAM GF  ;
USES crt;
var
Naz:array[1..20] of string[4];
RP,c,s:array[1..20] of integer;
Rf:array[1..20] of real;
ft:text;
i,n:integer;

begin
clrscr;
assign(ft,'E:\sistem\BE.pas');
reset(ft);n:=0;

repeat N:=n+1;
read(ft,Naz[n]);
read(ft,RP[n]);
read(ft,c[n]);
read(ft,s[n]);
readln(ft)
until eof(ft);
close(ft);
For i:=1 to n do
begin
RF[i]:=(c[i]+s[i])/s[i] ;
if RF[i]>RP[i] then write(NAZ[i],' ') ;
end;
readln;
end.
Absent вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c++ считывание с файла. tsergey Помощь студентам 20 24.04.2010 23:30
считывание с текстового файла ciaonataha Помощь студентам 0 20.04.2009 12:09
Мониторинг текстового файла zander Microsoft Office Excel 20 14.02.2009 01:34
Открытие текстового файла Victor Microsoft Office Excel 2 16.01.2008 03:42
Считывание из файла DimkinStd Общие вопросы Delphi 7 24.01.2007 19:18