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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2021, 11:24   #1
LevMark
Пользователь
 
Регистрация: 28.03.2021
Сообщений: 24
По умолчанию При выводе числа всегда выводит 0. В чём ошибка?

При выводе числа всегда выводит 0. Значения функции от любого значения раны 0. Каким образом можно это исправить?

program project2;

{$mode objfpc}{$H+}

uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };

var
X: array[1..100] of integer;
Y: array[1..100] of integer;
n,d,i,j: integer;
z,a,b:real;
function minellemx1(x1:real):real;
Var i,k:integer;
begin
x1 := x[1];
for i := 2 to k do
if x[i] < x1 then x1 := x[i];
minellemx1:=x1;
end;
function minellemx2(x2:real):real;
Var j,d:integer;
begin
x2 := y[1];
for j := 2 to d do
if y[j] < x2 then x2 := y[j];
minellemx2:=x2;
end;
begin
writeln('Введите число эллементов массива* X:');
readln(n);
writeln('Введите эллементы массива* X:');
for i := 1 to n do
read(x[i]);
writeln('Введите число эллементов массива* Y:');
readln(d);
writeln('Введите эллементы массива Y:');
for j := 1 to d do
readln(y[j]);
a:= minellemx1(x[i]);
b:= minellemx2(y[j]);
z := (a - b) / 2;
writeln(z:6:1);
readln;
end.
LevMark вне форума Ответить с цитированием
Старый 26.04.2021, 11:32   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

уважаемый, а в функции у вас K чему равно в цикле? нулю? так он цикл поиска не будет выполнять. ноль выдаст и всё тут.
---------------
убери-ка всё лишнее, оставь это и разберись для начала с половинкой задачи
Код:
var
X: array[1..100] of integer;
n,d,i,j: integer;
z,a:real;
function minellemx1(x1:real):real;
Var i,k:integer;
begin
x1 := x[1];
for i := 2 to k do
if x[i] < x1 then x1 := x[i];
minellemx1:=x1;
end;

begin
writeln('Введите число эллементов массива* X:');
readln(n);
writeln('Введите эллементы массива* X:');
for i := 1 to n do
read(x[i]);

a:= minellemx1(x[i]);
writeln(a);
readln;
end.
после ввода массива X тоже значение А ноль выдаёт?
и по функции вопрос: массив чисел типа Integer, так зачем искать Real? может результатом функции тоже Integer сделать?
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 26.04.2021 в 11:38.
NetSpace вне форума Ответить с цитированием
Старый 26.04.2021, 11:40   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
function minellemx1(k: integer //СКОЛЬКО элементов мы реально хотим проверить 
                                            ):real;
Var 
  i, k:integer;
var
  x1: real; 
begin
  x1 := x[1];
  for i := 2 to k do
    if x[i] < x1 then x1 := x[i];
  minellemx1:=x1;
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 26.04.2021 в 13:15.
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
pascalABC.NET.При выводе массивов выдаёт нули, в чём ошибка? watovl Паскаль, Turbo Pascal, PascalABC.NET 2 20.03.2016 01:06
Ошибка:цифры числа всегда убывающая последовательность droopy Помощь студентам 3 12.01.2014 17:34
При выводe массива , выводит и грязь , в чём проблeма собcHо ?? zipo666 Общие вопросы C/C++ 11 14.02.2012 11:56
посмотрите пожалуйста в чем ошибка.Ответ всегда -14 выводит. JNN Общие вопросы C/C++ 5 04.06.2009 15:50