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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2014, 22:25   #1
axpehuct123
Пользователь
 
Регистрация: 09.04.2014
Сообщений: 12
По умолчанию Проблема с перегруженной подпрограммой

Задача такова, дан массив нужно отсортировать(сортировка пока еще не сделана) и найти сумму элементов главной диагонали. Проблема в том что выскакивает ошибка "Нет перегруженной подпрограммы с такими типами параметров" В чем я ошибся? Работаю в abc pascal

p.s я так понял после создания темы менять ее название нельзя. Извиняюсь что не указал язык.


Код:
PROGRAM QQ;
USES CRT;
CONST 
  N=52;
  M=52;
TYPE 
  Ar = Array[1..N, 1..M] OF CHAR;
VAR 
  Sr, St, I, J, K, PR: INTEGER;   
  A : Ar;
  Z : CHAR;
  
  
{========ВВОД МАССИВА========} 
PROCEDURE VVOD(VAR X : Ar);
VAR I, J :INTEGER;
BEGIN
  WRITELN('ВВЕДИТЕ КОЛ-ВО СТРОК');
  READLN(St);
  WRITELN('ВВЕДИТЕ КОЛ-ВО СТОЛБЦОВ');
  READLN(Sr);
  WRITELN('ВВЕДИТЕ ЭЛЕМЕНТЫ МАССИВА');
  FOR I:=1 TO St DO
  FOR J:=1 TO Sr DO 
  READLN(X[I,J]);
END;

{========ВЫВОД МАССИВА========}
PROCEDURE VIVOD(Y : Ar );
VAR I, J : INTEGER;
BEGIN
  FOR I := 1 TO Sr DO                    
    BEGIN                                   
      FOR J := 1 TO St DO                 
        WRITE(Y[I,J],'  ');               
      WRITELN;                            
    END;
END;
  
{========СУММА========} 
FUNCTION SUMMA(H : Ar): REAL;
VAR I,J : INTEGER;
    SUM : STRING;
BEGIN
  FOR I:=1 TO Sr DO                      
    BEGIN
      FOR J:=1 TO St DO                    
        IF I=J
          THEN 
            SUM := SUM + H[I,J];   
    END;   
END;

{========ТЕЛО========}
BEGIN
  VVOD(A);
  VIVOD(A);
  WRITELN(SUMMA);
END.

Последний раз редактировалось Stilet; 11.05.2014 в 17:32.
axpehuct123 вне форума Ответить с цитированием
Старый 10.05.2014, 22:53   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

А в какой конкретно строке компилятор выдает ошибку?
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 10.05.2014, 23:14   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Дык в строке WRITELN(SUMMA); и выдает
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.05.2014, 23:26   #4
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Дык да.
Спасибо, дал в репу
Автору:
Исправьте на writeln(summa(a));

Последний раз редактировалось ZX Spectrum-128; 10.05.2014 в 23:29.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 11.05.2014, 12:46   #5
axpehuct123
Пользователь
 
Регистрация: 09.04.2014
Сообщений: 12
По умолчанию

Спасибо большое. Ошибка исправлена. Только теперь нужно разобраться, потому что сумму не считает.
axpehuct123 вне форума Ответить с цитированием
Старый 11.05.2014, 15:03   #6
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Код:
PROGRAM QQ;
USES CRT;
CONST 
  N=52;
  M=52;
TYPE 
  Ar = Array[1..N, 1..M] OF integer;
VAR
  Sr, St, I, J, K, PR: INTEGER;   
  A : Ar;
  Z : CHAR;


{========ВВОД МАССИВА========}
PROCEDURE VVOD(VAR X : Ar);
VAR I, J :INTEGER;
BEGIN
  WRITELN('ВВЕДИТЕ КОЛ-ВО СТРОК');
  READLN(St);
  WRITELN('ВВЕДИТЕ КОЛ-ВО СТОЛБЦОВ');
  READLN(Sr);
  WRITELN('ВВЕДИТЕ ЭЛЕМЕНТЫ МАССИВА');
  FOR I:=1 TO St DO
  FOR J:=1 TO Sr DO
  READLN(X[I,J]);
END;

{========ВЫВОД МАССИВА========}
PROCEDURE VIVOD(Y : Ar );
VAR I, J : INTEGER;
BEGIN
  FOR I := 1 TO St DO
    BEGIN
      FOR J := 1 TO Sr DO
        WRITE(Y[I,J],'  ');
      WRITELN;
    END;
END;

{========СУММА========}
FUNCTION SUMMA(H : Ar): REAL;
VAR I,J : INTEGER;
    SUM : real;
BEGIN
  sum:=0;
  FOR I:=1 TO St DO
    BEGIN
      FOR J:=1 TO Sr DO
        IF I=J
          THEN
            SUM := SUM + H[I,J];
    END;
  summa:=sum;  
END;

{========ТЕЛО========}
BEGIN
  VVOD(A);
  VIVOD(A);
  WRITELN(SUMMA(a));
END.
ZX Spectrum-128 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
error C2668: sqrt: неоднозначный вызов перегруженной функции Александр112 Visual C++ 7 25.04.2014 13:10
Проблема с подпрограммой Klod Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 11 24.02.2013 03:09
нет перегруженной функции, принимающей 2 аргументов Ghostik Visual C++ 2 10.04.2012 15:06
С++sqrt: неоднозначный вызов перегруженной функции Crazy_caramel Помощь студентам 10 13.11.2009 19:13