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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 10.01.2014, 14:28   #1
Маразматик
Новичок
Джуниор
 
Регистрация: 10.01.2014
Сообщений: 5
Восклицание [Pascal] Объясните мне, в чем ошибка.

Код:
// (c) Kondraev Dmitry, 2014
// задача 10-11.1.1
// task 10-11.1.1
type
    number=1..1000;// ограничение на количество элементов
    arr=array[1..1000] of integer;
function maxim(a:arr;n:number):integer;
    var i:number;
    begin
        result:=0;
        for i:=1 to n do
            if a[i]>result 
                then result:=a[i]
    end;
function minim(a:arr;n:number):integer;
    var i:number;
    begin
        result:=2147483647;
        for i:=1 to n do
            if a[i]<result then result:=a[i]
    end;
function sumel(a:arr;n:number):integer;
    var i:number;
    begin
        result:=0;
        for i:=1 to n do
            result:=result+a[i]
    end;
function multpl(a:arr;n:number):integer;
    var i:number;
    begin
        result:=1;
        for i:=1 to n do
            if a[i]>0 then result:=result*a[i]
    end;
function summax(a:arr;n:number):integer;
    var i,j:number;
        max:integer;
    begin
        max:=0;
        result:=0;
        for i:=1 to n do
            begin
                if a[i]>result 
                    then begin
                        result:=a[i];
                        j:=i
                    end;
            end;
        for i:=1 to n do
            if i<>j
                then if a[i]>max then max:=a[i];
        result:=result+max
    end;
function nuplus(a:arr;n:number):integer;
    var i:number;
    begin
        result:=0;
        for i:=1 to n do
            if a[i]>0 then result:=result+1
    end;
function sredplus(a:arr;n:number):real;
    var i:number;
    begin   
        for i:=1 to n do
            if a[i]>0 then result:=result+a[i];
        result:=result/n
    end;
var
    a:array[1..1000] of integer;
    f,fo:text;
    n,i:number;
begin
    // input
    assign(f,'task1011.in');
    reset(f);
    readln(f,n);
    for i:=1 to n do
        read(f,a[i]);
    close(f);
    // analis
    // output
    assign(fo,'task1011.out');
    rewrite(fo);
    writeln(fo,'Maximum    : ',maxim(a,n):10);// Теперь ошибка здесь. Нельзя преобразовать тип array [1..1000] of integer к array [1..1000] of integer
    writeln(fo,'Minimum    : ',minim(a,n):10);
    writeln(fo,'Sum        : ',sumel(a,n):10);
    writeln(fo,'Multiple   : ',multpl(a,n):10);
    writeln(fo,'Sum of max : ',summax(a,n):10);
    writeln(fo,'Number of +: ',nuplus(a,n):10);
    writeln(fo,'Mid + el   : ',sredplus(a,n):10:5);
    close(fo);
    exec('task1011.out')
end.
___________________________________ ____
Мы не вечны(

Последний раз редактировалось Маразматик; 10.01.2014 в 14:47. Причина: Я нашел решение. Просто нужно было вместо названия функции писать result. Появилась новая ошибка)
Маразматик вне форума
Старый 10.01.2014, 14:39   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,341
По умолчанию

Не тип integer к integer, а тип "function(a: arr;n: number): integer" к integer.
Нужно писать так:
Код:
function maxim(a: arr; n: number): integer;
var
    i, res: number;
begin
    res := 0;
    for i := 1 to n do
        if a[i] > res then res := a[i];
    maxim := res;
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума
Старый 10.01.2014, 14:42   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
a[i]>maxim
Это рекурсивный вызов функции. В делфи на подобное даст что-то типа не достаточно фактических параметров
Код:
function maxim(a:arr;n:number):integer;
    var i,k:number;
    begin
        k:=0;
        for i:=1 to n do
            if a[i]>k then k:=a[i];
        maxim:=k;
    end;
ADD

BDA, хоть переменные по разному обозвали
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 10.01.2014 в 14:44.
Аватар вне форума
Старый 10.01.2014, 14:49   #4
Маразматик
Новичок
Джуниор
 
Регистрация: 10.01.2014
Сообщений: 5
По умолчанию

Новая ошибка. Смотри в коде)
___________________________________ ____
Мы не вечны(
Маразматик вне форума
Старый 10.01.2014, 14:53   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от Маразматик Посмотреть сообщение
Новая ошибка. Смотри в коде)
Фу ты, хоть бы за первое спаcибо сказал. Или считаешь, что тебе все обязаны?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 10.01.2014, 14:54   #6
Маразматик
Новичок
Джуниор
 
Регистрация: 10.01.2014
Сообщений: 5
По умолчанию

Прости. Я тебе благодарен. Не хочу тебя ни коим образом обидеть.
___________________________________ ____
Мы не вечны(
Маразматик вне форума
Старый 10.01.2014, 15:04   #7
Маразматик
Новичок
Джуниор
 
Регистрация: 10.01.2014
Сообщений: 5
По умолчанию

Спасибо, а как исправить следующую ошибку?
___________________________________ ____
Мы не вечны(
Маразматик вне форума
Старый 10.01.2014, 15:23   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,341
По умолчанию

Объявить массив "a" типа arr, а не array[1..1000] of integer.
Аватар, непорядок, требуется продолжение синхронизации (чтобы совпадение было с точностью до пробела)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума
Старый 10.01.2014, 15:27   #9
Маразматик
Новичок
Джуниор
 
Регистрация: 10.01.2014
Сообщений: 5
По умолчанию

Спасибо )
___________________________________ ____
Мы не вечны(
Маразматик вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
объясните в чем ошибка proef Помощь студентам 2 08.08.2013 23:08
Ошибка синтаксиса в чем причина? pascal Adenko Помощь студентам 1 07.06.2012 13:52
Объясните в чем ошибка моя! Npwas Помощь студентам 2 13.12.2011 22:32
Объясните в чем заключается ошибка? код на си Fleiks Общие вопросы C/C++ 5 13.10.2011 18:53
объясните в чем ошибка transformice Microsoft Office Excel 6 01.11.2010 18:34