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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2013, 16:11   #1
parshuk
 
Регистрация: 14.03.2013
Сообщений: 6
По умолчанию обработка массива

Парни,составляю программу по преобразованию массива.Написал пока часть. Но вот кусок для вычисления суммы 3й строки матрицы B 3х6 вызывает сомнение.Вроде программа работает,но при проверке этой суммы на калькуляторе почему-то эта самая сумма не совпадает на 2-3 тысячных.
В чём может быть дело?

Вот сама программа:
Код:
Program Massiv(Input,Output);
Uses Crt;
Label 12;
Type Vector=array[1..6] of real;
Matrica=array[1..3,1..6] of real;
Var A,A1:Vector; B:Matrica;
Sum3B,R:real; i,j:byte; Flag:boolean;
Begin
{'enter the array data A'}
ClrScr;
writeln('calculation of the values of the array A');
for i:=1 to 6 do read(A[i]);
{'calculation of the values of the array B'};
for i:=1 to 3 do
for j:=1 to 6 do 
B[i,j]:=sin(i)+cos(A[j]);
{'The output of the elements of the arrays A and B'}
writeln;
writeln('array A:');
for i:=1 to 6 do write(A[i]:7:3,' ');
writeln;
writeln('array B:');
for i:=1 to 3 do
begin
for j:=1 to 6 do write(B[i,j]:7:3,' ');
writeln;
Sum3B:=0;
for j:=1 to 6 do 
Sum3B:=Sum3B+B[3,j];
end;
writeln('Summa 3 line Sum3B=',Sum3B:7:3);
End.
Подсчёт суммы 5-6я строка от конца программы Sum3B.

Последний раз редактировалось parshuk; 14.03.2013 в 16:14.
parshuk вне форума Ответить с цитированием
Старый 14.03.2013, 16:18   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

0) Программный код на форуме оформляется тегом CODE.

1) Вероятно, дело в превышении точности. Если я правильно помню синтаксис write, Вы выводите три знака после запятой. Попробуйте выводить, скажем, пять.
Abstraction вне форума Ответить с цитированием
Старый 14.03.2013, 18:05   #3
parshuk
 
Регистрация: 14.03.2013
Сообщений: 6
По умолчанию

Да,направление понято. Изменил на 5,теперь несовпадение на 0.00002-3.
Получается,если изменить вычисление члена B[i,j] с точностью до 5 знаков,а подсчёт суммы 3й строки оставить как есть(до 3х),то при округлении должно всё совпасть.
Ага,получилось.Спасиб.
Код:
for j:=1 to 6 do write(B[i,j]:7:5,' ');
writeln;
Sum3B:=0;
for j:=1 to 6 do 
Sum3B:=Sum3B+B[3,j];
end;
writeln('Summa 3 line Sum3B=',Sum3B:7:3);
parshuk вне форума Ответить с цитированием
Старый 14.03.2013, 20:14   #4
interacia
Пользователь
 
Аватар для interacia
 
Регистрация: 24.01.2013
Сообщений: 67
По умолчанию

Код:
for i:=1 to 3 do
begin
for j:=1 to 6 do write(B[i,j]:7:3,' ');
writeln;
end; // а здесь надо

Sum3B:=0;
for j:=1 to 6 do Sum3B:=Sum3B+B[3,j];
//end; ненадо.
writeln('Summa 3 line Sum3B=',Sum3B:7:3);
End.
end; нужно закрывать вовремя
interacia вне форума Ответить с цитированием
Старый 14.03.2013, 21:07   #5
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

И еще совет: никогда не используйте в Паскале тип real.
Он был изобретен в свое время для компьютеров на 88/86/286 процессорах без сопроцессоров (FPU).
Вместо него следует применять single, double либо extended, которые обрабатываются аппаратно. Заодно получаете более высокую (и контролируемую) точность вычислений.
s-andriano вне форума Ответить с цитированием
Старый 14.03.2013, 23:35   #6
parshuk
 
Регистрация: 14.03.2013
Сообщений: 6
По умолчанию

Спасиб за советы. "end" переставил,сразу получился правильный вывод.
Насчёт real ,буду пробовать.
parshuk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка массива cat_gav Общие вопросы C/C++ 0 17.11.2012 18:35
инициализация массива, вывод массива и обработка массива должны быть реализованы с помоshью функций airesjke Помощь студентам 0 02.03.2012 16:14
Обработка массива Элизабет Помощь студентам 3 24.12.2011 00:57
Обработка массива (си) Pascaler Помощь студентам 1 01.06.2011 11:28
Обработка Массива Марина01 Помощь студентам 6 26.04.2011 16:38