Publicidade

Arquivado

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

Jabba Hutt

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

Patrocínio:

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