IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Помогите вывести результаты программы в виде таблицы
Smartic
сообщение 18.05.2009 8:28
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Нужно было составить программу для расчета статического и динамического моментов электродвигателя. У меня вот что получилось:
Program ControlWork2;
Uses crt;
Const
R=2,9; {soprotivlenie}
I=4,3; {sila toka}
U=220; {napryazhenie}
w=157; {chastota}
J=0,04; {moment inercii}
name='C:\workdir\out.txt';
Var
t,K,Md,Mc:real;
fout:text;
Function Md:real; {moment dvizheniya}
Begin
K:=(U-I*R)/w;
Md:=K*U/R-K*w/R;
End;
Function Mc:real; {moment staticheskij}
Write('Vvedite vremya t:');
Readln(t);
Mc:=J-w/t+Md;
End;
End.

А мне еще надо вывести Md,Mc,w,t в виде таблицы, а также записать файл исходных данных. Как это сделать? Подскажите, пожалуйста. Заранее огромное спасибо!

М
Тегами для подсветки синтаксиса пользоваться не забывай...



Сообщение отредактировано: volvo - 18.05.2009 8:37
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 15)
volvo
сообщение 18.05.2009 8:40
Сообщение #2


Гость






Цитата
У меня вот что получилось:
А что, собственно, у тебя получилось? Ты что, где-то что-то считаешь? Ты пока описываешь только функции (причем, описываешь их неправильно), а вот когда ты будешь их вызывать, тогда и будем говорить о выводе...

Ты программу-то свою компилировать пробовал? Кто ж запятой пользуется в вещественных числах? Вообще-то для этого есть точка. Кто дает одинаковые имена функции и переменной? Паскаль такого не позволяет...
 К началу страницы 
+ Ответить 
Smartic
сообщение 18.05.2009 22:25
Сообщение #3





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Сори за ошибки, просто плохо разбираюсь в программировании. Немного исправил код:
Код

Program ControlWork2;
Uses crt;
Const
R=2.9; {soprotivlenie}
I=4.3; {sila toka}
U=220; {napryazhenie}
w=157; {chastota}
J=0.04; {moment inercii}
Var
t,K,Md,Mc,n:real;
Function D(K:real):real; {moment dvizheniya}
Begin
K:=(U-I*R)/w;
Md:=K*U/R-K*w/R;
End;
Function S(w:real):real; {moment staticheskij}
Begin
Mc:=w*J;
End;
begin
t:=J*W/(D(K)-S(w));
writeln (t:6:4, '|', W:8:1, '|', D(K):8:4, '|', S(w):8:4;);
End;
End.

Теперь при компиляции курсор останавливается на 3-й снизу строке и выходит следующее сообщение: error: 89 ")" expected. В чем ошибки?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 19.05.2009 9:15
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата
S(w):8:4;);

Тебе же прямо, честно и откровенно говорят: "Скобку хочу!" А ты ему (компилятору) ; подсовываешь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Smartic
сообщение 19.05.2009 9:53
Сообщение #5





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Я убрал ту точку с запятой, но компилятор все равно выдает эту же ошибку (error: 89 ")" expected) и подчеркивает вот это место:
writeln (t:6:4, '|', W:8:1, '|', D(K):8:4, '|', S(w):8:4);

Сообщение отредактировано: Smartic - 19.05.2009 9:56
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-Lapp-
сообщение 19.05.2009 10:24
Сообщение #6


Гость






Цитата(Smartic @ 19.05.2009 9:53) *

Я убрал ту точку с запятой, но компилятор все равно выдает эту же ошибку (error: 89 ")" expected) и подчеркивает вот это место:
writeln (t:6:4, '|', W:8:1, '|', D(K):8:4, '|', S(w):8:4);
У тебя переменная W - целая. У целой переменной только один формат. Убери ":1".
 К началу страницы 
+ Ответить 
Lapp
сообщение 19.05.2009 10:38
Сообщение #7


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


извиняюсь - не переменная, а константа W


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Smartic
сообщение 19.05.2009 10:49
Сообщение #8





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Действительно, вот в таком виде программа уже компилируется:
Код

Program ControlWork2;
Uses crt;
Const
R=2.9; {soprotivlenie}
I=4.3; {sila toka}
U=220; {napryazhenie}
w=157; {chastota}
J=0.04; {moment inercii}
Var
t,K,Md,Mc,n:real;
Function D(K:real):real; {moment dvizheniya}
Begin
K:=(U-I*R)/w;
Md:=K*U/R-K*w/R;
End;
Function S(w:real):real; {moment staticheskij}
Begin
Mc:=w*J;
End;
begin
t:=J*W/(D(K)-S(w));
writeln (t:6:4, '|', W:8, '|', D(K):8:4, '|', S(w):8:4);
End.

Что теперь еще нужно сделать, чтобы результаты величин t, w, Mc, Md выводились на экран в виде таблицы? Кроме того, необходимо записать файл исходных данных (в формате txt).

Сообщение отредактировано: Smartic - 19.05.2009 10:51
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Krjuger
сообщение 20.05.2009 12:37
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Ну чтобы записать исходные дадные для начала:
1) надо создать этот файл и исходными данными.
2)инициализировать его в программе.
Assign(имя фалла,'путь к файлу');
3)Открыть для чтрения
Reset(имя файла);
4) Считывать из файла твои данные и записывать в твои переменные.
5)и наконец закрыть файл.

