Ir ao conteúdo

Código não compila no pascalzim nem em dev-pascal


Visitante: winchester.

Posts recomendados

Visitante: winchester.
 
Postado

{faça um programa que:]

1--use uma function para ler uma matriz do tupo 3x3.

2-- fazer uma procedure para imprimir na tela uma matriz do tipo 3x3.

3--fazer uma terceira matriz que é a soma da matriz1 com a matriz 2 .}


program multipMatriz;
type
matriz3x3=array[1..3,1..3] of integer;
function leMatriz( matriz:matriz3x3;)matriz3x3;
var

i,j:integer;
begin
for i:=1 to 3 do
begin
for j:= 1 to 3 do
begin
write('digite os elementos da matriz, na posicao',i,j,':');
readln(matriz[i,j]);
end;
end;
end;
{procedure imprimematria}

procedure imprimirMatriz (matriz:matriz3x3);
var
i,j:integer;
begin
write('o resultado é:');
for i:=i to 3 do
begin
for j:= 1 to 3 do
begin
write(matriz[i,j]);
end;
end;
end;
{multiplicar as matrizes}
function multiplicarmatriz(a,b:matriz3x3);

var
matrizC:matriz3x3;
i,j,k:integer;
begin
{ Zerar matriz C }
for i:=1 to 3 do
Begin
for j:=1 to 3 do
Begin
matrizC[i,j] := 0;
End;
End;
for i:=1 to 3 do
begin
for j:=1 to 3 do {Coluna da Matriz B Coluna da Matriz C }
Begin
for k:=1 to 3 do {Coluna da Matriz A e Linha da Matriz B}
Begin
matrizC[i,j] := (a[i,k] * b[k,j]) + matrizC[i,j];
End;
End;
End;
end;
var
matrizA,MatrizB,MatrizC:matriz3x3;
begin
{ler as matrizes}
write('digite a matriz A:');
matrizA:=lematriz;
writeln;

write('digitea a matriz B:');
matrizB:=lematriz;
writeln;
{imprimir as matrizes}
write('a matriz A é');
writeln;
write(matrizA);
writeln
writeln('a matriz B é:');
writeln;
write(matrizB);
writeln;
{multiplicar matrizes}
multiplicarmatriz:=matrizC(matrizA ,MatrizB);
{imprimir resultado}
writeln('matrizC');
imprimirmatriz(matrizC);
writeln;
end.

Galera, o exercício é este.

O que eu queria saber é:

Porque ele não compila... ele dá um erro, e eu não sei como corrigir.

Se alguém puder me explicar fico grato!

  • Membro VIP
Postado
Galera, o exercício é este.

O que eu queria saber é:

Porque ele não compila... ele dá um erro, e eu não sei como corrigir.

Se alguém puder me explicar fico grato!

O segredo é sempre ir compilando a medida que vai programando, e não deixando para compilar no final... ou seja, a cada novo procedimento ou funcionalidade, o programa deve está pelo menos compilável*.

* Compilando não quer dizer "tudo certo", mas pelo menos vai só se preocupar com a lógica, e não mais também com a sintaxe.

Vamos a alguns pontos de seu código:

1) Regras de assinatura de procedimentos (function e procedure)

Ao compilar, o erro acusa na function:

function leMatriz( matriz:matriz3x3;)matriz3x3;

No caso dois probleminhas:

1.1) não tem esse ";" dentro do parâmetro;

4 / 37 _fch.pas

Fatal: Syntax error, identifier expected but ) found

Ou seja, ao colocar o ";", o compilador passa a "exsperar esperar" mais um outro identificador... :D. Logo, não deve ter esse ";".

1.2) faltou os ":" para definir o retorno da function;

4 / 37 _fch.pas

Fatal: Syntax error, : expected but identifier MATRIZ3X3 found

Bem semelhante... fala que está esperando um ":", mas encontrou outra MATRIZ3X3...

2) Function x Procedure

As function e as procedure são "exatamente" a mesma coisa!!! O que muda somente é que as function tem a capacidade de retornar um valor nela mesma, ou seja, é um procedimento e ao mesmo tempo uma espécie de variável.

Neste caso, ao usar uma funtion, subtende-se que quer retornar algo, logo você precisa retornar esse algo. O compilador até dá um aviso:

Por ex.:

17 / 1 _fch.pas

Warning: Function result does not seem to be set

Logo, ou você muda ela para uma procedure ou retorna algum valor nessa function. Ex.:

[color=#0000ff]function[/color] [color=#ff0080]leMatriz[/color][color=#000000]([/color]matriz[color=#000000]:[/color]matriz3x3[color=#000000]):[/color]matriz3x3[color=#000000];[/color]
[color=#0000ff]var[/color]
i[color=#000000],[/color]j[color=#000000]:[/color][color=#0000ff]integer[/color][color=#000000];[/color]
[color=#0000ff]begin[/color]
[color=#0000ff]for[/color] i[color=#000000]:=[/color][color=#ff8000]1[/color] [color=#0000ff]to[/color] [color=#ff8000]3[/color] [color=#0000ff]do[/color]
[color=#0000ff]begin[/color]
[color=#0000ff]for[/color] j[color=#000000]:=[/color] [color=#ff8000]1[/color] [color=#0000ff]to[/color] [color=#ff8000]3[/color] [color=#0000ff]do[/color]
[color=#0000ff]begin[/color]
[color=#ff0080]write[/color][color=#000000]([/color][color=#a31515]'digite os elementos da matriz, na posicao'[/color][color=#000000],[/color]i[color=#000000],[/color]j[color=#000000],[/color][color=#a31515]':'[/color][color=#000000]);[/color]
[color=#ff0080]readln[/color][color=#000000]([/color]matriz[color=#000000][[/color]i[color=#000000],[/color]j[color=#000000]]);[/color]
[color=#0000ff]end[/color][color=#000000];[/color]
[color=#0000ff]end[/color][color=#000000];[/color]
[B]leMatriz[/B][color=#000000][B]:=[/B][/color][B]matriz[/B][color=#000000];[/color]
[color=#0000ff]end[/color][color=#000000];[/color]

***

Por ai vai

Então, vá compilando, interpretando o erro e corrigindo..

No aguardo.

  • 2 semanas depois...
Visitante: winchester.
 
Postado

olá! muito obrigado, consegui compilar o programa! e mais, agora estou conseguindo "me virar melhor" com a programação, realmente, quando você vai criando o programa e compilando ele a medida que vai programando, fica muito mais fácil! muito obrigado!

:)

  • Membro VIP
Postado
olá! muito obrigado, consegui compilar o programa! e mais, agora estou conseguindo "me virar melhor" com a programação, realmente, quando você vai criando o programa e compilando ele a medida que vai programando, fica muito mais fácil! muito obrigado!

:)

Que bom que conseguiu... qualquer coisa "tamo ai"...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!