• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите, пожалуйста, с Паскалем. Процедуры-массивы

bastilio

Новые
Регистрация
30 Май 2011
Сообщения
17
Реакции
0
Баллы
0
Помогите, пожалуйста, с Паскалем. Процедуры-массивы

Илья Андреев
это ссылка на условие задачи.
А вот,что у меня получилось.
program lab_6;
const N=5;
M=4;
type mass a=array [1..N,1..M] of real=((3.3,2.8,2.91,8.03),(-5.6,1.01,2.25,5.48),
(-5.4,3.08,6.2,4.85),(3.01,21.8,9.4,-51.4),(6.1,8.2,11.4,13.8));
type mass b=array [1..M] of real =(54.1,25.4,-1.01,6.8);
var a,b:real;
Procedure ProcC(a:massA,b:massB,var c:massB);
i,j:integer;
begin
for i:=1 to N do begin
C:=0;
for j:=1 to M do C:=c+a[i,j]*b[j];
end;
begin
ProcC(c);
writeln (c:8:4, ' c ');
end.
 
Получилось, прямо скажем, не очень вразумительно. Сейчас покажу, как надо.
 
А надо вот так.
Только просьба: поскольку у Вас по куче ошибок буквально в каждой строке, то внимательно сверьте два кода. Особое внимание - на то, что относится к типам, а что - к константам (у Вас какая-то жуткая мешанина!), на разделители в параметрах процедуры - точка с запятой, а не запятая, на вызов процедуры ну и, пожалуй, на всё прочее :D.
Код:
program lab_6;
const
 N=5;
 M=4;
type
 mass_a=array [1..N,1..M] of real;
 mass_b=array [1..M] of real;
 mass_c=array [1..N] of real;
const
 a:mass_a=((3.3,2.8,2.91,8.03),(-5.6,1.01,2.25,5.48),
(-5.4,3.08,6.2,4.85),(3.01,21.8,9.4,-51.4),(6.1,8.2,11.4,13.8));
 b:mass_b=(54.1,25.4,-1.01,6.8);

var
 c:mass_c;
 i:integer;

Procedure ProcC(ap:mass_a;bp:mass_b;var cp:mass_c);
var ip,jp:integer;
begin
 for ip:=1 to N do
  begin
   cp[ip]:=0;
   for jp:=1 to M do
    cp[ip]:=cp[ip]+ap[ip,jp]*bp[jp];
  end;
end;

begin
 ProcC(a,b,c);
 For i:=1 to N do
  writeln(c[i]:8:4);
 readln
end.
Если что не понятно - спрашивайте, не стесняйтесь.
 
Ну вы мастер.
Огромное спасибо,никогда не видел,что б так быстро проги писали)
а вот в конце он ответ в виде одномерного массива же дает да?)
 
Конечно. Так Вы запустите да посмотрите. При этом обратите внимание - размерность массива с равна количеству строк (N) в отличие от массива b (M). Поэтому для с пришлось ввести особый тип.
 
благодарю,все разобрался)
А вы курсовики не делаете?тоже по паскалю,только там посложнее)
если да,то сколько стоит?)
 
благодарю,все разобрался)
А вы курсовики не делаете?тоже по паскалю,только там посложнее)
если да,то сколько стоит?)
Извините - коммерцией не занимаюсь. Чем могу - помогаю, причем безвозмездно. Но за большие работы не берусь: своих дел по горло.
Есть тут... один шустрый... периодически вылезает с репликами "стучите в аську - договоримся", поищите - может быть, наткнетесь. Впрочем, не воспринимайте это как рекомендацию.
А вообще - мой Вам совет: беритесь-ка за ум, пока не поздно. Причем за собственный. Чужим - не проживете, особенно в наше время.
 
хорошо,спасибо,постараюсь)
 
Назад
Сверху