А вообще я бы на твоем месте создал бы двухмерный массив и запихнул бы туда все и сразу,а потом просто распечатал бы массив.
P.s.Обычно имя файла берут fin,если входной и fout,если для вывода в файл.И fin и fout внутренние текстовые файлы,поэтому путь надо указывать с названием самого файла, где храняться данные.
Например;
asign(fin,'C:\Tpascal\test1.txt');
в само программе ты будеш работать с fin а исходный файл будет не тронут.
(грубо говоря ты все данные из теста переписываеш в фин и с ними работаеш,чтоб не испортить исходный файл)

Сообщение отредактировано: Krjuger - 20.05.2009 12:41
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Smartic
сообщение 21.05.2009 21:16
Сообщение #10





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Помогите, пожалуйста, с кодом программы, а то у меня ничего не получается. sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Krjuger
сообщение 22.05.2009 13:39
Сообщение #11


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Код

Program ControlWork2;
Uses crt;
var
T,K,Md,Mc,n:real;
R,I,U,W,J : real;

Procedure readfile(var R,I,U,W,J :real;var fin : text);
begin
   read(fin,R); {soprotivlenie}
   read(fin,I); {sila toka}
   read(fin,U); {napryazhenie}
   read(fin,w); {chastota}
   read(fin,J); {moment inercii}
   readln(fin);
end;

Function MomentDv(U,I,R:real):real; {moment dvizheniya}
Begin
K:=(U-I*R)/w;
MomentDv:=K*U/R-K*w/R;
End;

Function MomentStat(W,J:real):real; {moment staticheskij}
Begin
MomentStat:=W*J;
End;

Procedure Create(var fin,fout:text);
begin
  while not eof(fin) do begin
    readfile(R,I,U,W,J,fin);
    Md:=MomentDv(U,I,R);
    Mc:=MomentStat(W,J);
    T:=J*W/(Md-Mc);
    writeln (fout,T:6:4, '|', W:8, '|', Md:8:4, '|', Mc:8:4);
    writeln (T:6:4, '|', W:8, '|', Md:8:4, '|', Mc:8:4);
  end;
{Основная прога}
begin
assign(fin,'C:\Tpascal\test.txt');{входной файл}
assign(fout,'C:\Tpascal\test1.txt');{выходной файл}
reset(fin);
rewrite(fout);
Create(fin,fout);
close(fin);
close(fout);
end.

Если я все правильно понял,а вообще посмотри на свои функции и заново прочитай о них факи.потому что зачем тебе в функции Д входной параметр К если ты его внутри функции и считаеш,Вообще функции у тебя абсолютно неверные.Такое ощущение,что ты не понимаеш,что это такое,так про прочитай заново.То что я написал выводит и на экран и в файл.
R,I,U,W,J должны четко присутствовать в файле в заданном порядке.и каждые новые данные должны вводится с новой строки в том же порядке.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Smartic
сообщение 22.05.2009 19:37
Сообщение #12





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Большое спасибо! Действительно, пока плохо понимаю в программировании. Буду разбираться.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Smartic
сообщение 28.05.2009 20:28
Сообщение #13





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


А почему при компиляции этой программы
Код
Program ControlWork2;
Uses crt;
var
T,K,Md,Mc,n:real;
R,I,U,W,J : real;

Procedure readfile(var R,I,U,W,J :real;var fin : text);
begin
   read(fin,R); {soprotivlenie}
   read(fin,I); {sila toka}
   read(fin,U); {napryazhenie}
   read(fin,w); {chastota}
   read(fin,J); {moment inercii}
   readln(fin);
end;

Function MomentDv(U,I,R:real):real; {moment dvizheniya}
Begin
K:=(U-I*R)/w;
MomentDv:=K*U/R-K*w/R;
End;

Function MomentStat(W,J:real):real; {moment staticheskij}
Begin
MomentStat:=W*J;
End;

Procedure Create(var fin,fout:text);
begin
  while not eof(fin) do begin
    readfile(R,I,U,W,J,fin);
    Md:=MomentDv(U,I,R);
    Mc:=MomentStat(W,J);
    T:=J*W/(Md-Mc);
    writeln (fout,T:6:4, '|', W:8, '|', Md:8:4, '|', Mc:8:4);
    writeln (T:6:4, '|', W:8, '|', Md:8:4, '|', Mc:8:4);
  end;
{Основная прога}
begin
assign(fin,'C:\Tpascal\test.txt');{входной файл}
assign(fout,'C:\Tpascal\test1.txt');{выходной файл}
reset(fin);
rewrite(fout);
Create(fin,fout);
close(fin);
close(fout);
end.

курсор останавливается на последнем "end" и выходит ошибка 85 "Ожидается ;" ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 28.05.2009 21:26
Сообщение #14


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Procedure Create(var fin,fout:text);
begin
while not eof(fin) do begin
readfile(R,I,U,W,J,fin);
Md:=MomentDv(U,I,R);
Mc:=MomentStat(W,J);
T:=J*W/(Md-Mc);
writeln (fout,T:6:4, '|', W:8, '|', Md:8:4, '|', Mc:8:4);
writeln (T:6:4, '|', W:8, '|', Md:8:4, '|', Mc:8:4);
end;
end; //<-------не хватает
{Основная прога}
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Smartic
сообщение 28.05.2009 21:37
Сообщение #15





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Теперь пишет следующее, указывая на "fin":
Код
{Основная прога}
begin
assign(fin,'C:\Tpascal\test.txt');{входной файл}
assign(fout,'C:\Tpascal\test1.txt');{выходной файл}
reset(fin);
rewrite(fout);
Create(fin,fout);
close(fin);
close(fout);
end.

Ошибка 3 "Unknown edintifier".
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 28.05.2009 21:42
Сообщение #16


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Ты его не описал нигде, вот те и ошибка
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.06.2025 5:05
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"