Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [TP 7.1] Работа с Type + Function, Подсчитать сумму, мин, макс элементы и  
V
    Опции темы
MuForum
Дата 7.10.2007, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 427
Регистрация: 13.6.2007
Где: Молдова, Кишинев

Репутация: нет
Всего: 4



Добрый день!
Задали задачу в TP 7.1, сама задача очень простая по себе, и я вроде всё сделал, но ругается на "type mismatch".

P.S. -> Я перешел на C++/C#, и всё лето его изучал, так что он Pascal отвык да и позабылось многое.

Задача:
Цитата

Даны следующие описания:
Код

const nmax=100;
type Vector=array [1..nmax] of real;


Напишите функцию, которая возвращает:
а) Сумму элементов некоторого массива типа Vector;
б) Среднее арифметическое элементов данного массива;
в) Максимальный элемент;
г) Минимальный элемент.




Решение:
Код

Program s06;
  Uses Crt;
  Const nmax=100;
  type Vector=array [1..nmax] of real;
  
Var
  a: array[1..nmax] of Vector;
  k1,k2,k3,k4: real;
  i,n: word;
  
  function l1(lk1: word):real;
  Var S: real;
  Begin
    S:=0;
    for i:=1 to lk1 do S:=S+a[i];
    l1:=S;
  end;
  
  function l2(lk2: word):real;
  Var S: real;
  Begin
    S:=0;
    for i:=1 to lk2 do S:=S+a[i];
    S:=S/lk2;
    l2:=S;
  end;
  
  function l3(lk3: word):real;
  Var S: real;
  Begin
    S:=a[1];
    for i:=1 to lk3 do if(a[i] > S) then S:=a[i];
    l3:=S;
  end;

  function l4(lk4: word):real;
  Var S: real;
  Begin
    S:=a[1];
    for i:=1 to lk4 do if(a[i] < S) then S:=a[i];
    l4:=S;
  end;

Begin
  ClrScr;
  Write('n = '); ReadLn(n);
  k1:=0; k2:=0; k3:=0; k4:=0;
  for i:=1 to n do
  Begin
    Write('a['i'] = '); ReadLn(a[i]);
  end;
  k1:=l1(n);
  k2:=l2(n);
  k3:=l3(n);
  k4:=l4(n);
  WriteLn('k1 = ',k1:6:1);
  WriteLn('k2 = ',k2:6:1);
  WriteLn('k3 = ',k3:6:1):
  WriteLn('k4 = ',k4:6:1);
  ReadKey;
end.



P.S. -> Ругается на строчке "for i:=1 to lk1 do S:=S+a[i];", и что-то я не могу разобраться.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли)
PM MAIL WWW ICQ Skype MSN   Вверх
Alix
Дата 7.10.2007, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: нет
Всего: 23



При беглом взгляде, надо:
Код
var 
  a: Vector;



--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
MuForum
Дата 7.10.2007, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 427
Регистрация: 13.6.2007
Где: Молдова, Кишинев

Репутация: нет
Всего: 4



#2, Alix - Ваш беглый взгляд мне лично не помог...


P.S. -> И как я написал выше, то отвык уже от Pascal, и мне нужно объяснить что Pascal не нравится.
P.S. -> Эту задачу что на C++, что на C# я уже сделал за пару минут, а вот на Pascal не выходит, а мне нужно решить именно на Pascal =(


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли)
PM MAIL WWW ICQ Skype MSN   Вверх
volvo877
Дата 7.10.2007, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(MuForum @  7.10.2007,  12:50 Найти цитируемый пост)
мне нужно объяснить что Pascal не нравится.

А не нравится ему то, что ты описываешь переменную A как массив векторов (соответственно, a[ i ] является вектором) и пытаешься Vector сложить с вещественным числом... Замени описание:
Код

Var
  a: array[1..nmax] of Vector;
на
Код

Var a: Vector;
, ну и еще по мелочи (где запятые забыл, где - двоеточие вместо точки с запятой поставил) и программа будет компилироваться...


Цитата(MuForum @  7.10.2007,  12:50 Найти цитируемый пост)
Эту задачу что на C++, что на C# я уже сделал за пару минут
А вот это не надо... Этим ты в разделе "С/С++" будешь хвалиться... Ты сделал ошибку логическую, а не синтаксическую... Стало быть, в Сях ты мог допустить точно такую же ошибку, и точно так же получил бы "на орехи" от компилятора (ну не верю я чтобы С++ компилер спокойно пропустил сложение вектора с числом без дополнительных телодвижений, так с чего ты взял что Паскаль это тебе позволит?)...

Это сообщение отредактировал(а) volvo877 - 7.10.2007, 14:43
PM MAIL   Вверх
MuForum
Дата 7.10.2007, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 427
Регистрация: 13.6.2007
Где: Молдова, Кишинев

Репутация: нет
Всего: 4



#4, volvo877 - Спс, что разъяснил, а то я ступил не по-детски.

P.S. -> Как говорится: Век живи и век учись  smile 

Код

Program s06;
  Uses Crt;
  Const nmax=100;
  type Vector=array [1..nmax] of real;
  
Var
  a: Vector;
  k1,k2,k3,k4: real;
  i,n: word;
  
  function l1(lk1: word):real;
  Var S: real;
  Begin
    S:=0;
    for i:=1 to lk1 do S:=S+a[i];
    l1:=S;
  end;
  
  function l2(lk2: word):real;
  Var S: real;
  Begin
    S:=0;
    for i:=1 to lk2 do S:=S+a[i];
    S:=S/lk2;
    l2:=S;
  end;
  
  function l3(lk3: word):real;
  Var S: real;
  Begin
    S:=a[1];
    for i:=1 to lk3 do if(a[i] > S) then S:=a[i];
    l3:=S;
  end;

  function l4(lk4: word):real;
  Var S: real;
  Begin
    S:=a[1];
    for i:=1 to lk4 do if(a[i] < S) then S:=a[i];
    l4:=S;
  end;

Begin
  ClrScr;
  Write('n = '); ReadLn(n);
  k1:=0; k2:=0; k3:=0; k4:=0;
  for i:=1 to n do
  Begin
    Write('a[',i,'] = '); ReadLn(a[i]);
  end;
  k1:=l1(n);
  k2:=l2(n);
  k3:=l3(n);
  k4:=l4(n);
  WriteLn('k1 = ',k1:6:1);
  WriteLn('k2 = ',k2:6:1);
  WriteLn('k3 = ',k3:6:1);
  WriteLn('k4 = ',k4:6:1);
  ReadKey;
end.


Цитата(volvo877)

Цитата(S@nek)

Эту задачу что на C++, что на C# я уже сделал за пару минут

А вот это не надо... Этим ты в разделе "С/С++" будешь хвалиться...

- Вообще-то я это сказал не к тому, что я [censored 6] какой умный или лундеркинг, и то, что я ступил мне минус, а не показуха...

Это сообщение отредактировал(а) MuForum - 7.10.2007, 15:07


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли)
PM MAIL WWW ICQ Skype MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.