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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2014, 23:00   #1
Алькер
Пользователь
 
Регистрация: 07.04.2014
Сообщений: 26
Восклицание abc паскаль - ошибка массив

Код:
uses crt;
type mas=array[1..98] of integer;
var A,F,Q,C:mas;
    i,s:integer;
begin
 clrscr;
  writeln('Массив первый:');
   for i:=1 to 98 do
    begin
     A[i]:=random(100)-2;
     write(A[i]:4);
    end;
  writeln;
   writeln('Массив второй :');
    for i:=1 to 98 do
     begin
      F[i]:=random(100)-2;
      write(F[i]:4);
     end;
  writeln;
   writeln('Массив третий :');
    for i:=1 to 8 do
     begin
      Q[i]:=random(60)-52;
      write(Q[i]:4);
     end;
  writeln;
  writeln('Массив четвертый:');
    for i:=1 to 8 do
     begin
      C[i]:=(sqrt(A[i])+sqrt(F[i]))/2+sin(A[i]*F[i])+(sqrt(Q[i])+sqrt(F[i]))/2+sin(Q[i]*F[i])+(sqrt(A[i])+sqrt(Q[i]))/2+sin(A[i]*Q[i]);
      write(C[i]:4);
     end;
     writeln;
end.
Даны массивы A98), F98),Q(8). Сформировать массивы С(8), каждый элемент которого вычисляется по формулеC[i]:=(sqrt(A[i])+sqrt(F[i]))/2+sin(A[i]*F[i])+(sqrt(Q[i])+sqrt(F[i]))/2+sin(Q[i]*F[i])+(sqrt(A[i])+sqrt(Q[i]))/2+sin(A[i]*Q[i]);

Вычисление по формуле (x^2+y^2)/2+sin(X*Y) оформить в виде подпрограммы.

Последний раз редактировалось Stilet; 26.04.2014 в 09:50.
Алькер вне форума Ответить с цитированием
Старый 25.04.2014, 23:22   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Скорее всего, корень из отрицательного числа вылетает. Генерируйте положительные числа.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 26.04.2014, 00:07   #3
Алькер
Пользователь
 
Регистрация: 07.04.2014
Сообщений: 26
По умолчанию

он ругается мол присваенивание типу реал тип integer, в этом месте C[i]:=(sqrt(A[i])+sqrt(F[i]))/2+sin(A[i]*F[i])+(sqrt(Q[i])+sqrt(F[i]))/2+sin(Q[i]*F[i])+(sqrt(A[i])+sqrt(Q[i]))/2+sin(A[i]*Q[i]).. хотя вроде правильно написано....
Алькер вне форума Ответить с цитированием
Старый 26.04.2014, 00:19   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от Алькер Посмотреть сообщение
... C[i]:=(sqrt(A[i])+sqrt(F[i]))/2+sin(A[i]*F[i])+(sqrt(Q[i])+sqrt(F[i]))/2+sin(Q[i]*F[i])+(sqrt(A[i])+sqrt(Q[i]))/2+sin(A[i]*Q[i]).. хотя вроде правильно написано....
Нет, неправильно.
C - массив элементов целого типа . А функции sqrt, sin всегда возвращают действительный тип. Даже например sqrt(4) - будет 2 в действительном виде.
И операция деления / тоже всегда возвращает действительное. Даже 1/1.

Поэтому C делайте array of Real.

PS Кстати, sqrt - это корень, а вам нужен квадрат. Проще сделать A[i]*A[i] и т.д. Но все равно Sin - возвращает действительное.

Последний раз редактировалось type_Oleg; 26.04.2014 в 00:22.
type_Oleg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль ABC. Программа на языке Паскаль. Helen1 Паскаль, Turbo Pascal, PascalABC.NET 6 13.01.2018 21:46
паскаль abc. Используя графические средства языка Паскаль на одной координатной сетке построить графики функций кириллюк Помощь студентам 5 15.09.2013 12:11
Написать алгоритм, который реализует jagged массив (рваный массив с различной длиной строк), используя список списков (Pascal ABC) бабуся Помощь студентам 0 29.04.2013 00:07
паскаль ABC phasha Помощь студентам 2 15.05.2012 17:24
Паскаль ABC( массив и всё) ayPinki Помощь студентам 4 31.12.2011 09:46