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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2010, 13:31   #1
Rainz
 
Регистрация: 31.05.2010
Сообщений: 9
По умолчанию полностью убрать дробную часть числа

С паскалем столкнулся недавно, попросили решить задачу по информатике.
качнул мануал, накидал, но вот вывод меня не устраивает..

Задача: Из заданной матрици А(5х7) элементы которой формируются по формуле ..... сформировать одномерный массив В состоящий из элементов матрицы, которые стоят на пересечении четных строк и четных столбцов матрицы А и т.д

Код:

Код:
program zadanie1;
var
i,j,k:integer;
sa:real;
matrixA:array[1..5,1..7] of real;
arrB:array[1..6] of real;
filename:string;
wfile:text;
begin

for i:=1 to 5 do
  for j:=1 to 7 do
    matrixA[i,j]:=2*sin(3*i)+3*(sin(3*j*i)/cos(3*j*i));

k:=1;

for i:=2 to 5 do begin
  if (i mod 2)=0 then begin
    for j:=2 to 7 do begin
      if (j mod 2)=0 then begin
        arrB[k]:=matrixA[i,j];
        inc(k);
      end;
    end;
  end;
end;

for i:=1 to 6 do
  writeln(arrB[i]);

for i:=1 to 6 do
  sa:=sa + arrB[i];
sa:=sa/6;

writeln('Srednee arifmiticheskoe:=', sa);

filename:='result.txt';
Assign(wfile,filename);
Rewrite(wfile);
Writeln(wfile, 'matrixA, ishodnaya matriza:');
for i:=1 to 5 do
  for j:=1 to 7 do
    Writeln(wfile,matrixA[i,j]);
Writeln(wfile, 'arrB, massiv B:');
for i:=1 to 6 do
  Writeln(wfile, arrB[i]);
Writeln('Information write to the file');
Close(wfile);
end.
Массив В:
-2.46641078238099E+0000
-6.96352108956489E+0000
2.26925817207084E+0001
-7.47783592916676E+0000
2.52723589334710E+0000
-1.86039796850673E+0000

мне нужно убрать все после и вместе с точкой, либо как то привести к типу integer. Нашел в мане функцию int() она возвращает тоже самое, только после точки везде нули..
Rainz вне форума Ответить с цитированием
Старый 31.05.2010, 13:35   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Writeln(wfile, arrB[i]:5);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.05.2010, 13:35   #3
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Чтобы привести к целочисленному типу применяй функции Round(X) или Trunc(X). Можно форматировать вывод Writeln(Y:xx:zz)... zz - количество цифр после запятой. Функция Int() возвращает вещественный тип данных...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 31.05.2010, 13:48   #4
Rainz
 
Регистрация: 31.05.2010
Сообщений: 9
По умолчанию

Фунцию Trunc() пробывал использовать, рукается что не хватает библиотеки WINCRT кажется, буквально вчера столкнулся с паскалем, скачал TurboPascal 7.0. Там просто среднеарифмитическое подсчитать нужно, а с этой дробной частью все в кривь и в кось, да и сама она не красиво выглядит..
Rainz вне форума Ответить с цитированием
Старый 31.05.2010, 13:53   #5
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

И причем тут WINCRT? Эти функции находятся в модуле SYSTEM...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 31.05.2010, 14:29   #6
Rainz
 
Регистрация: 31.05.2010
Сообщений: 9
По умолчанию

Виноват.. исправил. теперь другая тема:
arrB[k]:=Trunc(matrixA[i,j]); - добавил тут..
вывод раньше был таким:
-2.46641078238099E+0000
-6.96352108956489E+0000
2.26925817207084E+0001
-7.47783592916676E+0000
2.52723589334710E+0000
-1.86039796850673E+0000

теперь:
-2
-6
22
-7
2
-1
Мне интересно как получилось 22 из 2.26925817207084E+0001, когла все другие числа остались нормальными отбросив свою дробную часть..
Rainz вне форума Ответить с цитированием
Старый 31.05.2010, 14:58   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Мне интересно как получилось 22 из 2.26925817207084E+0001
Для кого тут единица стоит?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 31.05.2010, 15:07   #8
Rainz
 
Регистрация: 31.05.2010
Сообщений: 9
По умолчанию

Alex Cones мэн объясни, или хотяб скажи где про это почитать можно?
Rainz вне форума Ответить с цитированием
Старый 31.05.2010, 15:13   #9
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Похоже про экспотенциальную запись числа Вы ничего не знаете?

Ну ладно, объясню.

YYEXX означает YY * 10^XX.

Примеры:

1E00 = 1
1E01 = 1 * 10^1 = 1 * 10 = 10
1E02 = 1 * 10^2 = 1 * 100 = 100
1E-01 = 1 * 10^-1 = 1 / 10 = 0.1
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 31.05.2010, 15:40   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а ещё можно почитать на википедии - Экспоненциальная запись

Цитата:
2.26925817207084E+0001
это, если записать в обычной форме значит мантисса умноженная на 10 в первой степени...
получается: 22.6925817207084
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как отбросить целую часть оставив дробную Alex26RusLink Паскаль, Turbo Pascal, PascalABC.NET 1 24.10.2009 11:36
простой вопрос - как получить дробную часть Inta Microsoft Office Excel 2 19.11.2008 22:11
отделить дробную часть от числа |v||v|<<IpShot Общие вопросы C/C++ 19 24.09.2008 18:21
Отбражение чисел - точки, это точки, а не запятые, обозначающие дробную часть Дикий Помощь студентам 7 12.05.2008 17:57
подскажите какая процедура округляет дробные числа , а не откидывает дробную часть, к ***СкаЙ*** Помощь студентам 5 13.06.2007 16:03