Logo Hardware.com.br
SONY1235
SONY1235 Novo Membro Registrado
13 Mensagens 0 Curtidas

programa em pascal.

#1 Por SONY1235 25/11/2006 - 14:25
gente to com um grande problema tipo:
tenhu q fazer um programa em pascal que leia uma matriz a(6,6). avise se a matriz possui entre os seus elementos algum numero primo. o programa deve escrever "possui elemento primo" ou "nao possui elemento primo" e por fim escrever a matriz novamente..
mas eu fim a parte de recebe os 36 numeros q seriam das 6 linhas e 6 colunas e mostro a matris na tela mas naum consigu fazer um colculo pra descobrir se dentro da matriz possui algum elemento primo.. e se tiver como tbm teria que disser quais sao..
sera que alguem pode me ajudar??
obrigado.
Felipe Fontes
Felipe Fonte... Veterano Registrado
1.4K Mensagens 15 Curtidas
#4 Por Felipe Fonte...
25/11/2006 - 22:21
FUNction primo(a:integer):boolean;
var
i:integer;
begin
PRIMO:=TRUE;
for i:=2 to (trunc(sqrt(a))+1) do begin
if (a mod i) = 0 then begin
PRIMO:=FALSE;
break;
end;
end;
end;


não sei se precisa somar 1 ao numero truncado, mas por via das duvidas eu somei 1 big_green.png
And the heavens shall tremble

"Life can only be understood backwards, but it must be lived forwards." Soren Kierkegaard
SONY1235
SONY1235 Novo Membro Registrado
13 Mensagens 0 Curtidas
#5 Por SONY1235
26/11/2006 - 00:21

program matriz;
uses crt;
var M: array [1..6,1..6] of integer;
var X, Y, N, I: integer;
begin
clrscr;
writeln ('Digite 36 valores inteiros para a matriz:');
for X:=1 to 6 do
begin
for Y:=1 to 6 do
begin
readln (M[X,Y]);
end;
end;
writeln ('Com estes numeros a matriz ‚:');
for Y:=1 to 6 do
begin
X:=1;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=2;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=3;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=4;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=5;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=6;
write (' ',M[X,Y],' ');
end;
writeln ('');
N:=0;
for X:= 1 to 6 do
begin
for Y:=1 to 6 do
begin
N:=N+M[X,Y];
end;
end;
writeln ('Digite qualquer tecla para sair:');
readln (I);
end.
SONY1235
SONY1235 Novo Membro Registrado
13 Mensagens 0 Curtidas
#6 Por SONY1235
26/11/2006 - 00:26
esse corpo do programa q eu postei agora é u seguinte:
eli pede para a pessoa digitar 36 digitos q sera os numeros para formar uma matri de 6 linhas por 6 colunas.. certo?
logo apos issu o progrma deveria ter q ver se algun(s) do(s) numero(s) digitados sao primos, e é logo esta parte q naum consigu fazer.. entende...
se alguem consegui ae fiko grato.. presiso deste programa para dia 27 de novenbro, segunda feira ou seja amanha...
obrigado.
Felipe Fontes
Felipe Fonte... Veterano Registrado
1.4K Mensagens 15 Curtidas
#7 Por Felipe Fonte...
26/11/2006 - 09:04
é só chamar a função q eu te passei... assim ó

program matriz;
uses crt;
FUNction primo(a:integer):boolean;
var
i:integer;
begin
PRIMO:=TRUE;
for i:=2 to (trunc(sqrt(a))+1) do begin
if (a mod i) = 0 then begin
PRIMO:=FALSE;
break;
end;
end;
end;
var
M: array [1..6,1..6] of integer;
X, Y, N, I: integer;
begin
clrscr;
writeln ('Digite 36 valores inteiros para a matriz:');
for X:=1 to 6 do
begin
for Y:=1 to 6 do
begin
readln (M[X,Y]);
end;
end;

{eu só adicionei a função e chamei ela aqui ó}

for X:=1 to 6 do
begin
for Y:=1 to 6 do
begin
if primo(M[X,Y]) then writeln ('O numero ',M[X,Y],' na posição (',X,',',Y,') é primo!!');
end;
end;
writeln ('Com estes numeros a matriz ‚:');
for Y:=1 to 6 do
begin
X:=1;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=2;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=3;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=4;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=5;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=6;
write (' ',M[X,Y],' ');
end;
writeln ('');
N:=0;
for X:= 1 to 6 do
begin
for Y:=1 to 6 do
begin
N:=N+M[X,Y];
end;
end;
writeln ('Digite qualquer tecla para sair:');
readln (I);
end.
And the heavens shall tremble

"Life can only be understood backwards, but it must be lived forwards." Soren Kierkegaard
Atento
Atento Tô em todas Registrado
2.5K Mensagens 9 Curtidas
#8 Por Atento
26/11/2006 - 10:45
Usa a função que te passaram, se não funcionar eu tenho outra aqui... não tão aficiente quanto, mas funciona...

Ah! Porque você não organiza seu código em procedimentos e funções? Fica mais limpo o código. Bom, eu acho melhor...smile.png


for i:=1 to 6 do
begin
for j:=1 to 6 do
write(m[i,j],' ');
writeln();
end;


