Ir para o conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

Cursos Online iMasters
Foto:

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

  • Por favor, faça o login para responder
6 respostas neste tópico

#1 Jabba Hutt

Jabba Hutt
  • Membros
  • 10 posts

Postado 22 abril 2010 - 00:29

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

#2 _Isis_

_Isis_

    Waiting for a mad man with a blue box.

  • Moderadores
  • 2.492 posts

Postado 22 abril 2010 - 00:59

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

#3 Jabba Hutt

Jabba Hutt
  • Membros
  • 10 posts

Postado 22 abril 2010 - 08:39

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

#4 _Isis_

_Isis_

    Waiting for a mad man with a blue box.

  • Moderadores
  • 2.492 posts

Postado 22 abril 2010 - 10:25

Não. Está em Python. Eu agradeço todo dia por não lembrar nada de pascal.
  • 0

#5 Jabba Hutt

Jabba Hutt
  • Membros
  • 10 posts

Postado 22 abril 2010 - 17:44

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[I]);
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[I];
FOR I:=1 TO T DO
B:=N[I];
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

#6 _Isis_

_Isis_

    Waiting for a mad man with a blue box.

  • Moderadores
  • 2.492 posts

Postado 22 abril 2010 - 19:02

http://community.fre...r/userch14.html

E por que tem que digitar a quantidade de somas? É o que o programa vai fazer. Não é o usuário que tem que digitar isso.
  • 0

#7 Jabba Hutt

Jabba Hutt
  • Membros
  • 10 posts

Postado 22 abril 2010 - 20:52

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




Publicidade

/ins>