Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Паскаль - Форма вывода вещественных переменных

Ответить
Настройки темы
Разное - [решено] Паскаль - Форма вывода вещественных переменных

Аватара для vlad309523

Старожил


Автор проектов


Сообщения: 206
Благодарности: 7


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: vlad309523
Дата: 31-05-2011
Здравствуйте!
Надо:
Делаю программу для расчета корней квадратного уравнения и нужна помощь:
Данные выводятся так:
Код: Выделить весь код
Корни уравнения: 1.0000 и -2.5000
А надо так:
Код: Выделить весь код
Корни уравнения: 1 и -2.5
Переменные real.
читать дальше »
Код: Выделить весь код
type
 xm=array[1..2] of real;
var
 x: xm
begin
 x[1]:=1;
 x[2]:=2;
 writeln('Корни уравнения: ',x[1]:0:4,' и ',x[2]:0:4)
end.

Надеюсь на Вашу помощь. Заранее спасибо.

Решение:
читать дальше »
Код: Выделить весь код
type
 xm=array[1..2] of real;
 txm=array[1..2] of string;
 sm=array[1..2] of integer;
var
 x: xm; tx: txm; s: sm;
 n: integer;
procedure xn;
 begin
  str(x[n]:0:4,tx[n]);
  s[n]:=3-length(tx[n])+pos('0',tx[n])
 end;
procedure xn;
 begin
  str(x[n]:0:4,tx[n]);
  tx[n]:=copy(tx[n],pos('.',tx[n])+1,4);
  s[n]:=3-length(tx[n])+pos('0',tx[n]);
  if s[n]<0 then s[n]:=4
 end;
procedure xn;
 begin
  str(x[n]:0:4,tx[n]);
  tx[n]:=copy(tx[n],pos('.',tx[n])+1,4);
  s[n]:=3-length(tx[n])+pos('0000',tx[n]);
  if s[n]<0 then
   begin
    s[n]:=3-length(tx[n])+pos('000',tx[n]);
    if (s[n]<0) or (s[n]<>1) then
     begin
      s[n]:=3-length(tx[n])+pos('00',tx[n]);
      if (s[n]<0) or (s[n]<>2) then
       begin
        s[n]:=3-length(tx[n])+pos('0',tx[n]);
        if (s[n]<0) or (s[n]<>3) then s[n]:=4
       end
     end
   end
 end;
procedure xn;
 begin
  str(x[n]:0:4,tx[n]);
  tx[n]:=copy(tx[n],pos('.',tx[n])+1,4);
  if tx[n]='0000' then
   s[n]:=0 else
   begin
    tx[n]:=copy(tx[n],2,3);
    if tx[n]='000' then
     s[n]:=1 else
     begin
      tx[n]:=copy(tx[n],2,2);
      if tx[n]='00' then
       s[n]:=2 else
       begin
        tx[n]:=copy(tx[n],2,1);
        if tx[n]='0' then
         s[n]:=3 else
         s[n]:=4
       end
     end
   end
 end
begin
 x[1]:=1;
 x[2]:=2;
 n:=1; xn;
 n:=2; xn;
 writeln('Корни уравнения: ',x[1]:0:s[1],' и ',x[2]:0:s[2])
end.


Всем спасибо за помощь.

-------


Отправлено: 11:38, 29-05-2011

 

Аватара для opel431

Ветеран


Contributor


Сообщения: 1803
Благодарности: 714

Профиль | Отправить PM | Цитировать


Цитата vlad309523:
А надо так: »
Можно перевести число в строку с форматированием (округление до десятых)

var a:real;
s:string;
..........
str(a:0:1,s);
outtextXY(20,20,s);

-------
Хвала тому, кто встав среди камней, уча другого, сам будет умней.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:13, 29-05-2011 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для vlad309523

Старожил


Автор проектов


Сообщения: 206
Благодарности: 7

Профиль | Отправить PM | Цитировать


opel431, Error: Identifier not found OUTTEXTXY

-------


Отправлено: 12:24, 29-05-2011 | #3


Аватара для opel431

Ветеран


Contributor


Сообщения: 1803
Благодарности: 714

Профиль | Отправить PM | Цитировать


Цитата vlad309523:
Error: Identifier not found OUTTEXTXY »
Да ведь я, вам дал просто пример вывода результата в графическом режиме, а у вас вывод через writeln

-------
Хвала тому, кто встав среди камней, уча другого, сам будет умней.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:34, 29-05-2011 | #4


Аватара для vlad309523

Старожил


Автор проектов


Сообщения: 206
Благодарности: 7

Профиль | Отправить PM | Цитировать


opel431, вывел в текстовом - те же 1.0000

-------


Отправлено: 12:43, 29-05-2011 | #5


Аватара для opel431

Ветеран


Contributor


Сообщения: 1803
Благодарности: 714

Профиль | Отправить PM | Цитировать


Цитата vlad309523:
вывел в текстовом - те же 1.0000 »
В целом:
если нужно просто вывести число, то
WriteLn(r:n:m)
где r (real), n - общее количество знаков в строке, включая десятичную точку, m - количество знаков после запятой (дробная часть),
а если нужна именно строка, то через STR.
var
R:real;
S:string;
...
Str(R:n:m,S);

-------
Хвала тому, кто встав среди камней, уча другого, сам будет умней.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:02, 29-05-2011 | #6


Аватара для vlad309523

Старожил


Автор проектов


Сообщения: 206
Благодарности: 7

Профиль | Отправить PM | Цитировать


Все! Проблему решил при помощи процедуры
Код: Выделить весь код
procedure xn;
 begin
  str(x[n]:0:4,tx[n]);
  tx[n]:=copy(tx[n],pos('.',tx[n])+1,4);
  if tx[n]='0000' then
   s[n]:=0 else
   begin
    tx[n]:=copy(tx[n],2,3);
    if tx[n]='000' then
     s[n]:=1 else
     begin
      tx[n]:=copy(tx[n],2,2);
      if tx[n]='00' then
       s[n]:=2 else
       begin
        tx[n]:=copy(tx[n],2,1);
        if tx[n]='0' then
         s[n]:=3 else
         s[n]:=4
       end
     end
   end
 end
Код залил в шапку.

-------


Последний раз редактировалось vlad309523, 31-05-2011 в 06:49.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:45, 29-05-2011 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Паскаль - Форма вывода вещественных переменных

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Паскаль kakmandu Программирование в *nix 2 28-08-2011 22:01
C/C++ - Паскаль-си Drago56 Программирование и базы данных 3 24-12-2010 19:09
настройка системных переменных dromaxim Microsoft Windows NT/2000/2003 9 28-12-2005 17:51
JavaScript: Передача переменных Crowner Вебмастеру 10 03-08-2005 09:52
С++ и Паскаль Casper Программирование и базы данных 5 18-04-2003 19:35




 
Переход