Publicidade

Entre para seguir isso  
Seguidores 0
Jabba Hutt

Combinações de 5 em 5.Como fazer ?

Tenho o seguinte exercício que deve ser feito em PASCAL:

 

Dado um conjunto de N(N>5) números DISTINTOS a serem digitados aleatoriamente, elaborar um programa em Pascal que faça todas as combinações de 5 em 5 desses números.

O programa deve escrever somente as combinações de números cujas somas sejam 80 e 100. Finalmente, se as somas 80 ou 100 não puderem ser feitas com os números digitados o programa deve mostrar uma mensagem dizendo qual delas não pode ser feita.

 

O professor explicou que se trata de permutação de N elementos tomados de k em k.Então eu vou digitando quantos números eu quiser( mais de 5, claro), MAS ELES TEM QUE SER DIFERENTES ENTRE SI : 1 6 9 45 51 3 90 ... e o prog vai combinando de 5 em 5 e as somas iguais a 80 ou 100 o programa mostra na tela. Se a soma 80 ou a 100 não der pra fazer, o programa mostra mensagem.

Como faço isso em Pascal??? Esse problema já ta me deixando de cabelo branco! Rsrs Pelamordedeus!!!

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou você armazena os inteiros num array ou em variáveis separadas (dá mais trabalho).

 

 

i = 0

while i < 4 :
j = i + 1
while j < 5:
	if a[i]+a[j] == 80 or a[i]+a[j] == 100:
	print("({0},{1})".format(a[i],a[j]))
	j += 1
i += 1

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas _Isis_, esse código tá em Pascal?

 

Se é pascal na estrutura do while nao deveria ter o do ?

 

While <(condição)> do

 

O comando print nao seria o writeln ?

 

desculpe a ignorancia( sou novato em linguagens de comp.).E ainda nao entendi como declarar as variaveis.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz um código que funciona parcialmente:

 

 

PROGRAM SOMA;

VAR

N:ARRAY[1..80] OF INTEGER;

S:ARRAY[2..100] OF INTEGER;

K,Q,I,T,SOMA,A,B,X:INTEGER;

BEGIN

WRITELN('INFORME QUANTAS SOMAS SÃO:');

READLN(Q);

WRITELN('TOTAL DE NUMEROS:');

READLN(T);

FOR I:=1 TO T DO

BEGIN

WRITELN('INFORME O ', I, '°.NUMERO:');

READLN(N);

END;

FOR K:=1 TO Q DO

BEGIN

WRITELN('INFORME A ',K,'ª SOMA:');

READLN(S[K]);

END;

X:=T-2;

FOR I:=1 TO X DO

A:=N;

FOR I:=1 TO T DO

B:=N;

SOMA:=A+B;

IF (A<B) AND (SOMA=S[K]) THEN

WRITELN(A,' ',B,'SOMA:',SOMA);

WRITELN('NÃO É POSSIVEL FAZER TAL SOMA');

READLN;

END.

 

O programa só vai até

INFORME ' A SOMA:'

Aí digito uma soma e ele retorna o erro: RUNTIME ERROR 201

 

Como resolver???

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tirei a parte da quantidade de somas e o erro continua o mesmo.

O que o programa vai fazer é identificar nas milhares (ou milhões) de combinações possíveis, as combinações cujas somatórias sejam = 80 e 100.

Isso de digitar a quantidade de somas aparentemente é irrelevante e não está influindo no funcionamento(ou não funcionamento, no caso)do programa.

Estou trabalhando nesse código, vou descobrir o erro.Tem alguma coisa a ver com a faixa de variação de um dos arrays, ou dos dois.

 

Tá osso!!!! rsrsrs

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar Agora
Entre para seguir isso  
Seguidores 0

  • Próximos Eventos