Jabba Hutt 0 Denunciar post Postado Abril 22, 2010 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!!! Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Abril 22, 2010 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 Compartilhar este post Link para o post Compartilhar em outros sites
Jabba Hutt 0 Denunciar post Postado Abril 22, 2010 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. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Abril 22, 2010 Não. Está em Python. Eu agradeço todo dia por não lembrar nada de pascal. Compartilhar este post Link para o post Compartilhar em outros sites
Jabba Hutt 0 Denunciar post Postado Abril 22, 2010 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??? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Abril 22, 2010 http://community.freepascal.org:10000/docs-html/user/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. Compartilhar este post Link para o post Compartilhar em outros sites
Jabba Hutt 0 Denunciar post Postado Abril 22, 2010 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 Compartilhar este post Link para o post Compartilhar em outros sites