Esse código vai imprimir sua matriz do mesmo jeito que você fez, mas com BEM menos linhas... testa aí...
Felipe Fontes
Felipe Fonte... Veterano Registrado
1.4K Mensagens 15 Curtidas
#9 Por Felipe Fonte...
26/11/2006 - 13:12
Atento disse:
Usa a função que te passaram, se não funcionar eu tenho outra aqui... não tão aficiente quanto, mas funciona...

Ah! Porque você não organiza seu código em procedimentos e funções? Fica mais limpo o código. Bom, eu acho melhor...smile.png


for i:=1 to 6 do
begin
for j:=1 to 6 do
write(m[i,j],' ');
writeln();
end;


Esse código vai imprimir sua matriz do mesmo jeito que você fez, mas com BEM menos linhas... testa aí...


tá funcionando certinho a função q eu passei... eu testei com vários numeros...

eu tb axei estranho a quantidade de linha de codigo q ele presisou pra imprimir a matriz, mas eu nem olhei direito essa parte do codigo... big_green.png
And the heavens shall tremble

"Life can only be understood backwards, but it must be lived forwards." Soren Kierkegaard
SONY1235
SONY1235 Novo Membro Registrado
13 Mensagens 0 Curtidas
#10 Por SONY1235
26/11/2006 - 13:18

program matriz;
uses crt;
var M: array [1..6,1..6] of integer;
var X, Y, N, I:integer;
begin
clrscr;
writeln ('Digite 36 valores inteiros para a matriz:');
for X:=1 to 6 do
begin
for Y:=1 to 6 do
begin
readln (M[X,Y]);
end;
end;
writeln ('Com estes numeros a matriz ‚:');
for Y:=1 to 6 do
begin
X:=1;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=2;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=3;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=4;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=5;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=6;
write (' ',M[X,Y],' ');
end;
writeln ('');
N:=0;
for X:= 1 to 6 do
begin
for Y:=1 to 6 do
begin
N:=N+M[X,Y];
end;
end;

('NESTE ESPA€O VAZIO DEVE ESTAR O COMANDO PARA VER SE OS')
('NUMEROS DIGITADOS PELOS USUARIOS SAO PRIMOS OU NAO')
('E TAMBEM DISSER QUAIS SAO')




writeln ('Sua matriz:');
for Y:=1 to 6 do
begin
X:=1;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=2;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=3;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=4;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=5;
write (' ',M[X,Y],' ');
end;
writeln ('');
for Y:=1 to 6 do
begin
X:=6;
write (' ',M[X,Y],' ');
end;
writeln ('');
N:=0;
for X:= 1 to 6 do
begin
for Y:=1 to 6 do
begin
N:=N+M[X,Y];
end;
end;
writeln ('Digite qualquer tecla para sair:');
readln (I);
end.
SONY1235
SONY1235 Novo Membro Registrado
13 Mensagens 0 Curtidas
#11 Por SONY1235
26/11/2006 - 13:22
este seria mais ou menos o programa eu naum consegui faze o q o felipe falou, ele so recebe os numeros e nao mostra se o numero é primo ou nao...
esse q eu postei agora ali em cima eli recebe os 36 nuimeros depiis eli mostra na tela todos estes 36 nuimeros em forma de uma matriz 6x6 e apos issu deveria mostrar se dentro dos numeros da matriz ha algum numero primo ou nao e se tiver quais sao.. pois beim é esta parte q eu nao estou conseguindo..
e logo apos eu repeti todo o programa para mostrar a matris novamente..
se alguem tiver ideia.. estou desde quarta feira quebrando a cabeça nisto..
obrigado..
SONY1235
SONY1235 Novo Membro Registrado
13 Mensagens 0 Curtidas
#12 Por SONY1235
26/11/2006 - 13:44
consegui fazer u programa q tu me passo a funcionar..
vlw mesmu cara me quebro um galao meu...
mais tipo agora eu teria q ver tipo assim u 35 a função acusa q eli nao é um numero primo certto...
entao eu queria tenta faze a funçã q diga quais sao os numeros q nao sao primos.. dae o programa diria quais sao primos e quais nao sao soh q no seu programa eli tah dando erro quando eu coloca um else que seria o senao.. certo???
como eu teria q fazer??
obrigado
Felipe Fontes
Felipe Fonte... Veterano Registrado
1.4K Mensagens 15 Curtidas
#13 Por Felipe Fonte...
26/11/2006 - 18:27
SONY1235 disse:
consegui fazer u programa q tu me passo a funcionar..
vlw mesmu cara me quebro um galao meu...
mais tipo agora eu teria q ver tipo assim u 35 a função acusa q eli nao é um numero primo certto...
entao eu queria tenta faze a funçã q diga quais sao os numeros q nao sao primos.. dae o programa diria quais sao primos e quais nao sao soh q no seu programa eli tah dando erro quando eu coloca um else que seria o senao.. certo???
como eu teria q fazer??
obrigado


para usar o else tem q tirar o ponto-e-virgula....

ficaria assim:

if primo(M[X,Y]) then begin
writeln ('O numero ',M[X,Y],' na posição (',X,',',Y,') é primo!!');
end
else begin
writeln ('O numero ',M[X,Y],' na posição (',X,',',Y,') não é primo.');
end;
And the heavens shall tremble

"Life can only be understood backwards, but it must be lived forwards." Soren Kierkegaard
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal